plink.exe-强制远程操作超时

plink.exe-强制远程操作超时

有一个脚本,它每天利用 plink.exe 从一堆网络设备读取配置。有时,一些设备会卡住提供备份数据的内部进程,并且 plink 实例(以及整个脚本)会卡住,直到按下 CTRL+C。有没有办法推动 plink.exe 为远程操作设置超时?现在 plink.exe 只报告 SSH 协议层超时,但这不是我的情况,因为 SSH 连接和登录成功运行,但远程命令执行卡住了整个过程。

我在 plink.exe 帮助中找不到任何有用的信息

答案1

在使用 plink 连接之前,先 ping 设备怎么样?感谢这个答案我得到了一个完美的功能:

set "_ip=localhost"
set "_ip=192.168.1.1"
ping %_ip% -n 1 -4 | find /i "TTL=">nul
if errorlevel 1 (
    echo ping %_ip% failure
    ) else ( 
    echo ping %_ip% success
    )
  • -4强制使用 IPv4(例如 pinglocalhost回复 IPv6 而无TTL=输出)
  • | find /i "TTL="作为find命令errorlevel提出
  • >nul抑制不需要的输出

只需用你的 plink 命令替换即可echo ping %_ip% success

答案2

此 powershell 代码启动 windows 进程 [此处为 ping.exe,以便于测试],如果它在预设时间 [此处为 3 秒 - 3000 毫秒] 内没有结束,则终止它。

powershell.exe "Start-Process 'ping.exe' -ArgumentList '127.0.0.1', '-t' -NoNewWindow -PassThru | %% { if(-not $_.WaitForExit(3000)) { $_.Kill() } }"

它是一个在混合批处理/ps 脚本中易于使用的单行脚本

答案3

没有plink这个选项。

但是有很多解决方法,例如如果你已经timeout安装了 GNU

/usr/bin/timeout 2s plink -no-antispoof $me@$host hostname -s

相关内容