我遇到shell命令的问题,当我想通过使用raw_input输入一个值并将其放在shell命令中时,它显示" s在此上下文中是意外的"。 这是我的计划:
import curses, sys, os, signal,argparse
from multiprocessing import Process
from scapy.all import *
from subprocess import call, PIPE
def main():
var=raw_input("Entre wap's @mac: ")
subprocess.call('tshark -r crackWEP.pcap "((wlan.fc.type_subtype==0x20)&&(wlan.bssid==**"%s"%var**))"|wc -l', shell=True, stdout=subprocess.PIPE)
if __name__ == u'__main__':
main()
答案 0 :(得分:0)
嗯,你现在不是在命令中替换var
,是吗?
您混合了bash
和python
。你可能意味着:
var=raw_input("Entre wap's @mac: ")
subprocess.call('tshark -r crackWEP.pcap "((wlan.fc.type_subtype==0x20)&&(wlan.bssid==**"%s"%'+var+'**))"|wc -l', shell=True, stdout=subprocess.PIPE)
还要注意用户输入和shell=True
。人们喜欢把" 非常有趣"在那里。我建议用tshark
调用shell=False
,从中捕获输出并在python中计算行数。运行单独的外部程序似乎是一种浪费。
编辑:
第二个pythonic版本:
command = 'tshark -r crackWEP.pcap "((wlan.fc.type_subtype==0x20)&&(wlan.bssid==**"%s"%{}**))"|wc -l'.format(var)
subprocess.call(command, shell=True, stdout=subprocess.PIPE)