我使用带有awk的ifconfig命令来捕获系统的ip地址
$ ifconfig | grep -E 'inet.[0-9]' | awk '{ print $2}'
127.0.0.1
192.168.8.2
如何使用python将o / p转换为列表?
答案 0 :(得分:6)
import sys
list_of_lines = [line.strip() for line in sys.stdin]
答案 1 :(得分:3)
您可能只是跳过shelling来调用命令管道。您可以在不离开Python的情况下获取IP地址。如果您只需要非环回IP:
>>> socket.gethostbyname_ex(socket.gethostname())
('furby.home', [], ['192.168.1.5'])
>>> socket.gethostbyname_ex(socket.gethostname())[2][0]
'192.168.1.5'
要获得环回,
>>> socket.gethostbyname_ex('localhost')
('localhost', [], ['127.0.0.1'])
还有一个名为netifaces的模块,它将在one fell swoop中执行此操作。
答案 2 :(得分:1)
import subprocess
lines = subprocess.check_output(["ifconfig | grep -E 'inet.[0-9]' | awk '{ print $2
}'"]).split('\n')
答案 3 :(得分:1)
谢谢大家。我可以这样做。
ipa=[]
f=os.popen("ifconfig | grep -E 'inet.[0-9]' | awk '{ print $2}'")
for i in f.readlines():
ipa.append(i.rstrip('\n'))
return ipa
答案 4 :(得分:1)
我刚刚修改了@Pujan发布的代码,使其适用于linux。 (在Ubuntu 12.04中测试):
import os
ipa=[]
f=os.popen("/sbin/ifconfig | grep -i \"inet\" | grep -iv \"inet6\" | " + "awk {'print $2'} | sed -ne 's/addr\:/ /p'")
for i in f.readlines():
ipa.append(i.rstrip('\n'))
print ipa
答案 5 :(得分:0)
使用sys.stdin
读取此输出。
然后按如下方式重定向输出:
$ ifconfig | grep -E 'inet.[0-9]' | awk '{ print $2}' | myProg.py