如何从输出中选择特定文本?

时间:2018-06-04 21:52:51

标签: python python-3.x nslookup

我正在通过从一个csv文件中读取主机名来执行nslookup,并且我想将FQDN写入另一个csv文件。

这是我的代码:

import subprocess

with open('csv1.csv', 'r') as i, open('csv2.csv', 'w') as o:
   for line in i:
     if line.strip(): # skips empty lines
        proc = subprocess.Popen(["nslookup", line.strip()],
                                stdout=subprocess.PIPE,
                                stderr=subprocess.PIPE)
        o.write('{}\n'.format(proc.communicate(0)))

print('Done')

我面临的问题是,在cmd-> nslookup中完成时,它提供了类似的所有详细信息,例如'服务器',' ADDRESS' FQDN&# 39;它的IP地址 以下是其中一个主机名的示例:

(b'Server:  anything.na.com\r\nAddress:  10.3.56.7\r\n\r\nName:    ABCD12.na.com\r\nAddress:  10.4.67.8\r\nAliases:  abcd12.na.com\r\n\r\n'

我只想在这里将fQDN名称提取到csv文件中。

1 个答案:

答案 0 :(得分:0)

使用resplit

找到您要查找的数据
import subprocess

with open('csv1.csv', 'r') as i, open('csv2.csv', 'w') as o:
   for line in i:
     if line.strip(): # skips empty lines
        proc = subprocess.Popen(["nslookup", line.strip()],
                                stdout=subprocess.PIPE,
                                stderr=subprocess.PIPE)
        stdout_data, stderr_data = proc.communicate(0)
        fqdn = stdout_data.split(b'Server:  ')[1].split(b'\r\n')[0]
        o.write('{}\n'.format(fqdn))