需求
在主机上对一批机器进行连通性的检查,并保存结果为json文件,记录好检查时间和状态信息
实现
实现相关的代码
#! /bin/python
#-*-coding: UTF-8 -*-
# auther:zphj1987@gmail.com
import datetime
import commands
import json
import time
host_dic={}
host_dic["host_status"]={}
def check_host(HOST):
HOSTSTATUS, HOSTOUTPUT = commands.getstatusoutput('ping -c 2 %s' % HOST)
if HOSTSTATUS == 0:
host_dic["host_status"][HOST]="ok"
else:
host_dic["host_status"][HOST]="error"
while 1:
host_dic["check_time"]=datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
for host in open("hosts"):
host=host.strip('\n')
check_host(host)
host_status_json=json.dumps(host_dic)
with open('host_status.json','w') as f:
f.write(host_status_json)
f.write('\n')
time.sleep(5)
关键点说明:
- 不需要ping的结果打到前台
- 解析主机列表的时候需要注意换行符
- 写入json文件的时候加入换行符
- 增加了无限循环,增加了延时5秒进入下一轮检查
主机列表文件
[root@lab101 gaojin]# cat hosts
192.168.19.101
192.168.19.1
执行后输出效果如下
[root@lab101 gaojin]# cat host_status.json
{"host_status": {"192.168.19.1": "error", "192.168.19.101": "ok"}, "check_time": "2021-05-08 11:44:38"}