????
Current Path : /usr/local/ssl/sbin/ |
Current File : //usr/local/ssl/sbin/pifconfig |
#! /usr/bin/python # -*- python -*- # -*- coding: utf-8 -*- # Copyright (C) 2008 Red Hat Inc. # # Arnaldo Carvalho de Melo <acme@redhat.com> # # This application is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; version 2. # # This application is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. import getopt, ethtool, socket, struct, sys from optparse import OptionParser def flags2str(flags): string = "" if flags & ethtool.IFF_UP: string += "UP " if flags & ethtool.IFF_BROADCAST: string += "BROADCAST " if flags & ethtool.IFF_DEBUG: string += "DEBUG " if flags & ethtool.IFF_LOOPBACK: string += "LOOPBACK " if flags & ethtool.IFF_POINTOPOINT: string += "POINTOPOINT " if flags & ethtool.IFF_NOTRAILERS: string += "NOTRAILERS " if flags & ethtool.IFF_RUNNING: string += "RUNNING " if flags & ethtool.IFF_NOARP: string += "NOARP " if flags & ethtool.IFF_PROMISC: string += "PROMISC " if flags & ethtool.IFF_ALLMULTI: string += "ALLMULTI " if flags & ethtool.IFF_MASTER: string += "MASTER " if flags & ethtool.IFF_SLAVE: string += "SLAVE " if flags & ethtool.IFF_MULTICAST: string += "MULTICAST " if flags & ethtool.IFF_PORTSEL: string += "PORTSEL " if flags & ethtool.IFF_AUTOMEDIA: string += "AUTOMEDIA " if flags & ethtool.IFF_DYNAMIC: string += "DYNAMIC " return string.strip() def bits2netmask(bits): mask = (1<<32) - (1<<32>>bits) return socket.inet_ntoa(struct.pack(">L", mask)) def show_config(device): info = ethtool.get_interfaces_info(device)[0] flags = ethtool.get_flags(device) print '%-9.9s' % device, if not (flags & ethtool.IFF_LOOPBACK): print "HWaddr %s" % ethtool.get_hwaddr(device) else: print for addr in info.get_ipv4_addresses(): print ' inet addr:%s' % addr.address, if not (flags & (ethtool.IFF_LOOPBACK | ethtool.IFF_POINTOPOINT)): print "Bcast:%s" % ethtool.get_broadcast(device), print ' Mask:%s' % bits2netmask(addr.netmask) for info in ethtool.get_interfaces_info(device): for addr in info.get_ipv6_addresses(): print (" inet6 addr: %s/%s Scope: %s" % (addr.address, addr.netmask, addr.scope)) print ' %s' % flags2str(flags) print def main(): global all_devices usage="usage: %prog [interface [interface [interface] ...]]" parser = OptionParser(usage=usage) (opts, args) = parser.parse_args() if args is None or len(args) == 0: sel_devs = ethtool.get_active_devices() else: sel_devs = args for device in sel_devs: try: show_config(device) except Exception, ex: print "** ERROR ** [Device %s]: %s" % (device, str(ex)) sys.exit(2) if __name__ == '__main__': main()