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()

 

posted @ 2021-08-31 19:18  Tarzen  阅读(143)  评论(0编辑  收藏  举报