使用python的子进程中的raw_input

时间:2014-05-03 12:59:14

标签: python

我遇到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()

1 个答案:

答案 0 :(得分:0)

嗯,你现在不是在命令中替换var,是吗?

您混合了bashpython。你可能意味着:

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)