python檢測伺服器是否正常

來源:互聯網
上載者:User
經常使用python檢測伺服器是否能ping通, 程式是否正常運行(檢測對應的連接埠是否正常)

以前使用shell指令碼的寫法如下:
複製代碼 代碼如下:


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


或者
複製代碼 代碼如下:


ping -c 2 www.baidu.com|grep "icmp_" && echo 'ping ok' || echo 'ping fail'


程式碼範例:

複製代碼 代碼如下:


#!/usr/bin/python
# encoding=utf-8
# Filename: net_is_normal.py
import os
import socket
import subprocess


#判斷網路是否正常
server='www.baidu.com'
#檢測伺服器是否能ping通,在程式運行時,會在標準輸出中顯示命令的運行資訊
def pingServer(server):
result=os.system('ping '+server+' -c 2')
if result:
print '伺服器%s ping fail' % server
else:
print '伺服器%s ping ok' % server
print result

#把程式輸出定位到/dev/null,否則會在程式運行時會在標準輸出中顯示命令的運行資訊
def pingServerCall(server):
fnull = open(os.devnull, 'w')
result = subprocess.call('ping '+server+' -c 2', shell = True, stdout = fnull, stderr = fnull)
if result:
print '伺服器%s ping fail' % server
else:
print '伺服器%s ping ok' % server
fnull.close()

#可用於檢測程式是否正常,如檢測redis是否正常,即檢測redis的6379連接埠是否正常
#檢測ssh是否正常,即檢測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)

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.