2014-05-03 54 views
1

我有一個shell命令的問題,當我想通過使用raw_input輸入一個值並將它放在shell命令中時,它顯示「s在這種情況下是意外的」。 這裏是我的程序:在使用python的子進程中的raw_input

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

那麼你是不是在命令替換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。人們喜歡在那裏放置「很有趣」。我建議打電話tsharkshell=False,捕捉它的輸出和python中的行數。運行單獨的外部程序似乎是一種浪費。

編輯:

第二更Python版本:

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) 
+1

'+'與字符串是Python中的壞習慣。如果您更喜歡C風格的格式,請使用'.format()',或使用'%'運算符。 – Grapsus

+0

@Grapsus我一直在使用python3和個人使用格式,但我不確定2.7是否支持它。可以? – luk32

+0

@ luk32它的確如此。 –