Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Windows中定期启动和停止命令_Python_Windows_Batch File_Nat - Fatal编程技术网

Python 在Windows中定期启动和停止命令

Python 在Windows中定期启动和停止命令,python,windows,batch-file,nat,Python,Windows,Batch File,Nat,我正在使用Python程序连接到VPS并创建NAT隧道 My Home Windows PC <-- My Linux VPS <-- The internet 这将启动Python脚本,该脚本从未停止过:它将无限期地继续,直到我关闭批处理窗口为止。很好 问题是:如果隧道在几分钟内没有使用,它会自动停止服务请求。这不会停止Python脚本的执行,它将继续执行。。。它只是停止工作,但仍在继续 我可以在Python脚本中解决这个问题,但它相当复杂,我不想弄乱它:我想要一个更简单的解决方

我正在使用Python程序连接到VPS并创建NAT隧道

My Home Windows PC <-- My Linux VPS <-- The internet
这将启动Python脚本,该脚本从未停止过:它将无限期地继续,直到我关闭批处理窗口为止。很好

问题是:如果隧道在几分钟内没有使用,它会自动停止服务请求。这不会停止Python脚本的执行,它将继续执行。。。它只是停止工作,但仍在继续

我可以在Python脚本中解决这个问题,但它相当复杂,我不想弄乱它:我想要一个更简单的解决方案

批处理文件应停止python.exe的执行,并每5分钟重新启动一次。我该怎么做

SLEEP和GOTO命令或我尝试过的任何类似命令将在Python脚本结束之前等待触发


我需要告诉批处理脚本或任何控制它的实体,python.exe必须每5分钟停止并重新启动一次,无论它是否仍在运行。有可能吗?

您可以编写一个python脚本,使用与子进程相同的命令行参数运行natsrv.py。5分钟后终止,然后重复

mynatsrv.py

命令行是

cd "%~dp0"
python.exe mynatsrv.py --mode client --secret hunter1 --local 127.0.0.1:8080 --admin myvps.ip.here:8999

使用START命令启动python脚本。然后,您可以使用GOTO、TIMEOUT和TASKKILL循环并重新启动它。它还可以杀死已启动任务的早期版本。我很喜欢任务调度器的想法,但我并不知道它的存在:不是赢家。我也在测试启动/超时,会让你知道我能做什么。谢谢!你能通过定期在网络上ping VPS或其他东西来保持它的活力吗?是的,如果我要编辑原始Python脚本,这就是我的想法:根据我做的简短研究,它不能工作的原因正是你指定的。它使用Python套接字库,解决这个问题的方法是每n秒ping一次。我可能会深入原始源代码,这样做,一旦我能够提供这种快速而粗糙的重置客户端的修复方法。这种方法的问题是,我不知道如何从另一个Py脚本启动Py脚本,并传递命令行参数。我必须编辑原始文件才能作为Py类/函数,而不是CLI脚本。@Saturnix-那么natsrv.Py不是您的程序?我可以改变答案。是的,这是我在Github上找到的一个脚本。如果它是我的,我会问它为什么会断开连接,但它使用的API我不知道,现在也不想学习。@Saturnix您是否花时间确保natsrv.py不会让其他人通过?@wwii Nope:0安全检查。如果我能让它工作,我将在一个隔离的环境中运行它,我不在乎它是否被渗透,并且只运行一段时间。
import subprocess as subp
import sys
import time

if __name__ == "__main__":
    while True:
        p = subp.Popen(["python.exe", "natsrv.py"] + sys.argv[1:])
        time.sleep(5*60)
        p.terminate()
        p.wait()
cd "%~dp0"
python.exe mynatsrv.py --mode client --secret hunter1 --local 127.0.0.1:8080 --admin myvps.ip.here:8999