A script used to configure bonding on Linux machines, and to determine which interface groups (peers) are available for bonding.
Python
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.gitignore
CONTRIBUTING.md
LICENSE
README.md
bonding.py

README.md

Linux Bonding Script

This script is used to configure bonding on Linux machines, and to determine which interface groups (peers) are available for bonding.

Features

  • Determination of interface groups (peers)
  • Configuration of interface bonding on Linux

Supported Operating Systems

  • Red Hat Enterprise Linux (Versions >= 5)
  • CentOS (Versions >= 5)
  • Fedora (Versions >= 10)
  • Debian (Versions >= 5)
  • Ubuntu (Versions >= 10.04)

Usage

$ python bonding.py --help
Usage:
  bonding.py [--nopeers]
  bonding.py --onlypeers
  bonding.py --automated
  bonding.py --unattend --bond=BOND --ip=ADDR --netmask=MASK --iface=IFACE1 
             --iface=IFACE2 [--iface=IFACE3 ...] [--gateway=GW] [--mode=MODE]

A script used to configure bonding on Linux machines, and to determine which
interface groups (peers) are available for bonding.
------------------------------------------------------------------------------
https://github.com/sivel/bonding

Options:
  -h, --help           show this help message and exit
  --version            Show the version number and exit

  Peers:
    --onlypeers        Only run the peers portion of this utility, to identify
                       bonded peer interfaces
    --nopeers          Do not run the peers portion of this utility
    --peerswait=SECS   The number of seconds to wait for switch port
                       negotiation. Default 5

  Unattended:
    --automated        Whether to run this command automated, this is
                       different from unattended which requires information
                       about how to configure the bond. This option requires
                       no additional options and will ignore them
    --unattend         Whether to run this command unattended
    --bond=BOND        The bonded master interface name. Required when using
                       --unattend
    --ip=IP            The IP address to use in the bond. Required when using
                       --unattend
    --netmask=NETMASK  The Netmask to use in the bond. Required when using
                       --unattend
    --iface=IFACE      The interfaces to be used in the bond, specify multiple
                       times for multiple interfaces. Required when using
                       --unattend
    --gateway=GATEWAY  The default gateway to use for the system, if this is
                       specified, the gateway and gateway dev will be updated.
                       default: none
    --mode=MODE        The bonding mode to be used. default: active-backup

Exit Codes

Generic

1: Generic Error
2: Not all options provided for an unattended configuration

Automated

100: There are no interfaces that contain the default route
101: The gateway device is already a master/bonded interface
102: There is no IP Address configured on the device containing the default route.
103: There is no Network Mask configured on the device containing the default route.
104: Automated bonding will only work when there are exactly 2 peer interfaces, more than 2 found.
105: Interface is already part of a bond

Operating System

200: OS Unsupported
201: Backup directory already exists
202: Red Hat Network Manager enabled
203: Debian ifenslave package is not installed or cannot be located
204: Interface(s) starting with __tmp exist, indicative of misconfigured network interfaces

Bugs

Submit bugs, feature requests, etc as Issues

Contributing

  1. Fork it
  2. Branch it
  3. Commit it
  4. Push it
  5. Pull request it