定时脚本
相对于linux中crontab这个脚本就比较适合一个星期要做,然后好几个星期都不做,突然之间又要定时做任务的情况,可以很随意。crontab一挂上也没有办法直接ctrl+c结束必须要进入crontab删除记录才能结束定时
以下还需要pip install schedule
import subprocess
import schedule
import time
import sys
# 执行命令的函数
def execute_command():
# 这里替换成你想要执行的命令
subprocess.check_output('./disconnect_network_to_interact.sh').decode("utf-8")
print("doing...")
# 设置定时任务,每4个小时执行一次命令
schedule.every(24).hours.do(execute_command)
# 获取程序启动时间
start_time = time.time()
# 主循环
while True:
# 检查定时任务
schedule.run_pending()
# 检查程序运行时间
current_time = time.time()
# 计算程序运行的小时数
running_hours = (current_time - start_time) / 3600
# 如果程序运行超过7天8小时,则退出程序
if running_hours >= 7 * 24+5:
print("Program has been running for 7 days and 8 hours. Exiting...")
sys.exit(0)
# 等待一段时间后继续循环
time.sleep(3600) # 每隔一分钟检查一次
对与要断网才能进行的应用,又要在用完之后重新把网连上的情况可以使用以下方案:
网卡需要ip addr查看具体的网卡名 enp1s0替换为实际的网卡名即可
#/bin/bash
echo 123456 | sudo -S ip link set dev enp1s0 down
./interact.exp
echo 123456 | sudo -S ip link set dev enp1s0 up
对于启动之后还需要输入反馈的交互式的进程的方法是使用expect脚本
需要先sudo apt-get expect
创建一个interact.exp
#!/usr/bin/expect
set timeout -1
spawn tftp 192.168.10.44
expect "username"
send "zhangsan\r\n"
expect "passwd"
exit 1