Остальные вопросы не совсем такие.
То, что я ищу для достижения, - это функция Python, которая возвращает список всех IP-адресов в системе, эмулируя поведение:
ifconfig | grep 'inet addr:' | grep -v 127.0.0.1 | cut -d: -f2 | awk '{ print $1}'
Остальные вопросы не совсем такие.
То, что я ищу для достижения, - это функция Python, которая возвращает список всех IP-адресов в системе, эмулируя поведение:
ifconfig | grep 'inet addr:' | grep -v 127.0.0.1 | cut -d: -f2 | awk '{ print $1}'
Для этого вы можете использовать модуль Python subprocess
.
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, ознакомьтесь с модулем Python netifaces.
grep | grep | awk
можно было бы легко заменить чистым Python, а также избежать shell=True
, который является проблемой безопасности. См. также stackoverflow.com/a/32713301/874188.
- person tripleee; 22.09.2015