Python 将nmap的子进程导出到变量中,并为特定的mac地址对其进行awk

Python 将nmap的子进程导出到变量中,并为特定的mac地址对其进行awk,python,Python,所以我有一个整洁的命令,我发现它可以扫描我的网络,找到Raspberry Pi的,因此是带有特定mac地址的awk,我想在我的python脚本中运行它,但是我似乎无法让它工作,无论我使用多少个“或”或(),它仍然告诉我我语法无效。任何帮助都将不胜感激 这是我的剧本 import os import shlex import subprocess class FindPi: def __init__(self, ip): self.ip = ip def nmap_awk_r

所以我有一个整洁的命令,我发现它可以扫描我的网络,找到Raspberry Pi的,因此是带有特定mac地址的awk,我想在我的python脚本中运行它,但是我似乎无法让它工作,无论我使用多少个“或”或(),它仍然告诉我我语法无效。任何帮助都将不胜感激

这是我的剧本

import os
import shlex
import subprocess

class FindPi:

  def __init__(self, ip):
    self.ip = ip

  def nmap_awk_results(self):
    cmd = 'sudo nmap -sP 172.16.4.*/24 "|" awk /^Nmap/{ip=$NF}/B8:27:EB/{print "Found a Raspberry PI @" ip}'

    s = shlex.split(cmd)
    fff = subprocess.check_output(s) #Popen(cmd, stdout=subprocess.PIPE)
    #out = fff.stdout.read()
    print fff


FindPi('172.16.4.*/24').nmap_awk_results()

***after fixing the string I get a new error now how ever the nmap part works***

Failed to resolve "|".
Failed to resolve "awk".
Unable to split netmask from target expression: "/^Nmap/{ip=$NF}/B8:27:EB/{print"
Failed to resolve "Found a Raspberry PI @".
Failed to resolve "ip}".
我知道我的命令是有效的,因为这是一个结果


您需要在命令中转义引号。例如,请参见,.我尝试了cmd='sudo nmap-sP 172.16.4.*/24“|”awk/^nmap/{ip=$NF}/B8:27:EB/{print”找到了一个覆盆子PI@“ip}”无法解析“|”。无法解析“awk”。无法从目标表达式拆分网络掩码:“/^nmap/{ip=$NF}/B8:27:EB print”无法解析”发现一个树莓PI@“。解析“ip}失败。我现在得到上面的错误^glibdud