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 列表(List)操作方法详解
Mar 11 Python
Python base64编码解码实例
Jun 21 Python
windows及linux环境下永久修改pip镜像源的方法
Nov 28 Python
python爬虫之自动登录与验证码识别
Jun 15 Python
使用Python监视指定目录下文件变更的方法
Oct 15 Python
Python面向对象之类和对象属性的增删改查操作示例
Dec 14 Python
Python3中_(下划线)和__(双下划线)的用途和区别
Apr 26 Python
解决pyqt5中QToolButton无法使用的问题
Jun 21 Python
python 正则表达式贪婪模式与非贪婪模式原理、用法实例分析
Oct 14 Python
python创建学生成绩管理系统
Nov 22 Python
python实现修改固定模式的字符串内容操作示例
Dec 30 Python
python sklearn包——混淆矩阵、分类报告等自动生成方式
Feb 28 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
wordpress之wp-settings.php
2007/08/17 PHP
ExtJS与PHP、MySQL实现存储的方法
2010/04/02 PHP
PHP实现Javascript中的escape及unescape函数代码分享
2015/02/10 PHP
php写入、删除与复制文件的方法
2015/06/20 PHP
PHP中session跨子域的三种实现方法
2016/07/25 PHP
Laravel 不同生产环境服务器的判断实践
2019/10/15 PHP
firefox下input type="file"的size是多大
2011/10/24 Javascript
解决火狐浏览器下JS setTimeout函数不兼容失效不执行的方法
2012/11/14 Javascript
基于JQuery实现滚动到页面底端时自动加载更多信息
2014/01/31 Javascript
跟我学Nodejs(二)--- Node.js事件模块
2014/05/21 NodeJs
使用ajaxfileupload.js实现ajax上传文件php版
2014/06/26 Javascript
JavaScript事件委托技术实例分析
2015/02/06 Javascript
BootstrapTable与KnockoutJS相结合实现增删改查功能【一】
2016/05/10 Javascript
Jquery中map函数的用法
2016/06/03 Javascript
深入浅析js原型链和vue构造函数
2018/10/25 Javascript
通过vue手动封装on、emit、off的代码详解
2019/05/29 Javascript
js中script的上下放置区别,Dom的增删改创建操作实例分析
2019/12/16 Javascript
js实现div色块拖动录制
2020/01/16 Javascript
详解vue路由
2020/08/05 Javascript
[02:32]DOTA2亚洲邀请赛 VG战队巡礼
2015/02/03 DOTA
python版微信跳一跳游戏辅助
2018/01/11 Python
详解Python对JSON中的特殊类型进行Encoder
2019/07/15 Python
关于numpy数组轴的使用详解
2019/12/05 Python
Django使用Celery加redis执行异步任务的实例内容
2020/02/20 Python
Pyqt助手安装PyQt5帮助文档过程图解
2020/11/20 Python
Python常用断言函数实例汇总
2020/11/30 Python
Penhaligon’s英国官网:成立于1870年的英国香水制造商
2021/02/18 全球购物
什么叫做SQL注入,如何防止
2016/10/04 面试题
鲜花方阵解说词
2014/02/13 职场文书
社区志愿者活动总结
2014/06/26 职场文书
公司行政管理制度范本
2015/08/05 职场文书
老舍《猫》教学反思
2016/02/17 职场文书
2019财务毕业实习报告
2019/06/27 职场文书
nginx如何将http访问的网站改成https访问
2021/03/31 Servers
Ajax请求超时与网络异常处理图文详解
2021/05/23 Javascript
MongoDB误操作后使用oplog恢复数据
2022/04/11 MongoDB