运行 Pageant 完成加载 SSH 密钥时的批处理文件
Run a batch file when Pageant finishes loading SSH keys
我写了两个批处理文件——一个用于启动 Pageant 并加载我的密钥,另一个用于将一些文件通过 ssh 连接到远程服务器。单独来看,这些脚本可以完美运行。我试图将它们合并到一个批处理文件中,但我无法让它工作。
这是脚本 - 每个只有一行,真的。
要启动选美和加载密钥:
start E:\PuTTY\pageant.exe E:\Keys\priv.ppk
exit
要使用 pscp:
pscp F:\website\foobar\src\* foo@178.128.10.35:/var/www/html
问题是第一个脚本启动了密码提示。如果我完成这个然后启动下一个脚本,一切都会完美无缺。但是我一直无法将这两个组合成一个脚本,使第二个命令在第一个命令的提示完成后运行。我将如何创建这样做的批处理文件?
你很难在批处理文件中解决这个问题。 Pageant 是 GUI 应用程序。它几乎无法以某种方式向批处理文件发送已完成加载密钥的信号。
因此,Pageant has -c
switch,这使得它 运行 在加载密钥后成为指定的 program/batch-file:
You can arrange for Pageant to start another program once it has initialised itself and loaded any keys specified on its command line. This program (perhaps a PuTTY, or a WinCVS making use of Plink, or whatever) will then be able to use the keys Pageant has loaded.
You do this by specifying the -c
option followed by the command, like this:
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
如果另一个实例已经 运行,您可以利用选美的行为方式。这样您就可以将密钥加载到 pageant 中,然后在单个脚本中继续使用它。
START pageant.exe
TIMEOUT 1
pageant.exe E:\Keys\priv.ppk
:: Do stuff here.
TASKKILL /im pageant.exe
工作原理如下:
START pageant.exe
在后台开始选美。
TIMEOUT 1
暂停脚本一秒钟以确保选美在执行下一行之前 运行。
pageant.exe E:\Keys\priv.ppk
再次启动 pageant 并告诉它加载密钥。由于另一个 pageant 实例已经 运行,此实例在加载密钥后终止,使脚本仅在那时继续。
TASKKILL /im pageant.exe
杀死选美所以钥匙不能再使用
我写了两个批处理文件——一个用于启动 Pageant 并加载我的密钥,另一个用于将一些文件通过 ssh 连接到远程服务器。单独来看,这些脚本可以完美运行。我试图将它们合并到一个批处理文件中,但我无法让它工作。
这是脚本 - 每个只有一行,真的。
要启动选美和加载密钥:
start E:\PuTTY\pageant.exe E:\Keys\priv.ppk
exit
要使用 pscp:
pscp F:\website\foobar\src\* foo@178.128.10.35:/var/www/html
问题是第一个脚本启动了密码提示。如果我完成这个然后启动下一个脚本,一切都会完美无缺。但是我一直无法将这两个组合成一个脚本,使第二个命令在第一个命令的提示完成后运行。我将如何创建这样做的批处理文件?
你很难在批处理文件中解决这个问题。 Pageant 是 GUI 应用程序。它几乎无法以某种方式向批处理文件发送已完成加载密钥的信号。
因此,Pageant has -c
switch,这使得它 运行 在加载密钥后成为指定的 program/batch-file:
You can arrange for Pageant to start another program once it has initialised itself and loaded any keys specified on its command line. This program (perhaps a PuTTY, or a WinCVS making use of Plink, or whatever) will then be able to use the keys Pageant has loaded.
You do this by specifying the
-c
option followed by the command, like this: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
如果另一个实例已经 运行,您可以利用选美的行为方式。这样您就可以将密钥加载到 pageant 中,然后在单个脚本中继续使用它。
START pageant.exe
TIMEOUT 1
pageant.exe E:\Keys\priv.ppk
:: Do stuff here.
TASKKILL /im pageant.exe
工作原理如下:
START pageant.exe
在后台开始选美。TIMEOUT 1
暂停脚本一秒钟以确保选美在执行下一行之前 运行。pageant.exe E:\Keys\priv.ppk
再次启动 pageant 并告诉它加载密钥。由于另一个 pageant 实例已经 运行,此实例在加载密钥后终止,使脚本仅在那时继续。TASKKILL /im pageant.exe
杀死选美所以钥匙不能再使用