plink自动批处理脚本

时间:2013-04-16 03:08:14

标签: windows batch-file ssh plink

如果超时并自动重新连接,我将如何创建一个简单的批处理脚本(窗口)以关闭当前的plink会话?

类似的东西:

if "plink.exe" == "false" (
    "plink command to connect to SSH Server."
)

或者

  

如果“plink.exe”==“false”(“批量打开新的plink实例”       )

1 个答案:

答案 0 :(得分:4)

你走了。

@echo off
setlocal
:: modify this line as appropriate
set plink_args=-P 22 -i c:\path\to\private.ppk user@host
set errors=0

:loop

:: if "find" exits with a non-zero status, plink.exe isn't running.
( tasklist /fi "IMAGENAME eq plink.exe" | find /i "plink.exe" >NUL && (
    set errors=0
) ) || (
    start "" plink.exe %plink_args%
    set /a "errors+=1"
)

if %errors% geq 5 (
    echo Unable to connect %errors% times in a row.  Stopping.
    goto :EOF
)

:: pause for 10 seconds (-n seconds + 1)
ping -n 11 0.0.0.0 >NUL
goto loop

您知道,如果您在ssh服务器上具有root访问权限,则可以修改sshd_config并让服务器每隔几分钟发送一次no-op数据包,以防止连接因不活动而超时。以下是我的sshd_config

的示例摘录
# noop anti-idle for 12 hours (10 minutes * 72)
ClientAliveInterval 600
ClientAliveCountMax 72

将其添加到sshd_config并重新启动ssh守护程序。这可能会让你不必在客户端做一些如此hackish的事情。