- ipLinePattern = re.compile('inet addr:' + ipRegexp)
- netmaskLinePattern = re.compile('Mask:' + ipRegexp)
- bcastLinePattern = re.compile('Bcast:' + ipRegexp)
- ipPattern = re.compile(ipRegexp)
- upPattern = re.compile('UP ')
- macPattern = re.compile('[0-9]{2}\:[0-9]{2}\:[0-9]{2}\:[0-9]{2}\:[0-9]{2}\:[0-9]{2}')
-
- fp = os.popen("ifconfig " + iface)
- result = fp.readlines()
- fp.close()
- data = { 'up': False, 'dhcp': False }
- for line in result:
- ip = self.regExpMatch(ipPattern, self.regExpMatch(ipLinePattern, line))
+ ipLinePattern = re_compile('inet ' + ipRegexp +'/')
+ ipPattern = re_compile(ipRegexp)
+
+ for line in result.splitlines():
+ split = line.strip().split(' ',2)
+ if (split[1] == iface):
+ if re_search(globalIPpattern, split[2]):
+ ip = self.regExpMatch(ipPattern, self.regExpMatch(ipLinePattern, split[2]))
+ if ip is not None:
+ data['ip'] = self.convertIP(ip)
+ if not data.has_key('ip'):
+ data['dhcp'] = True
+ data['ip'] = [0, 0, 0, 0]
+ data['netmask'] = [0, 0, 0, 0]
+ data['gateway'] = [0, 0, 0, 0]
+
+ cmd = "ifconfig " + iface
+ self.Console.ePopen(cmd, self.ifconfigFinished, [iface, data, callback])
+
+ def getDataForInterface(self, iface,callback):
+ #get ip out of ip addr, as avahi sometimes overrides it in ifconfig.
+ cmd = "ip -o addr"
+ self.Console.ePopen(cmd, self.IPaddrFinished, [iface,callback])
+
+ def ifconfigFinished(self, result, retval, extra_args ):
+ (iface, data, callback ) = extra_args
+ ipRegexp = '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'
+ ipLinePattern = re_compile('inet addr:' + ipRegexp)
+ netmaskLinePattern = re_compile('Mask:' + ipRegexp)
+ bcastLinePattern = re_compile('Bcast:' + ipRegexp)
+ ipPattern = re_compile(ipRegexp)
+ upPattern = re_compile('UP ')
+ macPattern = re_compile('[0-9]{2}\:[0-9]{2}\:[0-9]{2}\:[0-9]{2}\:[0-9]{2}\:[0-9]{2}')
+
+ for line in result.splitlines():
+ #ip = self.regExpMatch(ipPattern, self.regExpMatch(ipLinePattern, line))