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的Django框架中的URL配置与松耦合
Jul 15 Python
Python爬虫DNS解析缓存方法实例分析
Jun 02 Python
Python+tkinter模拟“记住我”自动登录实例代码
Jan 16 Python
Python3.4 tkinter,PIL图片转换
Jun 21 Python
Python生成器generator用法示例
Aug 10 Python
如何利用Boost.Python实现Python C/C++混合编程详解
Nov 08 Python
Django REST Framework序列化外键获取外键的值方法
Jul 26 Python
python如何从文件读取数据及解析
Sep 19 Python
python实现将字符串中的数字提取出来然后求和
Apr 02 Python
Java多线程实现四种方式原理详解
Jun 02 Python
Keras 中Leaky ReLU等高级激活函数的用法
Jul 05 Python
django如何自定义manage.py管理命令
Apr 27 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
收音机鉴频器对声音的影响和频偏分析
2021/03/02 无线电
一棵php的类树(支持无限分类)
2006/10/09 PHP
不用数据库的多用户文件自由上传投票系统(2)
2006/10/09 PHP
php数组声明、遍历、数组全局变量使用小结
2013/06/05 PHP
ThinkPHP3.1查询语言详解
2014/06/19 PHP
浅析PHP中的闭包和匿名函数
2017/12/25 PHP
一个可以随意添加多个序列的tag函数
2009/07/21 Javascript
jquery实现点击TreeView文本父节点展开/折叠子节点
2013/01/10 Javascript
5个可以帮你理解JavaScript核心闭包和作用域的小例子
2014/10/08 Javascript
thinkphp 表名 大小写 窍门
2015/02/01 Javascript
jquery实现无限分级横向导航菜单的方法
2015/03/12 Javascript
封装好的javascript前端分页插件pagination
2016/01/04 Javascript
js点击返回跳转到指定页面实现过程
2020/08/20 Javascript
bootstarp modal框居中显示的实现代码
2017/02/18 Javascript
微信小程序调用PHP后台接口 解析纯html文本
2017/06/13 Javascript
vue-cli 如何打包上线的方法示例
2018/05/08 Javascript
layui table 参数设置方法
2018/08/14 Javascript
原生JS实现旋转轮播图+文字内容切换效果【附源码】
2018/09/29 Javascript
vue输入节流,避免实时请求接口的实例代码
2019/10/30 Javascript
[50:29]2014 DOTA2华西杯精英邀请赛 5 24 DK VS iG
2014/05/26 DOTA
从零学python系列之新版本导入httplib模块报ImportError解决方案
2014/05/23 Python
浅谈Python 中整型对象的存储问题
2016/05/16 Python
python解决js文件utf-8编码乱码问题(推荐)
2018/05/02 Python
python 每天如何定时启动爬虫任务(实现方法分享)
2018/05/21 Python
python并发编程 Process对象的其他属性方法join方法详解
2019/08/20 Python
python导入不同目录下的自定义模块过程解析
2019/11/18 Python
法国在线宠物店:zooplus.fr
2018/02/23 全球购物
法国购买隐形眼镜和眼镜网站:Optical Center
2019/10/08 全球购物
静态成员和非静态成员的区别
2012/05/12 面试题
我们没有写servlet的构造方法,那么容器是怎么创建servlet的实例呢
2013/04/24 面试题
工程造价专业大学生职业生涯规划书
2014/01/18 职场文书
店铺转让协议书
2015/01/29 职场文书
2015年信访维稳工作总结
2015/04/07 职场文书
幼儿园体操比赛口号
2015/12/25 职场文书
Mysql使用全文索引(FullText index)的实例代码
2022/04/03 MySQL
Win10多屏显示如何设置?Win10电脑多屏显示设置操作方法
2022/07/07 数码科技