Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python脚本中使用bash命令时出现问题_Python_Linux_Bash_Tcpdump - Fatal编程技术网

在python脚本中使用bash命令时出现问题

在python脚本中使用bash命令时出现问题,python,linux,bash,tcpdump,Python,Linux,Bash,Tcpdump,我正在尝试将bash脚本转换为python,其中一些命令似乎没有按照我希望的方式执行。基本上,脚本应该安装文件,运行tcpdump和monkey命令,然后卸载包 我正在迭代apk文件,并使用这个功能安装它们,这个功能运行良好 def installApk(apk): os.system("sudo adb install " + apk) 但是当我尝试运行tcpdump函数时(应该捕获 日期并保存到文件)和monkey函数 def runTcpDump(apkPackage):

我正在尝试将bash脚本转换为python,其中一些命令似乎没有按照我希望的方式执行。基本上,脚本应该安装文件,运行tcpdump和monkey命令,然后卸载包

我正在迭代apk文件,并使用这个功能安装它们,这个功能运行良好

def installApk(apk):
        os.system("sudo adb install " + apk)
但是当我尝试运行tcpdump函数时(应该捕获 日期并保存到文件)和monkey函数

def runTcpDump(apkPackage):
       os.popen("sudo -i xterm -e tcpdump src 10.0.2.7 -vvv > /home/seed/Documents/Programs "  + apkPackage  + ".pcap")

def runMonkey(apkPackage):
       os.popen("sudo -i xterm -e adb shell monkey -p " + apkPackage + " -vvv 1000")
我得到这些错误:
sh:1:无法创建/home/seed/Documents/Programs:是一个目录#(我相信是由runTcpDump函数产生的)

sh:2:.pcap:未找到#(由runTcpDump函数产生)


sh:2:-vvv:not found#(由runMonkey函数产生)

与@Jobin建议的类似,您需要删除“/home/seed/Documents/Programs”末尾的空格,因为这样会导致类似以下情况:

sudo -i xterm -e tcpdump src 10.0.2.7 -vvv > /home/seed/Documents/Programs apkPackage.pcap
这显然是不对的。您可能希望在“Programs”后面加“/”而不是空格


至于
os.popen(“sudo-i xterm-e adb shell monkey-p”+apkPackage+“-vvv 1000”)
部分,你需要看看apkPackage的值是多少,看看它为什么抱怨冗长的标志。

就像@Jobin建议的那样,你需要删除“/home/seed/Documents/Programs”结尾的空格因为这会导致如下结果:

sudo -i xterm -e tcpdump src 10.0.2.7 -vvv > /home/seed/Documents/Programs apkPackage.pcap
这显然是不对的。您可能希望在“Programs”后面加“/”而不是空格


至于
os.popen(“sudo-i xterm-e adb shell monkey-p”+apkPackage+“-vvv 1000”)
部分,您需要查看apkPackage的值,以了解它为什么抱怨冗余标志。

在这个命令中
sudo-i xterm-e tcpdump src 10.0.2.7-vv>/home/seed/Documents/Programssudo
输出转储到文件中,而不是
tcpdump
输出或
xterm
输出;我认为,由于xterm是一个X-window程序,它不会产生任何输出。这是一个好主意,但该命令在原始bash脚本中运行良好,并保存所有信息,并将其存储到
“sudo-I xterm-e tcpdump src 10.0.2.7-vvv>/home/seed/Documents/Programs”中程序末尾的fileRemove空间中
@Jobin有一个获胜的建议,我想,您构造了一个文件名,但它包含一个不受保护的空格,shell lexer使用该空格将接收到的命令拆分为令牌,因此至少这解释了前两个错误:-)。。。关于第三个问题:apkPackage中可能有什么?空字符串?里面的空间?催眠?非常感谢!我能够用这个函数执行我想要的:def runTcpDumpAndMonkey(apkPackage):os.system(“sudo-I xterm-e tcpdump src 10.0.2.7-vvv>/home/seed/Documents/Programs”+apkPackage+”.pcap“+”&sudo-I xterm-e adb shell monkey-p“+apkPackage+”-v 500”)在这个命令
sudo-i xterm-e tcpdump src 10.0.2.7-vvv>/home/seed/Documents/Programs
中,
sudo
输出被转储到文件中,而不是
tcpdump
输出或
xterm
输出;我认为,由于xterm是一个X-window程序,它不会产生任何输出。这是一个好主意,但该命令在原始bash脚本中运行良好,并保存所有信息,并将其存储到
“sudo-I xterm-e tcpdump src 10.0.2.7-vvv>/home/seed/Documents/Programs”中程序末尾的fileRemove空间中
@Jobin有一个获胜的建议,我想,您构造了一个文件名,但它包含一个不受保护的空格,shell lexer使用该空格将接收到的命令拆分为令牌,因此至少这解释了前两个错误:-)。。。关于第三个问题:apkPackage中可能有什么?空字符串?里面的空间?催眠?非常感谢!我能够用这个函数执行我想要的:def runTcpDumpAndMonkey(apkPackage):os.system(“sudo-I xterm-e tcpdump src 10.0.2.7-vvv>/home/seed/Documents/Programs”+apkPackage+”.pcap“+”&sudo-I xterm-e adb shell monkey-p“+apkPackage+”-v 500”)