国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Python > 正文

python 多線程實(shí)現(xiàn)檢測(cè)服務(wù)器在線情況

2019-11-25 17:01:22
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

需要ping一個(gè)網(wǎng)段所有機(jī)器的在線情況,shell腳步運(yùn)行時(shí)間太長(zhǎng),用python寫(xiě)個(gè)多線程ping吧,代碼如下:

#!/usr/bin/python#coding=utf-8'''Created on 2015-8-4@author: Administrator'''import threading,subprocessfrom time import ctime,sleep,timeimport Queuequeue=Queue.Queue()class ThreadUrl(threading.Thread):  def __init__(self,queue):    threading.Thread.__init__(self)    self.queue=queue  def run(self):    while True:      host=self.queue.get()      ret=subprocess.call('ping -c 1 -w 1 '+host,shell=True,stdout=open('/dev/null','w'))      if ret:        print "%s is down" % host      else:        print "%s is up" % host      self.queue.task_done()def main():  for i in range(100):    t=ThreadUrl(queue)    t.setDaemon(True)    t.start()  for host in b:    queue.put(host)  queue.join()a=[]with open('ip.txt') as f:  for line in f.readlines():    a.append(line.split()[0])  #print ab=['192.168.3.'+str(x) for x in range(1,254)] #ping 192.168.3 網(wǎng)段start=time()main()print "Elasped Time:%s" % (time()-start)#t2=threading.Thread(target=move,args=('fff',))#threads.append(t2)'''for i in a:  print ctime()  ping(i)  sleep(1)if __name__ == '__main__':  for t in range(len(a)):    #t.setDaemon(True)    threads[t].start()    #t.join()  print "All over %s" % ctime()'''

效果如下:

平一個(gè)網(wǎng)段只要2.7s左右,夠快?。?!

再給大家分享一個(gè)檢測(cè)外網(wǎng)服務(wù)器的方法及代碼

經(jīng)常使用python檢測(cè)服務(wù)器是否能ping通, 程序是否正常運(yùn)行(檢測(cè)對(duì)應(yīng)的端口是否正常)

    以前使用shell腳本的寫(xiě)法如下:

    PINGRET=$( ping www.baidu.com -c 2 | grep "icmp_" );  if [ -z $PINGRET ]; then echo "ping fail"; else echo "ping ok"; fi

    或者

     ping -c 2

    代碼示例:

#!/usr/bin/python# encoding=utf-8# Filename: net_is_normal.pyimport osimport socketimport subprocess  #判斷網(wǎng)絡(luò)是否正常server='www.baidu.com'#檢測(cè)服務(wù)器是否能ping通,在程序運(yùn)行時(shí),會(huì)在標(biāo)準(zhǔn)輸出中顯示命令的運(yùn)行信息def pingServer(server):  result=os.system('ping '+server+' -c 2')  if result:    print '服務(wù)器%s ping fail' % server  else:    print '服務(wù)器%s ping ok' % server  print result #把程序輸出定位到/dev/null,否則會(huì)在程序運(yùn)行時(shí)會(huì)在標(biāo)準(zhǔn)輸出中顯示命令的運(yùn)行信息 def pingServerCall(server):  fnull = open(os.devnull, 'w')  result = subprocess.call('ping '+server+' -c 2', shell = True, stdout = fnull, stderr = fnull)  if result:    print '服務(wù)器%s ping fail' % server  else:    print '服務(wù)器%s ping ok' % server  fnull.close()   #可用于檢測(cè)程序是否正常,如檢測(cè)redis是否正常,即檢測(cè)redis的6379端口是否正常#檢測(cè)ssh是否正常,即檢測(cè)ssh的22端口是否正常def check_aliveness(ip, port):  sk = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  sk.settimeout(1)  try:    sk.connect((ip,port))    print 'server %s %d service is OK!' %(ip,port)    return True  except Exception:    print 'server %s %d service is NOT OK!' %(ip,port)    return False  finally:    sk.close()  return False   if __name__=='__main__':  pingServerCall(server)  pingServer(server)  check_aliveness('192.168.230.128', 6379)

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 祁阳县| 武汉市| 旌德县| 太仆寺旗| 阿拉尔市| 鸡泽县| 通海县| 扎鲁特旗| 休宁县| 陆川县| 永春县| 拉孜县| 石台县| 九龙城区| 浦北县| 阿勒泰市| 精河县| 邵武市| 阿拉善右旗| 尼勒克县| 夏邑县| 本溪| 五常市| 象州县| 沙田区| 威宁| 雅江县| 桦甸市| 阜康市| 乳源| 苗栗市| 冷水江市| 江孜县| 怀远县| 进贤县| 大理市| 阿勒泰市| 宜黄县| 安多县| 汝阳县| 北京市|