在ping扫描中使用pyk中的awk

时间:2017-09-20 00:05:12

标签: python awk subprocess popen

我正在尝试使用子进程在python中进行ping扫描但是我遇到了在Popen中获取awk的问题,我想运行此命令:

  

ping 192.168.1.1 -c1 | grep来自| awk'{print $ 4“活着”}'

     

输出应该是“假设我们可以收到回复”:192.168.1.1:还活着

这是我的代码“问题在var p3”

import subprocess
# Ask the user for input for example we will enter 192.168.1.1
host = input("Enter a host to ping: ") 
p1 = subprocess.Popen(['ping', '-c 1', host], stdout=subprocess.PIPE)
p2=subprocess.Popen(["grep","from"],stdin=p1.stdout,stdout=subprocess.PIPE)
p3 = subprocess.Popen(["awk","\'{print $4 \"is alive\"}\'"], stdin=p2.stdout,stdout=subprocess.PIPE)

# Run the command
output = p3.communicate()[0]
print (output)

1 个答案:

答案 0 :(得分:0)

删除单引号。它们是描述shell命令行参数所必需的,但在没有命令行时则不需要。

p3 = subprocess.Popen(["awk", "{print $4 \"is alive\"}"], ...)