尝试自动执行从 Windows 到 Linux (BusyBox) 控制台的任务,该控制台需要用户交互才能终止

问题描述

我有一个 Powershell 脚本,它会自动通过 SSH 连接到 Linux 主机(运行 BusyBox 的 ESXI 服务器)并运行单个命令 (./my_script.sh),该命令捕获 ESXI 服务器上的一些网络流量。但是,此脚本会等待用户输入 (CTRL + C) 以退出脚本。

我曾尝试使用 Posh-SSH 模块 (Invoke-SSHCommand -SSHSession $session -Command $command) 语法以及 Plink 模块 (plink -batch *servername* -pw *userPassword* *command*) 但这些命令总是执行并将我返回到 shell,它们从不等待用户互动。

当然,如果我直接在 ESXI 服务器上运行它,脚本将等待 CTRL + C 命令终止。

有人知道解决这个问题的方法吗?

解决方法

On 选项是 timeout 命令,它应该出现在 上,为您正在运行的任何命令设置运行时限制。例如,如果您需要 tcpdump 捕获 20 秒的数据包,您可以运行:

timeout 20 tcpdump

您还可以使用 --signal 标志指定要发送到进程的特定信号,如果您使用的命令在不同信号之间具有不一致的行为(查看信号列表,请使用 kill -l`):

timeout --signal INT 20 tcpdump