Python Server Check über Klasse
Zur Navigation springen
Zur Suche springen
Daten
- cat server_check.list
waka.xinux.org;80,443,389,636 caprica.xinux.org;80,443,389,636 doom.xinux.org;80,443 saubock.xinux.org;56,78
Skript
#!/usr/bin/python3
import os
import sys
import socket
import datetime
from pythonping import ping
dat_sys=sys.argv[1]
dat=open(dat_sys,"r")
class server_check_class(object):
def __init__(self,hostname,portlist):
self.hostname = hostname
self.portlist = portlist
def __dns_check(self):
try:
ip = socket.gethostbyname(self.hostname)
return 1
except socket.error:
return 0
def host_status(self):
if self.__dns_check():
if ping(self.hostname, timeout=100, count=1):
return 1
else:
return 0
else:
return 0
def port_status(self):
for port in (self.portlist.split(",")):
socket.setdefaulttimeout(1)
start_time = datetime.datetime.now()
try:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
connect = sock.connect_ex((self.hostname, int(port)))
if connect == 0:
print(" port status " + self.hostname + " " + port + " ok")
else:
print(" port status " + self.hostname + " " + port + " not ok")
sock.close()
except socket.error:
print(" port status except" + self.hostname + " " + port + " not ok")
end_time = datetime.datetime.now()
for l in dat:
line = l.rstrip().split(";")
x = server_check_class(line[0],line[1])
if x.host_status():
x.port_status()
else:
print(line[0] + " not reachable")
dat.close()