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 ORM框架SQLAlchemy学习笔记之数据添加和事务回滚介绍
Jun 10 Python
Python中return语句用法实例分析
Aug 04 Python
Python导入模块时遇到的错误分析
Aug 30 Python
基于python socketserver框架全面解析
Sep 21 Python
pycharm使用matplotlib.pyplot不显示图形的解决方法
Oct 28 Python
Python小程序 控制鼠标循环点击代码实例
Oct 08 Python
windows中安装Python3.8.0的实现方法
Nov 19 Python
TensorBoard 计算图的查看方式
Feb 15 Python
Python HTMLTestRunner可视化报告实现过程解析
Apr 10 Python
Python捕获异常堆栈信息的几种方法(小结)
May 18 Python
python 基于wx实现音乐播放
Nov 24 Python
Pygame如何使用精灵和碰撞检测
Nov 17 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实现分页,带搜索的分页功能示例
2017/01/07 PHP
PHP基于迭代实现文件夹复制、删除、查看大小等操作的方法
2017/08/11 PHP
解决laravel上传图片之后,目录有图片,但是访问不到(404)的问题
2019/10/14 PHP
070823更新的一个[消息提示框]组件 兼容ie7
2007/08/29 Javascript
jquery 模式对话框终极版实现代码
2009/09/28 Javascript
JQuery验证工具类搜集整理
2013/01/16 Javascript
验证控件与Button的OnClientClick事件详细解析
2013/12/04 Javascript
js中split和replace的用法实例
2015/02/28 Javascript
移动端 一个简单易懂的弹出框
2016/07/06 Javascript
关于javascript原型的修改与重写(覆盖)差别详解
2016/08/31 Javascript
BootStrap 图标icon符号图标glyphicons不正常显示的快速解决办法
2016/12/08 Javascript
深入学习nodejs中的async模块的使用方法
2017/07/12 NodeJs
vue页面离开后执行函数的实例
2018/03/13 Javascript
实例分析Array.from(arr)与[...arr]到底有何不同
2019/04/09 Javascript
详解Webpack4多页应用打包方案
2020/07/16 Javascript
vue 将多个过滤器封装到一个文件中的代码详解
2020/09/05 Javascript
[10:21]2018DOTA2国际邀请赛寻真——Winstrike
2018/08/11 DOTA
pyside写ui界面入门示例
2014/01/22 Python
Python实现利用最大公约数求三个正整数的最小公倍数示例
2017/09/30 Python
python实现微信接口(itchat)详细介绍
2017/10/23 Python
tensorflow 使用flags定义命令行参数的方法
2018/04/23 Python
对Tensorflow中权值和feature map的可视化详解
2018/06/14 Python
python字符串替换re.sub()方法解析
2019/09/18 Python
python logging 日志的级别调整方式
2020/02/21 Python
浅析python标准库中的glob
2020/03/13 Python
Python 在函数上添加包装器
2020/07/28 Python
CSS3 2D模拟实现摩天轮旋转效果
2016/11/16 HTML / CSS
英国百安居装饰建材网上超市:B&Q
2016/09/13 全球购物
北大研究生linux应用求职信
2013/10/29 职场文书
感恩老师演讲稿400字
2014/08/28 职场文书
个人租房协议书范本
2014/09/30 职场文书
店长岗位职责
2015/02/11 职场文书
离婚起诉书范本
2015/05/18 职场文书
2015年会计年终工作总结
2015/05/26 职场文书
详解CSS故障艺术
2021/05/25 HTML / CSS
Python 视频画质增强
2022/04/28 Python