问题描述
我有一个 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