包含两个主要功能
- SshTest类,用于探测ssh是否可以连接以及执行ssh命令。
- PushDing,用于推送钉钉消息
本文包含以下三个部分
- python脚本正文
- 只探测ssh是否可连接样例模板。
- 探测ssh并执行操作系统命令以及推送钉钉消息样例模板。
1. SSH探测、钉钉推送通用Python类
下面脚本可直接使用,为通用模板
#!/bin/python3
# 本模块两个包含两个通用功能:
"""
1.SshTest类,用于探测ssh是否可以连接以及执行ssh命令。
2.PushDing,用于推送钉钉消息
"""
# python内置模块
import re
import datetime
import time
import os
import hmac
import hashlib
import urllib
import base64
import requests
import json
# paramiko需要下载模块
import paramiko
"""
一、SshTest类:
1.探测ssh是否可达
2.check_ssh_status方法,用于探测ssh是否可以连接,无法连接将报错,返回三个标志值:
1.send_msg,显示主机、探测时间、以及ssh无法连接信息
2.warn_type,告警类型,显示ssh无法连接
3.sshstat,ssh是否可连接标志位,为boolean值,true为可连接,false为不可连接
3.exec_ssh_cmd用于ssh探测成功之后,执行ssh命令。
"""
class SshTest:
def __init__(self, host, port, username, pwd):
self.host = host
self.port = port
self.username = username
self.pwd = pwd
self.ssh = paramiko.SSHClient()
self.ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
self.timenow = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') + ' '
try:
self.ssh.connect(self.host, self.port, self.username, self.pwd, timeout=5)
self.sshinvalid = False
# print(self.sshinvalid)
except Exception as errmsg:
self.sshinvalid = True
self.errormsg = errmsg
# print(self.sshinvalid)
def check_ssh_status(self):
if self.sshinvalid:
send_msg = ('**告警时间:** ' + self.timenow + ' \\\n **告警主机:** ' + str(self.host) + ' \\\n **告警内容:** ' + str(self.errormsg) + ' ')
warn_type='主机SSH无法连接'
sshstat = False
# 如遇到无法ssh连接,报错详细信息
# print(self.errormsg)
print('ssh连接报错为: ' + str(self.errormsg)