python 网络设备巡检_python写的一个服务器自动巡检工具
因为公司服务器需要每半个月巡检一次,还要将巡检结果生成图片贴到巡检报告中,每次手动操作相当麻烦。恰好刚学python,于是使用python和java写了一个半自动化的程序,javaq的作用是为了生成巡检图片。python可以自动依次登录服务器,执行巡检并在本地生成文本格式的巡检结果,java读取这些文本巡检结果生成图片。
下面是代码,欢迎讨论。
#!/usr/bin/evn python
#*-* encoding:utf-8 -*-
#Filename:ssh.py
#自动登录服务器,实现服务器巡检工作
import os
import sys
import paramiko
#设置一下字符编码
reload(sys)
sys.setdefaultencoding('utf-8')
#使用public key的登录服务器,将巡检结果输出到特定的目录中
def login_by_pubkey(serverHost,serverPort,userName,keyFile):
known_host = "~/.ssh/known_hosts"
ssh = paramiko.SSHClient();
ssh.load_system_host_keys(known_host)
#设置默认接收主机信任的策略,但是可能报告“不信任主机的”异常
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
print 'Connectting host %s......' % serverHost
ssh.connect(serverHost,serverPort,username = userName,key_filename = keyFile)
print 'Connect host %s sucess' % serverHost
fname = '~/xunjian/result_%s' % serverHost
f = file(fname,'w')
#执行系统命令,获取输出
stdin, stdout, stderr = ssh.exec_command('df -h')
#print stdout.readlines()
f.write('step1:check disk:\n')
for line in stdout.readlines():
if len(line) > 0:
print line
f.write(line)
vmstat_stdin,vmstat_stdout,vmstat_stderr = ssh.exec_command('vmstat 2 10')
f.write('step2:check system:\n')
for line in vmstat_stdout.readlines():
if len(line) > 0:
f.write(line)
process_stdin,process_stdout,process_stderr = ssh.exec_command('ps -aux | grep java | top 10')
f.write('step3:check process:\n')
for line in process_stdout.readlines():
if len(line) > 0:
f.write(line)
#关闭文件和ssh连接
f.close()
ssh.close()
print 'say bye to host %s' % serverHost
#生成截图文件(采用Java实现,需要调用本地的Java文件,依赖了commons-io.jar)
print 'generate image file of %s' % serverHost
try:
java_cmd = '/usr/bin/env java -cp commons-io-2.1.jar:img.jar com.*.*.*.CeateCheckPic %s' % fname
os.system(java_cmd)
except Exception, e:
print 'error when generate image file of %s : %s' % (serverHost,e)
finally:
print '===generate image file of %s over===' % serverHost
def login_by_prikey():
pass
if __name__ == '__main__':
#如果有多个服务器,这个列表中需要配置多条这种配置,实际使用中请将 ip,port,username,public key path替换下面的变量
ips = ['#ip#,#port#,#user#,#pubkey_path#']
for ip in ips:
host,port,user,path = ip.split(',')
print '==========start %s============' % host
login_by_pubkey(host,int(port),user,path)
print '>>>>>>>>>>end %s<<<<<<<<<<<<<
附件是生成巡检图片的一个简单的jar,大家可以参考一下。
python 网络设备巡检_python写的一个服务器自动巡检工具相关推荐
- python网络监控程序_python写的一个监控系统进程网络流量的程序
python写的一个监控系统进程网络流量的程序,python2.7版本. 代码如下: import socket import struct import thread import threadin ...
- python饮料购买_Python写的一个自动售饮料小程序!
写这个程序的时候,我已学习Python将近有一百个小时,在CSDN上看到有人求助使用Python如何写一个自动售饮料的程序,我一想,试试写一个实用的售货程序.当然,只是实现基本功能,欢迎高手指点,新手 ...
- python做数据库压力测试_Python 写的一个MongoDB压力测试
Python 写的一个MongoDB压力测试 $ pip install pymongo #!/usr/bin/env python #coding=utf-8 #Author: Ca0Gu0 fro ...
- 零基础python嵌入式开发_python写嵌入式
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 我最近在移植python到嵌入式linux上,但是总是有部分模块,比如socke ...
- python arp脚本_Python scapy 实现一个简易 arp 攻击脚本
scapy是python写的一个功能强大的交互式数据包处理程序,可用来发送.嗅探.解析和伪造网络数据包,常常被用到网络攻击和测试中. scapy的安装在Linux非常便利,但在Windows下比较复杂 ...
- python长整数相乘_python写的大整数相乘的方法
输入 72106547548473106236 982161082972751393 两个大整数 输出结果 70820244829634538040848656466105986748 解题思路 首先 ...
- 服务器多难管理怎么办?给你一个服务器批量管理工具
众所周知,服务器运营人员的工作内容,主要围绕着公司上下所有服务器.网络等硬件平台的运维工作,对每台服务器的状况,如磁盘.内存.网络.CPU等资源情况都要有明确的了解,还要定期对服务器进行巡检和修复,避 ...
- 毕业时候写的一个PE解析小工具(MFC源码)
这么快就成了前年毕业的老家伙了.在整理硬盘里的代码和文档的时候翻出刚毕业时候写的一个小东西,想起来那时候在武汉的小河西村,暗无天日的租房里屌丝的写着程序的日子.一晃这么久了.还是混的这鸟样.悲伤逆流成 ...
- 利用ZABBIX进行服务器自动巡检并导出报表
微信公众号:运维开发故事,作者:wanger 实现思路 主要是利用zabbix的api来对数据进行获取处理,实现思路如下: zabbix提供了丰富的api,可以根据此api获取zabbix得主机信息, ...
- 矿用巷道巡检机器人_一种井下自动巡检机器人系统
一种井下自动巡检机器人系统 吕海波 [摘 要] 摘 要 金属矿山井下目前涉及到很多重要场所,如井下变电站.水泵 房,目前大多采用人工进行例行巡检作业,发现问题再逐级上报,作业率低下, 安全无法有效得到 ...
最新文章
- 理解WebKit和Chromium: Chromium for Android
- 通过Spring的BeanPostProcessor的 bean的后置处理器会拦截所有bean创建过程
- html 搜索框 自动补全,自动完成的搜索框javascript实现
- IPS与IDS部署场景(直路部署,单臂部署,旁路部署,阻断)
- Android 应用开发(8)---语言和语言区域
- jfinal 获得 webapp 文件下文件路径
- ffmpeg实现摄像头拉流_ffmpeg推流及拉流
- c语言实验报告评语大全,c语言实验报告(学生).doc
- matlab中遗传算法代沟,谢菲尔德大学的MATLAB遗传算法
- Ubuntu 15.10 安装 Rabbitvcs
- Unity 与EasyAR结合 新手入门教程
- 计算机软件被放进回收站,电脑不能把文件放入回收站只能永久删除怎么办?
- 【RocketMQ】发送事务消息
- 1276. 不浪费原料的汉堡制作方案-数学消元法
- 一个编程A白的真实独白
- 免费使用OriginPro学习版
- Kubernetes CSI 介绍及使用
- 一闪一闪亮晶晶,满屏都是小星星
- 176310 Can’t place multiple pins assigned to pin location Pin_K22(IOPAD_X77_Y33_N14)(FPGA编译出现复用引脚)
- BeTheme:遵循最新设计趋势的WordPress主题
热门文章
- 数据库存储图片路径并显示图片
- IIS出现问题报CS0016
- java例程练习(东软笔试题——n阶平面魔方)
- 第11章 支撑向量机 SVM 学习笔记 上
- 深度学习之目标检测 第2章 目标检测算法基础介绍分类,目标检测方法基本流程
- unity Scene窗口的任意比例放大和缩小
- LaTeX 注释一行的某一部分
- Atitit 初级 中级 高级 软件工程师的区别 非功能性需求 目录 1. 初级 业务功能	1 1.1. 中级 独立完成业务功能 已经非常见api功能 更加广阔	1 2. 高级 非功能性需求
- Atitit 作用域的理解attilax总结
- Atitit atiMail atiDns新特性 v2 q39