Я получаю сообщение об ошибке из subprocess.Popen()
для команды, которая отлично работает в командной строке.
Команда проста:
pax> ping -c2 127.0.0.1
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1:icmp_seq=1 ttl=64 time=0.022 ms
64 bytes from 127.0.0.1:icmp_seq=2 ttl=64 time=0.060 ms
Однако, когда я попробуйте сделать это из Python (интерактивно), он действует так, как будто я пропустил адрес:
>>> import shlex
>>> import subprocess
>>> args = shlex.split("ping -c2 127.0.0.1") ; print(args)
['ping', '-c2', '127.0.0.1']
>>> proc = subprocess.Popen(args, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
>>> print(proc.stdout.read()) ; print(proc.stderr.read())
b''
b'ping: usage error: Destination address required\n'
Это сообщение об ошибке точно то, что я получаю, когда пытаюсь выполнить:
ping -c2
из оболочки без адреса.
Что могло быть причиной этого?