python检测服务器是否正常


Posted in Python onFebruary 16, 2014

经常使用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)
Python 相关文章推荐
利用Python中SocketServer 实现客户端与服务器间非阻塞通信
Dec 15 Python
利用python将图片转换成excel文档格式
Dec 30 Python
Python读取数据集并消除数据中的空行方法
Jul 12 Python
Python推导式简单示例【列表推导式、字典推导式与集合推导式】
Dec 04 Python
对python判断ip是否可达的实例详解
Jan 31 Python
python中如何实现将数据分成训练集与测试集的方法
Sep 13 Python
python实现在一个画布上画多个子图
Jan 19 Python
python 将视频 通过视频帧转换成时间实例
Apr 23 Python
Python 必须了解的5种高级特征
Sep 10 Python
Python hashlib模块的使用示例
Oct 09 Python
python 数据类型强制转换的总结
Jan 25 Python
浅谈怎么给Python添加类型标注
Jun 08 Python
java直接调用python脚本的例子
Feb 16 #Python
python根据距离和时长计算配速示例
Feb 16 #Python
python根据经纬度计算距离示例
Feb 16 #Python
python转换摩斯密码示例
Feb 16 #Python
python动态监控日志内容的示例
Feb 16 #Python
python缩进区别分析
Feb 15 #Python
python求斐波那契数列示例分享
Feb 14 #Python
You might like
Yii2框架类自动加载机制实例分析
2018/05/02 PHP
Aster vs KG BO3 第一场2.19
2021/03/10 DOTA
jQuery 1.4 15个你应该知道的新特性(译)
2010/01/24 Javascript
jquery控制listbox中项的移动并排序的实现代码
2010/09/28 Javascript
JS对外部文件的加载及对IFRMAME的加载的实现,当加载完成后,指定指向方法(方法回调)
2011/07/04 Javascript
js前台判断开始时间是否小于结束时间
2012/02/23 Javascript
Jquery easyUI 更新行示例
2014/03/06 Javascript
Javascript加载速度慢的解决方案
2014/03/11 Javascript
node.js中的console.timeEnd方法使用说明
2014/12/09 Javascript
微信小程序 常用工具类详解及实例
2017/02/15 Javascript
jQuery实现QQ空间汉字转拼音功能示例
2017/07/10 jQuery
详解vue项目中如何引入全局sass/less变量、function、mixin
2018/06/02 Javascript
详解vue中localStorage的使用方法
2018/11/22 Javascript
Layui 数据表格批量删除和多条件搜索的实例
2019/09/04 Javascript
基于layui内置模块(element常用元素的操作)
2019/09/20 Javascript
python中的__init__ 、__new__、__call__小结
2014/04/25 Python
python持久性管理pickle模块详细介绍
2015/02/18 Python
python实现分析apache和nginx日志文件并输出访客ip列表的方法
2015/04/04 Python
python文本数据相似度的度量
2018/03/12 Python
Python实现微信自动好友验证,自动回复,发送群聊链接方法
2019/02/21 Python
Python3列表List入门知识附实例
2020/02/09 Python
Selenium 滚动页面至元素可见的方法
2020/03/18 Python
python多线程semaphore实现线程数控制的示例
2020/08/10 Python
ROSEFIELD手表荷兰官方网上商店:北欧极简设计女士腕表品牌
2018/01/24 全球购物
奇怪的鱼:Weird Fish
2018/03/18 全球购物
J2EE是技术还是平台还是框架
2016/08/14 面试题
工地门卫岗位职责
2013/12/30 职场文书
饭店工作计划书
2014/01/10 职场文书
酒店大堂副理的职责范文
2014/02/13 职场文书
销售职业生涯规划范文
2014/03/14 职场文书
消防安全责任书
2014/04/14 职场文书
银行职员工作失误检讨书
2014/10/14 职场文书
爱国影片观后感
2015/06/18 职场文书
《全神贯注》教学反思
2016/02/22 职场文书
Django分页器的用法你都了解吗
2021/05/26 Python
Python编程编写完善的命令行工具
2021/09/15 Python