首页 文章

Bottle Python ping check 5 ping

提问于
浏览
0

我正在尝试编写一个脚本来打印ping检查到浏览器5 ping .

这个脚本:

from bottle import route, run, template
import subprocess

@route('/pings/<ip>')

def ping(ip):
   param = '-c 1'
   command = ['ping', param, ip]
   num = 0
   while (num < 6):
      return subprocess.check_output(command)
      num += 1

run(host='0.0.0.0', port=8080)

目前输出到浏览器如下:

PING 8.8.8.8(8.8.8.8)56(84)字节的数据 . 来自8.8.8.8的64字节:icmp_seq = 1 ttl = 54时间= 17.7 ms --- 8.8.8.8 ping统计数据--- 1个数据包发送,1个接收,0%数据包丢失,时间0ms rtt min / avg / max / mdev = 17.756 / 17.756 / 17.756 / 0.000毫秒

但它没有像我期望的那样打印5个ping . 它只打印出一个ping,是出于某种原因只打印出最后一个?如果从shell命令运行它,我怎么能打印5个ping .

谢谢 .

1 回答

  • 3

    循环只运行一次因为 return 在循环的第一次迭代期间执行,因此您只获得第一个结果 . 您可以获取ping结果并将其附加到列表中,然后一旦循环完成,您就可以返回该列表 .

    def ping(ip):
       param = '-c 1'
       command = ['ping', param, ip]
       num = 0
       output = []
       while (num < 6):
          output.append(subprocess.check_output(command))
          num += 1
       return output // or return "\n".join(output)
    

相关问题