【发布时间】:2011-05-19 21:51:20
【问题描述】:
1 import subprocess
2 raw = raw_input("Filename:").lower()
3 ip = raw_input("Host:").lower()
4 cmd = subprocess.call("tcpdump -c5 -vvv -w" + " raw " + " ip ",shell=True)
所以这是我的脚本。除了一个关键目标之外,我一切都有效,使用原始输入。 它允许我输入我想要的任何内容,但是当它保存文件或使用 ip/host 时,doe 实际上并没有做任何事情。 当然它给了我数据包,但来自本地主机而不是我输入的主机。
我怎么知道这不起作用是因为我的第一个原始输入是文件名,所以我进行了测试,当我在文件夹中查看我的脚本时,它会生成一个名为“原始”的文件,意思是,它不是实际上只使用我的“X”中的内容来接受我的输入......
所以我有几个机会来这里:
1 import subprocess
2 raw = raw_input("Filename:").lower()
3 ip = raw_input("Host:").lower()
4 cmd = subprocess.call("tcpdump -c5 -vvv -w" + raw + "host" + ip,shell=True)
这很棒,因为它实际上需要 -w,但它现在将其保存为 rawhostip 而不是“raw”的输入。 作为参考,这是命令在终端中的样子:
tcpdump -c5 -vvv -w savename host wiki2
仅有的两个变量是 savename 和 wiki2,其余的都是命令工作所必需的。
使用这个脚本我得到这个错误:
import subprocess
raw = raw_input("Filename:").lower()
ip = raw_input("Host:").lower()
cmd = subprocess.call("tcpdump -c5 -vvv -w" + raw, "host" + ip,shell=True)
错误:
Traceback (most recent call last):
File "te.py", line 4, in <module>
cmd = subprocess.call("tcpdump -c5 -vvv -w" + raw, "host" + ip,shell=True)
File "/usr/lib/python2.6/subprocess.py", line 480, in call
return Popen(*popenargs, **kwargs).wait()
File "/usr/lib/python2.6/subprocess.py", line 583, in __init__
raise TypeError("bufsize must be an integer")
TypeError: bufsize must be an integer
我迷路了。任何帮助都会很棒,是的,我知道在现场查看 subprocess 的文档:X,我需要一个人来教我,我不明白我在读什么。
我的问题是如何处理这些变量。
【问题讨论】:
标签: python subprocess tcpdump