需要帮助创建一个Python脚本,从txt文件读取主机名,ping主机名,解析IP并将其打印到另一个文本fi

2024-04-28 14:40:49 发布

您现在位置:Python中文网/ 问答频道 /正文

正如标题所说,我需要在这件事上指出正确的方向。我不是在寻找“这是你的代码”(我最近开始用Python编写代码,所以我的理解是非常基本的)

但基本上我会有一个txt文件,里面有很多hostnames(每行一个) 我需要ping看看他们是不是1。激活和2。活动主机名的IP地址是什么。然后我需要程序将主机名+IP输出到一个txt文件。在

我读了一些关于这个主题的文章,似乎子流程才是最好的选择。 时间不是真的相关,所以我不需要它多线程。在

总之,有什么好的建议可以从哪里开始(这样我就可以理解我在输入什么了)?在

编辑: 所以这就是我所取得的成就:

import ping, socket

hostsFile = open('hostnames.txt', 'r')
lines = hostsFile.readlines()
addr = socket.gethostbyname(lines)

for lines in hostsFile:
    print 'IP-address of', hostname
    print 'is', addr 
    try:
        ping.verbose_ping(count=3)
        delay = ping.Ping(timeout=2000).do()
    except socket.error, e:
        print "Ping Error:", e

它现在返回一个引用addr=socket.gethostbyname(行)行,说明:“TypeError:必须是字符串,而不是列表”

虽然我对这个错误有一定的理解,但我不知道如何绕过它。在


Tags: 文件代码iptxt标题socketping主机名
1条回答
网友
1楼 · 发布于 2024-04-28 14:40:49

您可以使用python的ping和socket模块来实现所需的任务。 套接字模块有一个函数gethostbyname(),该函数接受主机名并返回其ip地址。

相关代码如下所示,您可以在此代码中实现对文本文件的读写功能。

import ping, socket
hostname = 'maps.google.com'
addr = socket.gethostbyname(hostname)
print 'The address of ', hostname, 'is', addr
try:
    ping.verbose_ping('www.google.com', count=3)
    delay = ping.Ping('www.wikipedia.org', timeout=2000).do()
except socket.error, e:
    print "Ping Error:", e

相关问题 更多 >