如何防止PuTTY shell在Windows中从批处理文件执行命令后自动退出?

mkk*_*wat 13 windows shell putty cmd batch-file

我写了一个这样的批处理文件:

Start putty.exe -ssh 172.17.0.52 -l root -m dummy.txt
Run Code Online (Sandbox Code Playgroud)

然后dummy.text我写了这个命令:

avahi-daemon --no-drop-root -D
export XVHMI_USERCONFIG_PATH=/home/UserProfileConfig
export XDG_RUNTIME_DIR=/tmp
cd /opt/bosch/airis/bin
Run Code Online (Sandbox Code Playgroud)

当我运行.bat文件时,PuTTY启动,命令执行(希望,不确定)并退出.

如何保持窗口打开?

我用谷歌搜索了同样的,但没有坚实的帮助.我读到堆栈溢出本身,我们需要在txt文件中定义一些东西,但是最重要的是什么?

Mar*_*ryl 15

命令完成后,SSH会话将立即关闭(以及PuTTY).通常"命令"是shell.由于你已经覆盖了这个默认的"命令",但是你想要运行shell,你必须自己明确地执行shell:

avahi-daemon ... ; /bin/bash
Run Code Online (Sandbox Code Playgroud)

此外,由于使用-m交换机意味着非交互式终端,您可能希望使用-t交换机强制交互式终端.


虽然,我不确定你是否想要执行shell,或者你只是想看看你的命令输出.如果是后者,你考虑过使用plink吗?它是PuTTY软件包的控制台终端客户端.作为控制台应用程序,它继承了父批处理文件的控制台pause,如果需要,您可以使用命令暂停批处理控制台的关闭.

另一个选项(PuTTY和plink)都是在远端暂停.例如使用read命令.

avahi-daemon ... ; read
Run Code Online (Sandbox Code Playgroud)


小智 5

正如马丁所建议我尝试了这一步:

  1. putty.exe -ssh 172.17.0.52 -l root -m dummy.txt -t

  2. 在dummy.txt中的命令末尾添加/ bin/bash

它对我有用.请注意,您必须遵循上述两个步骤.这样,您可以使会话保持活动状态,并可以手动执行其他命令.