17:30定时开始一个持续任务比如每间隔30分钟检测,并且在判断23:00超过关闭任务,实现方法
17:30定时开始一个持续任务比如每间隔30分钟检测机器是不是关机,并且超过23:00关闭任务,实现方法:
首先在linux上创建一个17:30开始的任务:是一个sh脚本并且输入到日志当中
crontab -e
30 17 * * * /data/tarzan/code/ci_node_check/run.sh >> /data/tarzan/code/ci_node_check/run.log
这个shell执行的任务是一个while True,每间隔30分钟尝试ssh链接机器,如果失败就触发企业微信机器人,通知大家,并且等待1h后再次尝试链接机器。如果ssh链接成功,等待30min后再检测。并且需要在23:00前结束检测。
import requests import paramiko from public_log import logger from multiprocessing import Pool import time ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) def fun(hostname): while True: try: ssh.connect(hostname=hostname, port=22, username='uos', password='1', timeout=10) except BaseException as e: # 触发提醒 logger.error('服务器无法链接:%s' % e) print('触发') # 结束循环 send_message(hostname) time.sleep(60 * 60) else: logger.info('链接正常') time.sleep(60 * 30) # 判断时间大于23:30就停止循环 now_localtime = time.strftime("%H:%M:%S", time.localtime()) print(now_localtime) if "23:30:00" < now_localtime: break if __name__ == '__main__': p = Pool(4) ip_list = ['127.0.0.241', '127.0.0.241', '127.0.0.242'] for i in ip_list: p.apply_async(fun, args=(i,)) p.close() p.join()