我写了两个批处理文件 - 一个用于启动Pageant并加载我的密钥,另一个用于将一些文件ssh到远程服务器上。单独地,脚本完美地运行。我试图将它们组合成一个批处理文件,但我无法让它工作。
这是脚本 - 真的只有一行。
要启动Pageant并加载密钥:
start E:\PuTTY\pageant.exe E:\Keys\priv.ppk
exit
要使用pscp:
pscp F:\website\foobar\src\* [email protected]:/var/www/html
问题是第一个脚本启动了密码提示。如果我完成这个,然后启动下一个脚本,一切都很完美。但我无法将这两个脚本组合成一个脚本,其中第二个命令在第一个命令完成之后运行。我该如何创建一个这样做的批处理文件?
你很难在批处理文件中解决这个问题。 Pageant是GUI应用程序。它几乎不能以某种方式向批处理文件发出信号表明它已完成加载密钥。
出于这个原因,Pageant has -c
switch,使其在加载密钥后运行指定的程序/批处理文件:
您可以安排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