[英]Run a batch file when Pageant finishes loading SSH keys
我編寫了兩個批處理文件 - 一個用於啟動 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
問題是第一個腳本會啟動密碼提示。 如果我完成此操作然后啟動下一個腳本,則一切正常。 但我一直無法將這兩個組合成一個腳本,其中第二個命令在第一個命令的提示完成后運行。 我將如何創建一個這樣做的批處理文件?
您幾乎無法在批處理文件中解決此問題。 Pageant是GUI應用程序。 它幾乎無法以某種方式發信號通知批處理文件它已完成了密鑰的加載。
因此, Pageant具有-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
如果另一個實例已經在運行,您可以利用選美的行為方式。 通過這種方式,您可以將密鑰加載到選美中,然后繼續在單個腳本中使用它。
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 並告訴它加載密鑰。 由於另一個選美實例已在運行,因此該實例在加載密鑰后終止,使腳本僅在那時繼續運行。TASKKILL /im pageant.exe
殺死選美使密鑰無法再使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.