7

我有一个输入文件 test.txt 为:

host:dc2000
host:192.168.178.2

我想通过以下方式获取这些机器的所有地址:

grep "host:" /root/test.txt 

依此类推,我通过 python 获得命令输出:

import subprocess
file_input='/root/test.txt'
hosts=subprocess.Popen(['grep','"host:"',file_input], stdout= subprocess.PIPE)
print hosts.stdout.read()

但结果是空字符串。

我不知道我遇到了什么问题。你能建议我如何解决吗?

4

3 回答 3

10

试试看:

import subprocess
hosts = subprocess.check_output("grep 'host:' /root/test.txt", shell=True)
print hosts
于 2012-10-09T22:46:31.297 回答
2

您的代码应该可以工作,您确定用户具有读取文件的访问权限吗?

另外,你确定"host:"文件中有一个吗?你可能是这个意思:

hosts_process = subprocess.Popen(['grep','host:',file_input], stdout= subprocess.PIPE)
hosts_out, hosts_err = hosts_process.communicate()
于 2012-10-09T22:47:47.933 回答
2

另一种解决方案,尝试 Plumbum 包(https://plumbum.readthedocs.io/):

from plumbum.cmd import grep print(grep("host:", "/root/test.txt")) print(grep("-n", "host:", "/root/test.txt")) #'-n' option

于 2018-07-23T16:08:07.773 回答