实现思路:python脚本利用ssh端口进行远程命令执行,在进行企业微信监控告警:
# coding: utf-8
import paramiko
import logs
#导入企业微信告警模块
import qywx_push
def ssh():
#主机连接信息,只定义密码
info = {'192.168.1.210':'sr2sss',
'192.168.1.211':'sr2ssss',
'192.168.1.213':'sr2sss02'}
# 定义数组
fields = []
for ip , passwds in info.items():
ssh = paramiko.SSHClient()
#指定当对方主机没有本机公钥的情况时应该怎么办,AutoAddPolicy表示自动在对方主机保存下本机的秘钥
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
try:
#连接命令执行
ssh.connect(ip,22, 'root', passwds) # SSH端口默认22,可改
except:
print("%s主机连接失败"%ip)
#调用企业微信模块,根据自己的企业微信函数传参调用
qywx_push.send_qywx('虚拟机空间监控',ip,0000,'主机连接失败请检查主机存活或者认证信息','17795555555')
#执行失败主机继续执行下面代码
continue
#执行远程命令
stdin, stdout, stderr = ssh.exec_command("df -h|grep 'app'")
#将数据存储在变量中
outmsg, errmsg = stdout.read(), stderr.read()
ssh.close()
split2 = outmsg.decode().split() # 割接成数组
df = int(split2[4].replace("%", '')) # 取出数组值 将%替换成空
if df >= 1:
print('主机:%s空间使用率:%s'%(ip,df))
qywx_push.send_qywx('虚拟机空间监控', ip,df, '/app 使用率不足请及时处理!', '1779555555')
if __name__ == '__main__':
ssh()
其中企业微信推送的模块需要自己写好,这样任何脚本直接调用即可。
这样只要有一台主机能够使用22端口或者12321 端口即可进行监控告警,这样不用客户端,不用批量脚本运行。简单方便。