这个问题已经在这里有了答案 :
子流程check_output返回非零退出状态1 (2个答案)
3年前关闭。
import socket
import sys
from collections import OrderedDict
from subprocess import check_output
from threading import Thread
[…]
class IpCheck(Thread):
RECEIVED_PACKAGES_RE = re.compile(r'(\d+) received')
def __init__(self, ip):
Thread.__init__(self)
self.ip = ip
self.result = None
def run(self):
match = self.RECEIVED_PACKAGES_RE.search(
check_output(['ping', '-q', '-c2', '-W1', self.ip])
)
successful_ping_count = int(match.group(1)) if match else 0
if successful_ping_count == 0:
self.result = 'no response'
elif successful_ping_count == 1:
self.result = 'alive, but 50% package loss'
elif successful_ping_count == 2:
self.result = check_snmp(self.ip)
else:
assert False
[...]
…导致错误:
CalledProcessError:命令’[ping’,’-q’,’-c2’,’-W1’,‘10 .81.3.80’]’返回非零退出状态1
在中添加“ stderr = STDOUT”check_output
不会产生任何有用的反馈。
如何获取有关该错误的更多信息,以便进行故障排除?
subprocess.check_output提出CalledProcessError上非零退出代码,ping
返回非零退出代码,如果事情是错误的(如未知的域名或网站关闭,或者网站有ICMP阻塞出于某种原因,或者您的Internet连接已断开)
。
如果要检查输出和退出代码,请使用subprocess.Popen:
import subprocess
import sys
site = sys.argv[1]
ping_count = 4
process = subprocess.Popen(['ping', site, '-c', str(ping_count)],
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT)
returncode = process.wait()
print('ping returned {0}'.format(returncode))
print(process.stdout.read())
例子:
$ python ping.py google.com <-- ping successful
ping returned 0
PING google.com (195.64.213.27) 56(84) bytes of data.
64 bytes from cache.google.com (195.64.213.27): icmp_seq=1 ttl=57 time=59.8 ms
64 bytes from cache.google.com (195.64.213.27): icmp_seq=2 ttl=57 time=2.43 ms
64 bytes from cache.google.com (195.64.213.27): icmp_seq=3 ttl=57 time=77.0 ms
64 bytes from cache.google.com (195.64.213.27): icmp_seq=4 ttl=57 time=43.8 ms
--- google.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 2.439/45.802/77.096/27.658 ms
$ python ping.py asdasdas.com <-- DNS resolved, but site is down
ping returned 1
PING asdasdas.com (69.172.201.208) 56(84) bytes of data.
--- asdasdas.com ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 3024ms
$ python ping.py asdasdasdasda.com <-- DNS failed
ping returned 2
ping: unknown host asdasdasdasda.com
问题内容: 这是我的python代码: 第一个工作良好,但是第二个返回此: 为什么会这样?是因为原始的shell命令而是新的软件包吗?我怎么解决这个问题? 问题答案: 您启动的命令已正确执行。它返回非零状态,这意味着在处理命令期间发生了错误。您可能想在命令中添加一些参数来解决该问题。 您的代码可能以这种方式显示此错误:
我的命令提示符出错了。我从Jupyter尝试了,但出现了一些错误。我感谢任何查看或回答的人,感谢您的时间!
当我键入 在 CentOS 7 终端中调试以使用 gradle 启动此示例Spring启动应用程序时,我收到以下错误。 我搜索了这个错误,并阅读了其他类似但不重复的SO帖子。例如,这是在CentOS 7和web应用程序中的eclipse中。这不是android应用程序等。此外,其他帖子中给出的命令也没有解决这个问题。 重现此问题所需的所有代码都在上面的github链接中,诊断问题的所有日志都在下面
我是在尝试 但是我有一个错误 使用缓存的PyAudio-0.2.11.tar.gz(37 kB)安装收集的软件包:pyaudio运行setup.py为pyaudio安装:开始运行setup.py为pyaudio安装:完成,状态为“错误” 错误:命令出错,退出状态为1:' C:\ Users \ Admin \ PycharmProjects \ AI \ venv \ Scripts \ pyth
问题内容: 我在Ubuntu 13.10机器上安装XML和RCurl时遇到麻烦。我今天执行了所有sudo更新和升级。 我正在尝试将拨浪鼓用于R。我无法安装使用拨浪鼓所需的“ XML”。一年后,这里几乎是同一问题,只是操作系统不同。以下是我返回的错误消息: 不太确定如何从这里继续。 问题答案: 在Ubuntu上安装curl和xml。跑 R中安装的软件包上的错误消息表示curl和xml库不存在或找不到
我在windows命令提示符下键入以下命令:pip install jupyterlab 我收到以下错误: