目录结构
1
2
3
4
5
6
7
8
9
10
11
|
ping_test /
├── bin
│ ├── ping.py
│ ├── ping_run.sh.origin
│ └── ping.sh
├── conf
│ └── ip.lst
├── logs
│ ├── 10.10 . 37.196_2017 - 06 - 28_ping .log
│ └── 10.10 . 62.229_2017 - 06 - 28_ping .log
└── README.md
|
代码
cat bin/ping.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
#!/usr/bin/env python
#-*- coding: utf-8
from subprocess import Popen, PIPE
import shlex
import time
import datetime
import sys, os
basedir = os.path.dirname( os.path.dirname( os.path.abspath(__file__) ) )
cnf = os.path.join( basedir, 'conf' , 'ip.lst' )
# print cnf
while True :
today = datetime.datetime.strftime( datetime.datetime.now(), "%Y-%m-%d" )
with open (cnf) as f:
for host in f:
host = host.strip()
cmd = 'sh ping.sh %s' % host
args = shlex.split(cmd)
p = Popen(args, stdout = PIPE, stderr = PIPE)
stdout, stderr = p.communicate()
filename = host + '_%s_ping.log' % today
logfile = os.path.join(basedir, 'logs' , filename)
# print logfile
if stdout:
with open (logfile, 'ab' ) as fd:
fd.write( stdout )
fd.flush()
elif stderr:
print ( 'ping lost' )
time.sleep( 1 )
|
cat ping.sh
1
2
3
4
|
#!/bin/bash
HOST = $ 1
ping - c 1 ${HOST} | grep 'bytes from' | awk '{print $0"\t" strftime("%T %F", systime())}'
|
以上这篇python检测主机的连通性并记录到文件的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/longyinyushi/article/details/73832100