1

其他问题不太一样。

我正在寻找的是一个 Python 函数,它返回系统上所有 IP 地址的列表,模拟以下行为:

ifconfig | grep 'inet addr:' | grep -v 127.0.0.1 | cut -d: -f2 | awk '{ print $1}'
4

1 回答 1

5

您可以使用subprocesspython 模块来实现这一点。

import subprocess
cmd = "ifconfig | grep 'inet addr:' | grep -v 127.0.0.1 | cut -d: -f2 | awk '{ print $1}'"
co = subprocess.Popen([cmd], shell = True, stdout = subprocess.PIPE)
ips = co.stdout.read().strip().split("\n")

那应该给你一个IP地址列表。

PS:最好改用以下命令

ifconfig | grep inet | grep -v inet6 | grep -v 127.0.0.1 | awk '{print $2}' | cut -d\: -f2 | cut -d\  -f1

这将排除 IPV6 地址(如果有)。

纯 Python 方式

如果您希望完全在 Python 中执行此操作,请查看netifaces python 模块。

于 2012-07-16T09:20:58.367 回答