標籤:pen linu tar ifconfig [1] 擷取 linux 實現 cat
我們可以使用 python 代碼通過調用 ifconfig 命令來擷取 Linux 主機的 IP 相關資訊,包括:網卡名稱、MAC地址、IP地址等。
第一種實現方式:
1 #!/usr/bin/python 2 #encoding: utf-8 3 4 from subprocess import Popen, PIPE 5 6 def getIfconfig(): 7 p = Popen([‘ifconfig‘], stdout = PIPE) 8 data = p.stdout.read().split(‘\n\n‘) 9 return [i for i in data if i and not i.startswith(‘lo‘)]10 11 def parseIfconfig(data):12 dic = {}13 for devs in data:14 lines = devs.split(‘\n‘)15 devname = lines[0].split()[0]16 macaddr = lines[0].split()[-1]17 ipaddr = lines[1].split()[1].split(‘:‘)[1]18 dic[devname] = [ipaddr, macaddr]19 return dic20 21 22 if __name__ == ‘__main__‘:23 data = getIfconfig()24 print parseIfconfig(data)
第二種實現方式:
1 #!/usr/bin/python 2 #encoding: utf-8 3 4 from subprocess import Popen, PIPE 5 6 def getIP(): 7 p = Popen([‘ifconfig‘], stdout = PIPE, stderr = PIPE) 8 stdout, stderr = p.communicate() 9 data = [i for i in stdout.split(‘\n‘) if i]10 return data11 12 def genIP(data):13 new_line = ‘‘14 lines = []15 for line in data:16 if line[0].strip():17 lines.append(new_line)18 new_line = line + ‘\n‘19 else:20 new_line += line + ‘\n‘21 lines.append(new_line)22 return [i for i in lines if i and not i.startswith(‘lo‘)]23 24 def parseIP(data):25 dic = {}26 for devs in data:27 lines = devs.split(‘\n‘)28 devname = lines[0].split()[0]29 macaddr = lines[0].split()[-1]30 ipaddr = lines[1].split()[1].split(‘:‘)[1]31 dic[devname] = [ipaddr, macaddr]32 return dic33 34 if __name__ == ‘__main__‘:35 data = getIP()36 nics = genIP(data)37 print parseIP(nics)
使用 python 擷取 Linux 的 IP 資訊(通過 ifconfig 命令)