python - 子流程变量

标签 python subprocess tcpdump

<分区>

  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 而不是“原始”输入。 作为引用,这是命令在终端中的样子:

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

我迷路了。任何帮助都会很棒,是的,我知道在站点上查看子流程的文档:X,我需要一个人来教我,我不明白我在读什么。

我的问题是如何使用这些变量。

最佳答案

不要使用 shell=True。那应该是 False

您在输入时犯了细微的错误。具体来说,如果您有两个字符串:

>>> s1 = 'Hello'
>>> s2 = 'Hi'
>>> s1 + s2
'HelloHi'

注意,HelloHi 之间没有空格。所以不要这样做。 (你的第 4 行)

你应该这样做(好的方法):

>>> raw = raw_input('Filename: ')
Filename: test
>>> ip = raw_input('Host: ')
Host: 192.168.1.1 
>>> command = 'tcpdump -c5 -vvv -w {0} {1}'.format(raw, ip)   # the command goes here
>>> subprocess.call(command.split(), shell=False)   # call subprocess and pass the command as a list using split

现在它应该可以工作了。

关于python - 子流程变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4348524/

相关文章:

python - 如何在文档中找到最大的空白(白色)正方形区域并返回其坐标和面积?

python - 接受按钮按下后,无需再按Enter

python - 如何从不同的Python脚本调用Python脚本?

c - PCAP 以太类型返回

c++ - 如何通过内容正则表达式匹配过滤 pcap(例如 tcpdump)文件?

python - 使用 Python.Net 导入具有依赖项的 .NET Standard 2.0 类库

python - 在 Python 中将时间增量相加

python - 如何使用这个 ffmpeg python 脚本正确剪切视频

python-3.x - 如何使用具有管理员权限的子进程停止和启动 Windows 服务?

java - jpcap 嗅探数据包