【问题标题】:Parsing SSH stream from batch从批处理中解析 SSH 流
【发布时间】:2017-03-24 21:47:51
【问题描述】:

使用批处理脚本运行 ssh,我发现所有输出都转储到标准错误中...所以我的命令:

ssh -i keyfile user@host "commands" 2> error.log

如果本地 known_hosts 中没有匹配的密钥,则捕获远程服务器提示输入密码... 这让我无法捕获输出以进行错误处理或记录,而不会让我的批处理脚本的用户卡住不知道空白提示是什么。

我的另一个想法是先做一个简单的 ssh 来测试连接并在需要时建立密码提示,然后转到感兴趣的命令。但我觉得如果第一个通过,那么我唯一的错误就是我的远程命令。

我试过了

>CON 2> error.log 

...似乎做同样的事情。

很遗憾,Windows 中没有默认的 TEE 命令。

我最好的解决方案是: 1) echo 输入密码 2) ssh "params" 2>error.log

建议?

【问题讨论】:

    标签: windows batch-file ssh cmd


    【解决方案1】:

    如果远程系统支持该语法,你可以这样做:

    ssh -i keyfile user@host "commands 2>&1" > output.log 2> error.log
    

    这会将远程命令的错误输出重定向到其标准输出。 ssh 自己的标准输出和标准错误不受影响。 2>&1 部分是用于将标准错误(描述符 2)重定向到标准输出(描述符 1)的 Bourne shell 语法。如果远程 shell 是 sh、bash 或 ksh,它应该可以工作。

    【讨论】:

    • 仍将所有输出重定向到日志,包括密码提示
    猜你喜欢
    • 2012-09-01
    • 2014-07-12
    • 1970-01-01
    • 2019-02-03
    • 1970-01-01
    • 1970-01-01
    • 2016-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多