有一个txt文档存储了ip地址和设备名称,每行一个。请用python写一个程序,实现对ip地址的ping扫描,如果在线就显示设备名称在线,否则显示设备名称离线。
时间: 2024-09-16 20:01:39 浏览: 53
为了实现这个任务,我们可以按照以下步骤编写一个Python脚本:
1. 首先读取txt文件的内容,将每一行分割成IP地址和设备名称。
2. 对每个IP地址执行ping操作,如果成功,说明该设备在线。
3. 将结果输出到控制台或者写入一个新的文件。
这里是一个基础的示例,假设txt文件名为`devices.txt`:
```python
import os
import re
import subprocess
def ping_device(ip, device_name):
try:
# 使用ping命令检查IP是否在线
response = subprocess.check_output(['ping', '-c', '1', ip], timeout=5) # -c表示发送1个ping请求
if "ttl=" in response.decode("utf-8"):
# 如果收到回复,设备在线
return f"{device_name} 在线"
else:
return f"{device_name} 离线"
except Exception as e:
# 如果ping失败,返回错误信息
return f"{device_name} 无法ping通 ({str(e)})"
def main():
with open('devices.txt', 'r') as file:
for line in file:
# 使用正则表达式提取IP和设备名
ip, device_name = re.split(r'\s+', line.strip())
result = ping_device(ip, device_name)
print(result)
if __name__ == "__main__":
main()
```
这个脚本会遍历`devices.txt`中的每一行,将其内容作为参数传递给`ping_device`函数。如果IP在线,它将打印出设备名称加上"在线";如果IP不可达,会打印"离线"以及错误信息。
阅读全文