服务器命令执行,并调用钉钉机器人将返回结果发送至钉钉群
服务器老是崩,相关服务日志里也没有体现,想写个脚本定时将相关服务的信息发送过来方便排查
貌似钉钉机器人是可以直接发送文件的,没仔细研究,有兴趣的可以试试看
import paramiko
import threading
import requests
import json
import time
def ding_send(text):
headers={
"Content-Type": "application/json"
}
message={
"msgtype": "text",
"text": {
"content":text
}
}
a=requests.post(url="xxxx",data=json.dumps(message),headers=headers) #此处填写钉钉机器人token
print(a.text)
def ssh2(ip,username,port,passwd,cmd):
try:
output=''
ssh = paramiko.SSHClient()
now=time.asctime( time.localtime(time.time()) )
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(ip,port,username,passwd,timeout=5)
for m in cmd:
stdin, stdout, stderr = ssh.exec_command(m)
out = stdout.readlines()
outlen=len(out)
i=1
for o in out:
ding_send(now+'\n'+str(i)+"/"+str(outlen)+'\n'+o)
i=i+1
time.sleep(5)
ssh.close()
#print(len(output))
#print(output)
#for i in range(0,int(len(output)/19000)+1):
# ding_send(now+'\n'+str(i+1)+"/"+str(int(len(output)/19000 )+1)+'\n'+output[i*19000:(i+1)*19000])
# time.sleep(1)
#print(output)
except :
ding_send("server err!")
print('err')
if __name__=='__main__':
cmd = ['ps -aux | grep java'] #此处填写要执行的命令
username = "root" #此处填写服务器ssh用户名
passwd = "****" #此处填写服务器ssh密码
threads = [] #需要多线程请自行写循环
ip='' #服务器ip
port=2531 #服务器ssh端口
a=threading.Thread(target=ssh2,args=(ip,username,port,passwd,cmd))
a.start()配合windows任务计划,可以指定时间间隔运行一次,并将结果发送到钉钉,方便监控服务器状态
