定时,断网,启动交互式进程进行交互

定时脚本
相对于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
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值