Pageant完成加载SSH密钥后运行批处理文件

时间:2018-09-24 04:15:25

标签: windows batch-file cmd putty pageant

我写了两个批处理文件-一个用于启动Pageant并加载我的密钥,另一个用于将某些文件ssh到远程服务器上。个别而言,脚本可以完美运行。我正在尝试将它们合并为一个批处理文件,但无法正常工作。

这是脚本-确实只有一行。

要启动Pageant并加载密钥,请执行以下操作:

start E:\PuTTY\pageant.exe E:\Keys\priv.ppk

exit

要使用pscp:

pscp F:\website\foobar\src\* foo@178.128.10.35:/var/www/html

问题在于第一个脚本启动了密码提示。如果完成此操作,然后启动下一个脚本,则一切正常。但是我无法将第一个命令的提示完成后再运行第二个命令的方式将这两个脚本合并为一个脚本。我该如何创建一个批处理文件?

1 个答案:

答案 0 :(得分:3)

您几乎无法在批处理文件中解决此问题。 Pageant是GUI应用程序。它几乎无法以某种方式向批处理文件发送信号,表明已完成了密钥的加载。

由于这个原因,Pageant has -c switch使它在加载密钥后运行指定的程序/批处理文件:

  

一旦Pageant初始化了自己的程序并加载了其命令行上指定的任何键,就可以安排Pageant启动另一个程序。然后,该程序(也许是PuTTY或使用Plink的WinCVS或任何其他工具)将能够使用Pageant加载的键。

     

您可以通过指定-c选项和命令来完成此操作,如下所示:

C:\PuTTY\pageant.exe d:\main.ppk -c C:\PuTTY\putty.exe

所以这应该符合您的要求:

start E:\PuTTY\pageant.exe E:\Keys\priv.ppk -c C:\path\your_scp_batch.bat