【问题标题】:Run a batch file when Pageant finishes loading SSH keys在 Pageant 完成加载 SSH 密钥时运行批处理文件
【发布时间】:2019-02-27 13:40:11
【问题描述】:

我编写了两个批处理文件 - 一个用于启动 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

问题是第一个脚本启动了密码提示。如果我完成这个然后启动下一个脚本,一切都会完美运行。但是我一直无法将这两个组合成一个脚本,第二个命令在第一个命令的提示完成后运行。我将如何创建一个这样做的批处理文件?

【问题讨论】:

    标签: windows batch-file cmd putty pageant


    【解决方案1】:

    你很难在批处理文件中解决这个问题。 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
    

    【讨论】:

    • 好的,我会删除我的评论。
    【解决方案2】:

    如果另一个实例已经在运行,您可以利用 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 实例已经在运行,因此该实例在加载密钥后终止,使脚本仅在那时继续运行。
    • TASKKILL /im pageant.exe杀死选美使钥匙不能再使用。

    【讨论】:

      猜你喜欢
      • 2015-01-23
      • 2020-05-25
      • 2012-12-03
      • 1970-01-01
      • 1970-01-01
      • 2019-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多