作者:天使犯罪de快乐 | 来源:互联网 | 2017-11-04 08:51
很多大型网站为了减轻压力,避免单点故障,使用了多个服务器(IP)地址来为单一网站提供服务。其中包括使用DNS轮训来实现负载。但是对于管理员而言,如何可以监控这些服务器那些是ok那些是有问题的呢?下面脚本可以帮你实现。importsocket,urllib.parse
很多大型网站为了减轻压力,避免单点故障,使用了多个服务器(IP)地址来为单一网站提供服务。
其中包括使用DNS轮训来实现负载。
但是对于管理员而言,如何可以监控这些服务器那些是ok那些是有问题的呢?
下面脚本可以帮你实现。
- import socket,urllib.parse,configparser,re,sys,http.client,time
-
-
-
-
- def dom2ip(dname):
- iplist=socket.gethostbyname_ex(dname)[2]
- return iplist
-
-
- def parse(url,key):
- zhlist[key]={}
- zhlist[key][\'host\']=a.hostname
- zhlist[key][\'path\']=a.path
- zhlist[key][\'port\']=a.port
- zhlist[key][\'query\']=a.query
- zhlist[key][\'url\']=a.geturl()
- try:
- zhlist[key][\'ips\']=dom2ip(a.hostname)
- except Exception as err:
- print(\'你的配置文件格式有错误,n错误信息:\',err,\'n程序已退出\')
- sys.exit(1)
-
-
-
-
- headers={
- \'User-Agent\':\'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.1 (KHTML, like Gecko)\'
- }
-
-
-
-
- def getinfo(domain,ip,path=\'/\',port=80):
- headers[\'Host\']=domain
- h=http.client.HTTPConnection(ip,port,timeout=8)
- h.request(\'GET\',path,headers=headers)
- r=h.getresponse()
- print(r.getheaders())
- print(\'服务器返回状态\',r.status)
- print(\'服务器返回结果\',r.reason)
- print(\'目标时间:\',r.getheader(\'Date\'))
- print(\'目标Web端:\',r.getheader(\'Server\'))
- print(\'目标网页上次修改时间:\',r.getheader(\'Last-Modified\'))
- print(\'目标内容返回:\',r.getheader(\'Content-Length\'),\'字节\')
- print(\'目标返回编码:\',r.getheader(\'Content-Encoding\'))
- try:
-
-
-
- a=r.getheader(\'Content-Type\')
- b=re.findall(\'charset=(.*)$\',a,re.I)
- for i in b:
- charset=i
- try:
- charset
- res=res.decode(charset,\'ignore\')
- except:
- res=r.read(2048)