因为公司服务器需要每半个月巡检一次,还要将巡检结果生成图片贴到巡检报告中,每次手动操作相当麻烦。恰好刚学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写的一个服务器自动巡检工具相关推荐

  1. python网络监控程序_python写的一个监控系统进程网络流量的程序

    python写的一个监控系统进程网络流量的程序,python2.7版本. 代码如下: import socket import struct import thread import threadin ...

  2. python饮料购买_Python写的一个自动售饮料小程序!

    写这个程序的时候,我已学习Python将近有一百个小时,在CSDN上看到有人求助使用Python如何写一个自动售饮料的程序,我一想,试试写一个实用的售货程序.当然,只是实现基本功能,欢迎高手指点,新手 ...

  3. python做数据库压力测试_Python 写的一个MongoDB压力测试

    Python 写的一个MongoDB压力测试 $ pip install pymongo #!/usr/bin/env python #coding=utf-8 #Author: Ca0Gu0 fro ...

  4. 零基础python嵌入式开发_python写嵌入式

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 我最近在移植python到嵌入式linux上,但是总是有部分模块,比如socke ...

  5. python arp脚本_Python scapy 实现一个简易 arp 攻击脚本

    scapy是python写的一个功能强大的交互式数据包处理程序,可用来发送.嗅探.解析和伪造网络数据包,常常被用到网络攻击和测试中. scapy的安装在Linux非常便利,但在Windows下比较复杂 ...

  6. python长整数相乘_python写的大整数相乘的方法

    输入 72106547548473106236 982161082972751393 两个大整数 输出结果 70820244829634538040848656466105986748 解题思路 首先 ...

  7. 服务器多难管理怎么办?给你一个服务器批量管理工具

    众所周知,服务器运营人员的工作内容,主要围绕着公司上下所有服务器.网络等硬件平台的运维工作,对每台服务器的状况,如磁盘.内存.网络.CPU等资源情况都要有明确的了解,还要定期对服务器进行巡检和修复,避 ...

  8. 毕业时候写的一个PE解析小工具(MFC源码)

    这么快就成了前年毕业的老家伙了.在整理硬盘里的代码和文档的时候翻出刚毕业时候写的一个小东西,想起来那时候在武汉的小河西村,暗无天日的租房里屌丝的写着程序的日子.一晃这么久了.还是混的这鸟样.悲伤逆流成 ...

  9. 利用ZABBIX进行服务器自动巡检并导出报表

    微信公众号:运维开发故事,作者:wanger 实现思路 主要是利用zabbix的api来对数据进行获取处理,实现思路如下: zabbix提供了丰富的api,可以根据此api获取zabbix得主机信息, ...

  10. 矿用巷道巡检机器人_一种井下自动巡检机器人系统

    一种井下自动巡检机器人系统 吕海波 [摘 要] 摘 要 金属矿山井下目前涉及到很多重要场所,如井下变电站.水泵 房,目前大多采用人工进行例行巡检作业,发现问题再逐级上报,作业率低下, 安全无法有效得到 ...

最新文章

  1. 理解WebKit和Chromium: Chromium for Android
  2. 通过Spring的BeanPostProcessor的 bean的后置处理器会拦截所有bean创建过程
  3. html 搜索框 自动补全,自动完成的搜索框javascript实现
  4. IPS与IDS部署场景(直路部署,单臂部署,旁路部署,阻断)
  5. Android 应用开发(8)---语言和语言区域
  6. jfinal 获得 webapp 文件下文件路径
  7. ffmpeg实现摄像头拉流_ffmpeg推流及拉流
  8. c语言实验报告评语大全,c语言实验报告(学生).doc
  9. matlab中遗传算法代沟,谢菲尔德大学的MATLAB遗传算法
  10. Ubuntu 15.10 安装 Rabbitvcs
  11. Unity 与EasyAR结合 新手入门教程
  12. 计算机软件被放进回收站,电脑不能把文件放入回收站只能永久删除怎么办?
  13. 【RocketMQ】发送事务消息
  14. 1276. 不浪费原料的汉堡制作方案-数学消元法
  15. 一个编程A白的真实独白
  16. 免费使用OriginPro学习版
  17. Kubernetes CSI 介绍及使用
  18. 一闪一闪亮晶晶,满屏都是小星星
  19. 176310 Can’t place multiple pins assigned to pin location Pin_K22(IOPAD_X77_Y33_N14)(FPGA编译出现复用引脚)
  20. BeTheme:遵循最新设计趋势的WordPress主题

热门文章

  1. 数据库存储图片路径并显示图片
  2. IIS出现问题报CS0016
  3. java例程练习(东软笔试题——n阶平面魔方)
  4. 第11章 支撑向量机 SVM 学习笔记 上
  5. 深度学习之目标检测 第2章 目标检测算法基础介绍分类,目标检测方法基本流程
  6. unity Scene窗口的任意比例放大和缩小
  7. LaTeX 注释一行的某一部分
  8. Atitit 初级 中级 高级 软件工程师的区别 非功能性需求 目录 1. 初级 业务功能 1 1.1. 中级 独立完成业务功能 已经非常见api功能 更加广阔 1 2. 高级 非功能性需求
  9. Atitit 作用域的理解attilax总结
  10. Atitit  atiMail atiDns新特性 v2  q39