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 的进程管理工具supervisor使用指南
Sep 18 Python
Python 使用SMTP发送邮件的代码小结
Sep 21 Python
python实现求特征选择的信息增益
Dec 18 Python
Python 学习教程之networkx
Apr 15 Python
解决python执行不输出系统命令弹框的问题
Jun 24 Python
python3.7实现云之讯、聚合短信平台的短信发送功能
Sep 26 Python
python psutil监控进程实例
Dec 17 Python
Python Selenium截图功能实现代码
Apr 26 Python
python脚本监控logstash进程并邮件告警实例
Apr 28 Python
Python字符串格式化常用手段及注意事项
Jun 17 Python
Pycharm无法打开双击没反应的问题及解决方案
Aug 17 Python
Python直接赋值及深浅拷贝原理详解
Sep 05 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
PHP+Mysql日期时间如何转换(UNIX时间戳和格式化日期)
2012/07/15 PHP
php变量范围介绍
2012/10/15 PHP
Zend Framework教程之Autoloading用法详解
2016/03/08 PHP
PHP封装的数据库模型Model类完整示例【基于PDO】
2019/03/14 PHP
PHP实现创建一个RPC服务操作示例
2020/02/23 PHP
ie 处理 gif动画 的onload 事件的一个 bug
2007/04/12 Javascript
js常用排序实现代码
2010/12/28 Javascript
表单JS弹出填写提示效果代码
2011/04/16 Javascript
js 代码优化点滴记录
2012/02/19 Javascript
关于jQuery参考实例 1.0 jQuery的哲学
2013/04/07 Javascript
JavaScript按位运算符的应用简析
2014/02/04 Javascript
微信小程序上滑加载下拉刷新(onscrollLower)分批加载数据(二)
2017/05/11 Javascript
ES6新增数据结构WeakSet的用法详解
2017/08/07 Javascript
JS实现去除数组中重复json的方法示例
2017/12/21 Javascript
vue.js实现点击后动态添加class及删除同级class的实现代码
2018/04/04 Javascript
解决vue中使用swiper插件问题及swiper在vue中的用法
2018/04/04 Javascript
JavaScript中使用Spread运算符的八种方法总结
2020/06/18 Javascript
JS实现简单移动端鼠标拖拽
2020/07/23 Javascript
JS页面动态绘图工具SVG,Canvas,VML介简介
2020/10/16 Javascript
[04:50]DOTA2亚洲邀请赛小组赛第四日 TOP10精彩集锦
2015/02/02 DOTA
[33:15]2018DOTA2亚洲邀请赛3月30日 小组赛B组 VP VS Mineski
2018/03/31 DOTA
Python 异常处理实例详解
2014/03/12 Python
python pandas dataframe 按列或者按行合并的方法
2018/04/12 Python
Django 实现图片上传和显示过程详解
2019/07/18 Python
python Matplotlib底图中鼠标滑过显示隐藏内容的实例代码
2019/07/31 Python
python 使用递归实现打印一个数字的每一位示例
2020/02/27 Python
雪花秀美国官方网站:韩国著名草本护肤化妆品品牌
2016/10/19 全球购物
在Ajax应用中信息是如何在浏览器和服务器之间传递的
2016/05/31 面试题
小学生考试获奖感言
2014/01/30 职场文书
春风行动实施方案
2014/03/28 职场文书
双方协议书
2014/04/22 职场文书
记账会计岗位职责
2014/06/16 职场文书
楚门的世界观后感
2015/06/03 职场文书
维护民族团结心得体会2016
2016/01/15 职场文书
python开发实时可视化仪表盘的示例
2021/05/07 Python
Navicat for MySQL的使用教程详解
2021/05/27 MySQL