【问题标题】:Bad parameter error when sending ping via Python通过 Python 发送 ping 时出现错误的参数错误
【发布时间】:2014-04-02 16:06:14
【问题描述】:

我正在尝试发送 ping 以找出谁在我的子网上,所以我找到了这个:

response = os.system("ping -c 1" +hostname)

但是当它到达这一行时,它给了我一个错误:

bad parameter -c 

我需要发送 ping 并得到响应 1 表示没有答案,0 表示有答案 谁能帮帮我?

谢谢!

【问题讨论】:

  • 尝试将"ping -c 1" +hostname 更改为"ping -c 1 " +hostname。我猜肯定是空格?
  • 您在 Windows 上吗?我在 ping 的文档中没有看到任何 -c 选项。
  • 我有windows,windows有不同的参数吗?
  • 输入ping /?,你会看到windows参数
  • 尝试将-c更改为-n

标签: python python-3.x ping


【解决方案1】:

您将 response 分配给函数的退出代码。 0 表示成功,否则它是一些错误代码,并不总是 1。您最好只检查 response != 0 是否意味着它由于某种原因而失败。此外,os.system 的响应在操作系统 https://docs.python.org/2/library/os.html#os.system 上可能会有所不同,您可能需要查看 subprocess

Windows 上,将 -c 替换为 -n

>>> import os
>>> response = os.system("ping -c 1 " + "127.0.0.1")
>>> response
0
>>> response = os.system("ping -c 1 " + "abc")
>>> response
512
>>> response = os.system("ping -c 1 " + "12.0.0.1")
>>> response
256
>>> import subprocess
>>> subprocess.call(["ping", "-c", "1", "127.0.0.1"])
>>> response = subprocess.call(["ping", "-c", "1", "127.0.0.1"])
>>> response
0
>>> response = subprocess.call(["ping", "-c", "1", "abc"])
>>> response
2
>>> response = subprocess.call(["ping", "-c", "1", "12.0.0.1"])
>>> response
1

【讨论】:

  • 尝试响应!=0,仍然不起作用,也是子进程。
  • 我现在正在尝试检查是否在来自的响应中: subprocess.check_output(["ping", "-n", "1", hostname]) 有“无法访问”这个词但它现在可以工作了 - 我尝试了 find 和 in 方法
猜你喜欢
  • 2015-12-25
  • 1970-01-01
  • 1970-01-01
  • 2021-11-25
  • 1970-01-01
  • 2023-01-29
  • 1970-01-01
  • 2020-01-12
  • 1970-01-01
相关资源
最近更新 更多