mirror of
https://github.com//cppla/ServerStatus
synced 2025-06-02 05:39:50 +08:00
格式化代码,数据包增加丢包率packet
This commit is contained in:
parent
46def9acb2
commit
1ecca6e444
@ -2,7 +2,7 @@
|
||||
# Update by : https://github.com/cppla/ServerStatus
|
||||
# 支持Python版本:2.7 to 3.5
|
||||
# 支持操作系统: Linux, OSX, FreeBSD, OpenBSD and NetBSD, both 32-bit and 64-bit architectures
|
||||
# 时间: 20180312
|
||||
# 时间: 20180828
|
||||
|
||||
|
||||
SERVER = "127.0.0.1"
|
||||
@ -22,93 +22,93 @@ import collections
|
||||
import threading
|
||||
|
||||
def get_uptime():
|
||||
f = open('/proc/uptime', 'r')
|
||||
uptime = f.readline()
|
||||
f.close()
|
||||
uptime = uptime.split('.', 2)
|
||||
time = int(uptime[0])
|
||||
return int(time)
|
||||
f = open('/proc/uptime', 'r')
|
||||
uptime = f.readline()
|
||||
f.close()
|
||||
uptime = uptime.split('.', 2)
|
||||
time = int(uptime[0])
|
||||
return int(time)
|
||||
|
||||
def get_memory():
|
||||
re_parser = re.compile(r'^(?P<key>\S*):\s*(?P<value>\d*)\s*kB')
|
||||
result = dict()
|
||||
for line in open('/proc/meminfo'):
|
||||
match = re_parser.match(line)
|
||||
if not match:
|
||||
continue;
|
||||
key, value = match.groups(['key', 'value'])
|
||||
result[key] = int(value)
|
||||
re_parser = re.compile(r'^(?P<key>\S*):\s*(?P<value>\d*)\s*kB')
|
||||
result = dict()
|
||||
for line in open('/proc/meminfo'):
|
||||
match = re_parser.match(line)
|
||||
if not match:
|
||||
continue;
|
||||
key, value = match.groups(['key', 'value'])
|
||||
result[key] = int(value)
|
||||
|
||||
MemTotal = float(result['MemTotal'])
|
||||
MemFree = float(result['MemFree'])
|
||||
Cached = float(result['Cached'])
|
||||
MemUsed = MemTotal - (Cached + MemFree)
|
||||
SwapTotal = float(result['SwapTotal'])
|
||||
SwapFree = float(result['SwapFree'])
|
||||
return int(MemTotal), int(MemUsed), int(SwapTotal), int(SwapFree)
|
||||
MemTotal = float(result['MemTotal'])
|
||||
MemFree = float(result['MemFree'])
|
||||
Cached = float(result['Cached'])
|
||||
MemUsed = MemTotal - (Cached + MemFree)
|
||||
SwapTotal = float(result['SwapTotal'])
|
||||
SwapFree = float(result['SwapFree'])
|
||||
return int(MemTotal), int(MemUsed), int(SwapTotal), int(SwapFree)
|
||||
|
||||
def get_hdd():
|
||||
p = subprocess.check_output(['df', '-Tlm', '--total', '-t', 'ext4', '-t', 'ext3', '-t', 'ext2', '-t', 'reiserfs', '-t', 'jfs', '-t', 'ntfs', '-t', 'fat32', '-t', 'btrfs', '-t', 'fuseblk', '-t', 'zfs', '-t', 'simfs', '-t', 'xfs']).decode("Utf-8")
|
||||
total = p.splitlines()[-1]
|
||||
used = total.split()[3]
|
||||
size = total.split()[2]
|
||||
return int(size), int(used)
|
||||
p = subprocess.check_output(['df', '-Tlm', '--total', '-t', 'ext4', '-t', 'ext3', '-t', 'ext2', '-t', 'reiserfs', '-t', 'jfs', '-t', 'ntfs', '-t', 'fat32', '-t', 'btrfs', '-t', 'fuseblk', '-t', 'zfs', '-t', 'simfs', '-t', 'xfs']).decode("Utf-8")
|
||||
total = p.splitlines()[-1]
|
||||
used = total.split()[3]
|
||||
size = total.split()[2]
|
||||
return int(size), int(used)
|
||||
|
||||
def get_time():
|
||||
stat_file = file("/proc/stat", "r")
|
||||
time_list = stat_file.readline().split(' ')[2:6]
|
||||
stat_file.close()
|
||||
for i in range(len(time_list)) :
|
||||
time_list[i] = int(time_list[i])
|
||||
return time_list
|
||||
stat_file = file("/proc/stat", "r")
|
||||
time_list = stat_file.readline().split(' ')[2:6]
|
||||
stat_file.close()
|
||||
for i in range(len(time_list)) :
|
||||
time_list[i] = int(time_list[i])
|
||||
return time_list
|
||||
def delta_time():
|
||||
x = get_time()
|
||||
time.sleep(INTERVAL)
|
||||
y = get_time()
|
||||
for i in range(len(x)):
|
||||
y[i]-=x[i]
|
||||
return y
|
||||
x = get_time()
|
||||
time.sleep(INTERVAL)
|
||||
y = get_time()
|
||||
for i in range(len(x)):
|
||||
y[i]-=x[i]
|
||||
return y
|
||||
def get_cpu():
|
||||
t = delta_time()
|
||||
st = sum(t)
|
||||
if st == 0:
|
||||
st = 1
|
||||
result = 100-(t[len(t)-1]*100.00/st)
|
||||
return round(result)
|
||||
t = delta_time()
|
||||
st = sum(t)
|
||||
if st == 0:
|
||||
st = 1
|
||||
result = 100-(t[len(t)-1]*100.00/st)
|
||||
return round(result)
|
||||
|
||||
class Traffic:
|
||||
def __init__(self):
|
||||
self.rx = collections.deque(maxlen=10)
|
||||
self.tx = collections.deque(maxlen=10)
|
||||
def get(self):
|
||||
f = open('/proc/net/dev', 'r')
|
||||
net_dev = f.readlines()
|
||||
f.close()
|
||||
avgrx = 0; avgtx = 0
|
||||
def __init__(self):
|
||||
self.rx = collections.deque(maxlen=10)
|
||||
self.tx = collections.deque(maxlen=10)
|
||||
def get(self):
|
||||
f = open('/proc/net/dev', 'r')
|
||||
net_dev = f.readlines()
|
||||
f.close()
|
||||
avgrx = 0; avgtx = 0
|
||||
|
||||
for dev in net_dev[2:]:
|
||||
dev = dev.split(':')
|
||||
if dev[0].strip() == "lo" or dev[0].find("tun") > -1 \
|
||||
or dev[0].find("docker") > -1 or dev[0].find("veth") > -1 \
|
||||
or dev[0].find("br-") > -1:
|
||||
continue
|
||||
dev = dev[1].split()
|
||||
avgrx += int(dev[0])
|
||||
avgtx += int(dev[8])
|
||||
for dev in net_dev[2:]:
|
||||
dev = dev.split(':')
|
||||
if dev[0].strip() == "lo" or dev[0].find("tun") > -1 \
|
||||
or dev[0].find("docker") > -1 or dev[0].find("veth") > -1 \
|
||||
or dev[0].find("br-") > -1:
|
||||
continue
|
||||
dev = dev[1].split()
|
||||
avgrx += int(dev[0])
|
||||
avgtx += int(dev[8])
|
||||
|
||||
self.rx.append(avgrx)
|
||||
self.tx.append(avgtx)
|
||||
avgrx = 0; avgtx = 0
|
||||
self.rx.append(avgrx)
|
||||
self.tx.append(avgtx)
|
||||
avgrx = 0; avgtx = 0
|
||||
|
||||
l = len(self.rx)
|
||||
for x in range(l - 1):
|
||||
avgrx += self.rx[x+1] - self.rx[x]
|
||||
avgtx += self.tx[x+1] - self.tx[x]
|
||||
l = len(self.rx)
|
||||
for x in range(l - 1):
|
||||
avgrx += self.rx[x+1] - self.rx[x]
|
||||
avgtx += self.tx[x+1] - self.tx[x]
|
||||
|
||||
avgrx = int(avgrx / l / INTERVAL)
|
||||
avgtx = int(avgtx / l / INTERVAL)
|
||||
avgrx = int(avgrx / l / INTERVAL)
|
||||
avgtx = int(avgtx / l / INTERVAL)
|
||||
|
||||
return avgrx, avgtx
|
||||
return avgrx, avgtx
|
||||
|
||||
def liuliang():
|
||||
NET_IN = 0
|
||||
@ -118,9 +118,9 @@ def liuliang():
|
||||
netinfo = re.findall('([^\s]+):[\s]{0,}(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)', line)
|
||||
if netinfo:
|
||||
if netinfo[0][0] == 'lo' or 'tun' in netinfo[0][0] \
|
||||
or 'docker' in netinfo[0][0] or 'veth' in netinfo[0][0] \
|
||||
or 'br-' in netinfo[0][0] \
|
||||
or netinfo[0][1]=='0' or netinfo[0][9]=='0':
|
||||
or 'docker' in netinfo[0][0] or 'veth' in netinfo[0][0] \
|
||||
or 'br-' in netinfo[0][0] \
|
||||
or netinfo[0][1]=='0' or netinfo[0][9]=='0':
|
||||
continue
|
||||
else:
|
||||
NET_IN += int(netinfo[0][1])
|
||||
@ -128,35 +128,39 @@ def liuliang():
|
||||
return NET_IN, NET_OUT
|
||||
|
||||
def ip_status():
|
||||
object_check = ['www.10010.com', 'www.189.cn', 'www.10086.cn']
|
||||
ip_check = 0
|
||||
for i in object_check:
|
||||
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
s.settimeout(1)
|
||||
try:
|
||||
s.connect((i, 80))
|
||||
except:
|
||||
ip_check += 1
|
||||
s.close()
|
||||
del s
|
||||
if ip_check >= 2:
|
||||
return False
|
||||
else:
|
||||
return True
|
||||
object_check = ['www.10010.com', 'www.189.cn', 'www.10086.cn']
|
||||
ip_check = 0
|
||||
for i in object_check:
|
||||
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
s.settimeout(1)
|
||||
try:
|
||||
s.connect((i, 80))
|
||||
except:
|
||||
ip_check += 1
|
||||
s.close()
|
||||
del s
|
||||
if ip_check >= 2:
|
||||
return False
|
||||
else:
|
||||
return True
|
||||
|
||||
def get_network(ip_version):
|
||||
if(ip_version == 4):
|
||||
HOST = "ipv4.google.com"
|
||||
elif(ip_version == 6):
|
||||
HOST = "ipv6.google.com"
|
||||
try:
|
||||
s = socket.create_connection((HOST, 80), 2)
|
||||
return True
|
||||
except:
|
||||
pass
|
||||
return False
|
||||
if(ip_version == 4):
|
||||
HOST = "ipv4.google.com"
|
||||
elif(ip_version == 6):
|
||||
HOST = "ipv6.google.com"
|
||||
try:
|
||||
s = socket.create_connection((HOST, 80), 2)
|
||||
return True
|
||||
except:
|
||||
pass
|
||||
return False
|
||||
|
||||
lostRate = {}
|
||||
lostRate = {
|
||||
'10010': 0.0,
|
||||
'189': 0.0,
|
||||
'10086': 0.0
|
||||
}
|
||||
def _ping_thread(host, mark):
|
||||
output = os.popen('ping -O %s &' % host)
|
||||
lostCount = 0
|
||||
@ -175,33 +179,33 @@ def _ping_thread(host, mark):
|
||||
startTime = endTime
|
||||
|
||||
def get_packetLostRate():
|
||||
t1 = threading.Thread(
|
||||
target=_ping_thread,
|
||||
kwargs={
|
||||
'host': 'www.10010.com',
|
||||
'mark': '10010'
|
||||
}
|
||||
)
|
||||
t2 = threading.Thread(
|
||||
target=_ping_thread,
|
||||
kwargs={
|
||||
'host': 'www.189.cn',
|
||||
'mark': '189'
|
||||
}
|
||||
)
|
||||
t3 = threading.Thread(
|
||||
target=_ping_thread,
|
||||
kwargs={
|
||||
'host': 'bj.10086.cn',
|
||||
'mark': '10086'
|
||||
}
|
||||
)
|
||||
t1.setDaemon(True)
|
||||
t2.setDaemon(True)
|
||||
t3.setDaemon(True)
|
||||
t1.start()
|
||||
t2.start()
|
||||
t3.start()
|
||||
t1 = threading.Thread(
|
||||
target=_ping_thread,
|
||||
kwargs={
|
||||
'host': 'www.10010.com',
|
||||
'mark': '10010'
|
||||
}
|
||||
)
|
||||
t2 = threading.Thread(
|
||||
target=_ping_thread,
|
||||
kwargs={
|
||||
'host': 'www.189.cn',
|
||||
'mark': '189'
|
||||
}
|
||||
)
|
||||
t3 = threading.Thread(
|
||||
target=_ping_thread,
|
||||
kwargs={
|
||||
'host': 'bj.10086.cn',
|
||||
'mark': '10086'
|
||||
}
|
||||
)
|
||||
t1.setDaemon(True)
|
||||
t2.setDaemon(True)
|
||||
t3.setDaemon(True)
|
||||
t1.start()
|
||||
t2.start()
|
||||
t3.start()
|
||||
|
||||
if __name__ == '__main__':
|
||||
for argc in sys.argv:
|
||||
@ -217,80 +221,83 @@ if __name__ == '__main__':
|
||||
INTERVAL = int(argc.split('INTERVAL=')[-1])
|
||||
socket.setdefaulttimeout(30)
|
||||
while 1:
|
||||
try:
|
||||
print("Connecting...")
|
||||
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
s.connect((SERVER, PORT))
|
||||
data = s.recv(1024)
|
||||
if data.find("Authentication required") > -1:
|
||||
s.send(USER + ':' + PASSWORD + '\n')
|
||||
data = s.recv(1024)
|
||||
if data.find("Authentication successful") < 0:
|
||||
print(data)
|
||||
raise socket.error
|
||||
else:
|
||||
print(data)
|
||||
raise socket.error
|
||||
try:
|
||||
print("Connecting...")
|
||||
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
s.connect((SERVER, PORT))
|
||||
data = s.recv(1024)
|
||||
if data.find("Authentication required") > -1:
|
||||
s.send(USER + ':' + PASSWORD + '\n')
|
||||
data = s.recv(1024)
|
||||
if data.find("Authentication successful") < 0:
|
||||
print(data)
|
||||
raise socket.error
|
||||
else:
|
||||
print(data)
|
||||
raise socket.error
|
||||
|
||||
print(data)
|
||||
data = s.recv(1024)
|
||||
print(data)
|
||||
print(data)
|
||||
data = s.recv(1024)
|
||||
print(data)
|
||||
|
||||
timer = 0
|
||||
check_ip = 0
|
||||
if data.find("IPv4") > -1:
|
||||
check_ip = 6
|
||||
elif data.find("IPv6") > -1:
|
||||
check_ip = 4
|
||||
else:
|
||||
print(data)
|
||||
raise socket.error
|
||||
timer = 0
|
||||
check_ip = 0
|
||||
if data.find("IPv4") > -1:
|
||||
check_ip = 6
|
||||
elif data.find("IPv6") > -1:
|
||||
check_ip = 4
|
||||
else:
|
||||
print(data)
|
||||
raise socket.error
|
||||
|
||||
traffic = Traffic()
|
||||
traffic.get()
|
||||
while 1:
|
||||
CPU = get_cpu()
|
||||
NetRx, NetTx = traffic.get()
|
||||
NET_IN, NET_OUT = liuliang()
|
||||
Uptime = get_uptime()
|
||||
Load_1, Load_5, Load_15 = os.getloadavg()
|
||||
MemoryTotal, MemoryUsed, SwapTotal, SwapFree = get_memory()
|
||||
HDDTotal, HDDUsed = get_hdd()
|
||||
IP_STATUS = ip_status()
|
||||
traffic = Traffic()
|
||||
traffic.get()
|
||||
while 1:
|
||||
CPU = get_cpu()
|
||||
NetRx, NetTx = traffic.get()
|
||||
NET_IN, NET_OUT = liuliang()
|
||||
Uptime = get_uptime()
|
||||
Load_1, Load_5, Load_15 = os.getloadavg()
|
||||
MemoryTotal, MemoryUsed, SwapTotal, SwapFree = get_memory()
|
||||
HDDTotal, HDDUsed = get_hdd()
|
||||
IP_STATUS = ip_status()
|
||||
|
||||
array = {}
|
||||
if not timer:
|
||||
array['online' + str(check_ip)] = get_network(check_ip)
|
||||
timer = 10
|
||||
else:
|
||||
timer -= 1*INTERVAL
|
||||
array = {}
|
||||
if not timer:
|
||||
array['online' + str(check_ip)] = get_network(check_ip)
|
||||
timer = 10
|
||||
else:
|
||||
timer -= 1*INTERVAL
|
||||
|
||||
array['uptime'] = Uptime
|
||||
array['load_1'] = Load_1
|
||||
array['load_5'] = Load_5
|
||||
array['load_15'] = Load_15
|
||||
array['memory_total'] = MemoryTotal
|
||||
array['memory_used'] = MemoryUsed
|
||||
array['swap_total'] = SwapTotal
|
||||
array['swap_used'] = SwapTotal - SwapFree
|
||||
array['hdd_total'] = HDDTotal
|
||||
array['hdd_used'] = HDDUsed
|
||||
array['cpu'] = CPU
|
||||
array['network_rx'] = NetRx
|
||||
array['network_tx'] = NetTx
|
||||
array['network_in'] = NET_IN
|
||||
array['network_out'] = NET_OUT
|
||||
array['ip_status'] = IP_STATUS
|
||||
array['uptime'] = Uptime
|
||||
array['load_1'] = Load_1
|
||||
array['load_5'] = Load_5
|
||||
array['load_15'] = Load_15
|
||||
array['memory_total'] = MemoryTotal
|
||||
array['memory_used'] = MemoryUsed
|
||||
array['swap_total'] = SwapTotal
|
||||
array['swap_used'] = SwapTotal - SwapFree
|
||||
array['hdd_total'] = HDDTotal
|
||||
array['hdd_used'] = HDDUsed
|
||||
array['cpu'] = CPU
|
||||
array['network_rx'] = NetRx
|
||||
array['network_tx'] = NetTx
|
||||
array['network_in'] = NET_IN
|
||||
array['network_out'] = NET_OUT
|
||||
array['ip_status'] = IP_STATUS
|
||||
array['ping_10010'] = lostRate.get('10010') * 100
|
||||
array['ping_189'] = lostRate.get('189') * 100
|
||||
array['ping_10086'] = lostRate.get('10086') * 100
|
||||
|
||||
s.send("update " + json.dumps(array) + "\n")
|
||||
except KeyboardInterrupt:
|
||||
raise
|
||||
except socket.error:
|
||||
print("Disconnected...")
|
||||
# keep on trying after a disconnect
|
||||
s.close()
|
||||
time.sleep(3)
|
||||
except Exception as e:
|
||||
print("Caught Exception:", e)
|
||||
s.close()
|
||||
time.sleep(3)
|
||||
s.send("update " + json.dumps(array) + "\n")
|
||||
except KeyboardInterrupt:
|
||||
raise
|
||||
except socket.error:
|
||||
print("Disconnected...")
|
||||
# keep on trying after a disconnect
|
||||
s.close()
|
||||
time.sleep(3)
|
||||
except Exception as e:
|
||||
print("Caught Exception:", e)
|
||||
s.close()
|
||||
time.sleep(3)
|
||||
|
@ -3,7 +3,7 @@
|
||||
# 依赖于psutil跨平台库:
|
||||
# 支持Python版本:2.6 to 3.5 (users of Python 2.4 and 2.5 may use 2.1.3 version)
|
||||
# 支持操作系统: Linux, Windows, OSX, Sun Solaris, FreeBSD, OpenBSD and NetBSD, both 32-bit and 64-bit architectures
|
||||
# 时间: 20180312
|
||||
# 时间: 20180828
|
||||
|
||||
SERVER = "127.0.0.1"
|
||||
PORT = 35601
|
||||
@ -22,64 +22,64 @@ import sys
|
||||
import threading
|
||||
|
||||
def get_uptime():
|
||||
return int(time.time() - psutil.boot_time())
|
||||
return int(time.time() - psutil.boot_time())
|
||||
|
||||
def get_memory():
|
||||
Mem = psutil.virtual_memory()
|
||||
try:
|
||||
MemUsed = Mem.total - (Mem.cached + Mem.free)
|
||||
except:
|
||||
MemUsed = Mem.total - Mem.free
|
||||
return int(Mem.total/1024.0), int(MemUsed/1024.0)
|
||||
Mem = psutil.virtual_memory()
|
||||
try:
|
||||
MemUsed = Mem.total - (Mem.cached + Mem.free)
|
||||
except:
|
||||
MemUsed = Mem.total - Mem.free
|
||||
return int(Mem.total/1024.0), int(MemUsed/1024.0)
|
||||
|
||||
def get_swap():
|
||||
Mem = psutil.swap_memory()
|
||||
return int(Mem.total/1024.0), int(Mem.used/1024.0)
|
||||
Mem = psutil.swap_memory()
|
||||
return int(Mem.total/1024.0), int(Mem.used/1024.0)
|
||||
|
||||
def get_hdd():
|
||||
valid_fs = [ "ext4", "ext3", "ext2", "reiserfs", "jfs", "btrfs", "fuseblk", "zfs", "simfs", "ntfs", "fat32", "exfat", "xfs" ]
|
||||
disks = dict()
|
||||
size = 0
|
||||
used = 0
|
||||
for disk in psutil.disk_partitions():
|
||||
if not disk.device in disks and disk.fstype.lower() in valid_fs:
|
||||
disks[disk.device] = disk.mountpoint
|
||||
for disk in disks.itervalues():
|
||||
usage = psutil.disk_usage(disk)
|
||||
size += usage.total
|
||||
used += usage.used
|
||||
return int(size/1024.0/1024.0), int(used/1024.0/1024.0)
|
||||
valid_fs = [ "ext4", "ext3", "ext2", "reiserfs", "jfs", "btrfs", "fuseblk", "zfs", "simfs", "ntfs", "fat32", "exfat", "xfs" ]
|
||||
disks = dict()
|
||||
size = 0
|
||||
used = 0
|
||||
for disk in psutil.disk_partitions():
|
||||
if not disk.device in disks and disk.fstype.lower() in valid_fs:
|
||||
disks[disk.device] = disk.mountpoint
|
||||
for disk in disks.itervalues():
|
||||
usage = psutil.disk_usage(disk)
|
||||
size += usage.total
|
||||
used += usage.used
|
||||
return int(size/1024.0/1024.0), int(used/1024.0/1024.0)
|
||||
|
||||
def get_cpu():
|
||||
return psutil.cpu_percent(interval=INTERVAL)
|
||||
return psutil.cpu_percent(interval=INTERVAL)
|
||||
|
||||
class Traffic:
|
||||
def __init__(self):
|
||||
self.rx = collections.deque(maxlen=10)
|
||||
self.tx = collections.deque(maxlen=10)
|
||||
def get(self):
|
||||
avgrx = 0; avgtx = 0
|
||||
for name, stats in psutil.net_io_counters(pernic=True).iteritems():
|
||||
if name == "lo" or name.find("tun") > -1 \
|
||||
or name.find("docker") > -1 or name.find("veth") > -1 \
|
||||
or name.find("br-") > -1:
|
||||
continue
|
||||
avgrx += stats.bytes_recv
|
||||
avgtx += stats.bytes_sent
|
||||
def __init__(self):
|
||||
self.rx = collections.deque(maxlen=10)
|
||||
self.tx = collections.deque(maxlen=10)
|
||||
def get(self):
|
||||
avgrx = 0; avgtx = 0
|
||||
for name, stats in psutil.net_io_counters(pernic=True).iteritems():
|
||||
if name == "lo" or name.find("tun") > -1 \
|
||||
or name.find("docker") > -1 or name.find("veth") > -1 \
|
||||
or name.find("br-") > -1:
|
||||
continue
|
||||
avgrx += stats.bytes_recv
|
||||
avgtx += stats.bytes_sent
|
||||
|
||||
self.rx.append(avgrx)
|
||||
self.tx.append(avgtx)
|
||||
avgrx = 0; avgtx = 0
|
||||
self.rx.append(avgrx)
|
||||
self.tx.append(avgtx)
|
||||
avgrx = 0; avgtx = 0
|
||||
|
||||
l = len(self.rx)
|
||||
for x in range(l - 1):
|
||||
avgrx += self.rx[x+1] - self.rx[x]
|
||||
avgtx += self.tx[x+1] - self.tx[x]
|
||||
l = len(self.rx)
|
||||
for x in range(l - 1):
|
||||
avgrx += self.rx[x+1] - self.rx[x]
|
||||
avgtx += self.tx[x+1] - self.tx[x]
|
||||
|
||||
avgrx = int(avgrx / l / INTERVAL)
|
||||
avgtx = int(avgtx / l / INTERVAL)
|
||||
avgrx = int(avgrx / l / INTERVAL)
|
||||
avgtx = int(avgtx / l / INTERVAL)
|
||||
|
||||
return avgrx, avgtx
|
||||
return avgrx, avgtx
|
||||
|
||||
def liuliang():
|
||||
NET_IN = 0
|
||||
@ -87,8 +87,8 @@ def liuliang():
|
||||
net = psutil.net_io_counters(pernic=True)
|
||||
for k, v in net.items():
|
||||
if k == 'lo' or 'tun' in k \
|
||||
or 'br-' in k \
|
||||
or 'docker' in k or 'veth' in k:
|
||||
or 'br-' in k \
|
||||
or 'docker' in k or 'veth' in k:
|
||||
continue
|
||||
else:
|
||||
NET_IN += v[1]
|
||||
@ -96,35 +96,39 @@ def liuliang():
|
||||
return NET_IN, NET_OUT
|
||||
|
||||
def ip_status():
|
||||
object_check = ['www.10010.com', 'www.189.cn', 'www.10086.cn']
|
||||
ip_check = 0
|
||||
for i in object_check:
|
||||
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
s.settimeout(1)
|
||||
try:
|
||||
s.connect((i, 80))
|
||||
except:
|
||||
ip_check += 1
|
||||
s.close()
|
||||
del s
|
||||
if ip_check >= 2:
|
||||
return False
|
||||
else:
|
||||
return True
|
||||
object_check = ['www.10010.com', 'www.189.cn', 'www.10086.cn']
|
||||
ip_check = 0
|
||||
for i in object_check:
|
||||
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
s.settimeout(1)
|
||||
try:
|
||||
s.connect((i, 80))
|
||||
except:
|
||||
ip_check += 1
|
||||
s.close()
|
||||
del s
|
||||
if ip_check >= 2:
|
||||
return False
|
||||
else:
|
||||
return True
|
||||
|
||||
def get_network(ip_version):
|
||||
if(ip_version == 4):
|
||||
HOST = "ipv4.google.com"
|
||||
elif(ip_version == 6):
|
||||
HOST = "ipv6.google.com"
|
||||
try:
|
||||
s = socket.create_connection((HOST, 80), 2)
|
||||
return True
|
||||
except:
|
||||
pass
|
||||
return False
|
||||
if(ip_version == 4):
|
||||
HOST = "ipv4.google.com"
|
||||
elif(ip_version == 6):
|
||||
HOST = "ipv6.google.com"
|
||||
try:
|
||||
s = socket.create_connection((HOST, 80), 2)
|
||||
return True
|
||||
except:
|
||||
pass
|
||||
return False
|
||||
|
||||
lostRate = {}
|
||||
lostRate = {
|
||||
'10010': 0.0,
|
||||
'189': 0.0,
|
||||
'10086': 0.0
|
||||
}
|
||||
def _ping_thread(host, mark):
|
||||
output = os.popen('ping -O %s &' % host if 'linux' in sys.platform else 'ping %s -t &' % host)
|
||||
lostCount = 0
|
||||
@ -144,33 +148,33 @@ def _ping_thread(host, mark):
|
||||
startTime = endTime
|
||||
|
||||
def get_packetLostRate():
|
||||
t1 = threading.Thread(
|
||||
target=_ping_thread,
|
||||
kwargs={
|
||||
'host': 'www.10010.com',
|
||||
'mark': '10010'
|
||||
}
|
||||
)
|
||||
t2 = threading.Thread(
|
||||
target=_ping_thread,
|
||||
kwargs={
|
||||
'host': 'www.189.cn',
|
||||
'mark': '189'
|
||||
}
|
||||
)
|
||||
t3 = threading.Thread(
|
||||
target=_ping_thread,
|
||||
kwargs={
|
||||
'host': 'bj.10086.cn',
|
||||
'mark': '10086'
|
||||
}
|
||||
)
|
||||
t1.setDaemon(True)
|
||||
t2.setDaemon(True)
|
||||
t3.setDaemon(True)
|
||||
t1.start()
|
||||
t2.start()
|
||||
t3.start()
|
||||
t1 = threading.Thread(
|
||||
target=_ping_thread,
|
||||
kwargs={
|
||||
'host': 'www.10010.com',
|
||||
'mark': '10010'
|
||||
}
|
||||
)
|
||||
t2 = threading.Thread(
|
||||
target=_ping_thread,
|
||||
kwargs={
|
||||
'host': 'www.189.cn',
|
||||
'mark': '189'
|
||||
}
|
||||
)
|
||||
t3 = threading.Thread(
|
||||
target=_ping_thread,
|
||||
kwargs={
|
||||
'host': 'bj.10086.cn',
|
||||
'mark': '10086'
|
||||
}
|
||||
)
|
||||
t1.setDaemon(True)
|
||||
t2.setDaemon(True)
|
||||
t3.setDaemon(True)
|
||||
t1.start()
|
||||
t2.start()
|
||||
t3.start()
|
||||
|
||||
if __name__ == '__main__':
|
||||
for argc in sys.argv:
|
||||
@ -186,81 +190,84 @@ if __name__ == '__main__':
|
||||
INTERVAL = int(argc.split('INTERVAL=')[-1])
|
||||
socket.setdefaulttimeout(30)
|
||||
while 1:
|
||||
try:
|
||||
print("Connecting...")
|
||||
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
s.connect((SERVER, PORT))
|
||||
data = s.recv(1024)
|
||||
if data.find("Authentication required") > -1:
|
||||
s.send(USER + ':' + PASSWORD + '\n')
|
||||
data = s.recv(1024)
|
||||
if data.find("Authentication successful") < 0:
|
||||
print(data)
|
||||
raise socket.error
|
||||
else:
|
||||
print(data)
|
||||
raise socket.error
|
||||
try:
|
||||
print("Connecting...")
|
||||
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
s.connect((SERVER, PORT))
|
||||
data = s.recv(1024)
|
||||
if data.find("Authentication required") > -1:
|
||||
s.send(USER + ':' + PASSWORD + '\n')
|
||||
data = s.recv(1024)
|
||||
if data.find("Authentication successful") < 0:
|
||||
print(data)
|
||||
raise socket.error
|
||||
else:
|
||||
print(data)
|
||||
raise socket.error
|
||||
|
||||
print(data)
|
||||
data = s.recv(1024)
|
||||
print(data)
|
||||
print(data)
|
||||
data = s.recv(1024)
|
||||
print(data)
|
||||
|
||||
timer = 0
|
||||
check_ip = 0
|
||||
if data.find("IPv4") > -1:
|
||||
check_ip = 6
|
||||
elif data.find("IPv6") > -1:
|
||||
check_ip = 4
|
||||
else:
|
||||
print(data)
|
||||
raise socket.error
|
||||
timer = 0
|
||||
check_ip = 0
|
||||
if data.find("IPv4") > -1:
|
||||
check_ip = 6
|
||||
elif data.find("IPv6") > -1:
|
||||
check_ip = 4
|
||||
else:
|
||||
print(data)
|
||||
raise socket.error
|
||||
|
||||
traffic = Traffic()
|
||||
traffic.get()
|
||||
while 1:
|
||||
CPU = get_cpu()
|
||||
NetRx, NetTx = traffic.get()
|
||||
NET_IN, NET_OUT = liuliang()
|
||||
Uptime = get_uptime()
|
||||
Load_1, Load_5, Load_15 = os.getloadavg() if 'linux' in sys.platform else (0.0, 0.0, 0.0)
|
||||
MemoryTotal, MemoryUsed = get_memory()
|
||||
SwapTotal, SwapUsed = get_swap()
|
||||
HDDTotal, HDDUsed = get_hdd()
|
||||
IP_STATUS = ip_status()
|
||||
traffic = Traffic()
|
||||
traffic.get()
|
||||
while 1:
|
||||
CPU = get_cpu()
|
||||
NetRx, NetTx = traffic.get()
|
||||
NET_IN, NET_OUT = liuliang()
|
||||
Uptime = get_uptime()
|
||||
Load_1, Load_5, Load_15 = os.getloadavg() if 'linux' in sys.platform else (0.0, 0.0, 0.0)
|
||||
MemoryTotal, MemoryUsed = get_memory()
|
||||
SwapTotal, SwapUsed = get_swap()
|
||||
HDDTotal, HDDUsed = get_hdd()
|
||||
IP_STATUS = ip_status()
|
||||
|
||||
array = {}
|
||||
if not timer:
|
||||
array['online' + str(check_ip)] = get_network(check_ip)
|
||||
timer = 10
|
||||
else:
|
||||
timer -= 1*INTERVAL
|
||||
array = {}
|
||||
if not timer:
|
||||
array['online' + str(check_ip)] = get_network(check_ip)
|
||||
timer = 10
|
||||
else:
|
||||
timer -= 1*INTERVAL
|
||||
|
||||
array['uptime'] = Uptime
|
||||
array['load_1'] = Load_1
|
||||
array['load_5'] = Load_5
|
||||
array['load_15'] = Load_15
|
||||
array['memory_total'] = MemoryTotal
|
||||
array['memory_used'] = MemoryUsed
|
||||
array['swap_total'] = SwapTotal
|
||||
array['swap_used'] = SwapUsed
|
||||
array['hdd_total'] = HDDTotal
|
||||
array['hdd_used'] = HDDUsed
|
||||
array['cpu'] = CPU
|
||||
array['network_rx'] = NetRx
|
||||
array['network_tx'] = NetTx
|
||||
array['network_in'] = NET_IN
|
||||
array['network_out'] = NET_OUT
|
||||
array['ip_status'] = IP_STATUS
|
||||
array['uptime'] = Uptime
|
||||
array['load_1'] = Load_1
|
||||
array['load_5'] = Load_5
|
||||
array['load_15'] = Load_15
|
||||
array['memory_total'] = MemoryTotal
|
||||
array['memory_used'] = MemoryUsed
|
||||
array['swap_total'] = SwapTotal
|
||||
array['swap_used'] = SwapUsed
|
||||
array['hdd_total'] = HDDTotal
|
||||
array['hdd_used'] = HDDUsed
|
||||
array['cpu'] = CPU
|
||||
array['network_rx'] = NetRx
|
||||
array['network_tx'] = NetTx
|
||||
array['network_in'] = NET_IN
|
||||
array['network_out'] = NET_OUT
|
||||
array['ip_status'] = IP_STATUS
|
||||
array['ping_10010'] = lostRate.get('10010') * 100
|
||||
array['ping_189'] = lostRate.get('189') * 100
|
||||
array['ping_10086'] = lostRate.get('10086') * 100
|
||||
|
||||
s.send("update " + json.dumps(array) + "\n")
|
||||
except KeyboardInterrupt:
|
||||
raise
|
||||
except socket.error:
|
||||
print("Disconnected...")
|
||||
# keep on trying after a disconnect
|
||||
s.close()
|
||||
time.sleep(3)
|
||||
except Exception as e:
|
||||
print("Caught Exception:", e)
|
||||
s.close()
|
||||
time.sleep(3)
|
||||
s.send("update " + json.dumps(array) + "\n")
|
||||
except KeyboardInterrupt:
|
||||
raise
|
||||
except socket.error:
|
||||
print("Disconnected...")
|
||||
# keep on trying after a disconnect
|
||||
s.close()
|
||||
time.sleep(3)
|
||||
except Exception as e:
|
||||
print("Caught Exception:", e)
|
||||
s.close()
|
||||
time.sleep(3)
|
||||
|
Loading…
x
Reference in New Issue
Block a user