使用批处理脚本运行 ssh,我发现所有输出都转储到标准错误中......所以我的命令:
ssh -i keyfile user@host "commands" 2> error.log
如果本地 known_hosts 中没有匹配的 key ,则捕获远程服务器提示输入密码...
这让我无法捕获错误处理或日志记录的输出,而不会让我的批处理脚本的用户卡住不知道空白提示是什么。
我的另一个想法是先做一个简单的 ssh 来测试连接并在需要时建立密码提示,然后转到感兴趣的命令。但我觉得如果第一个通过,那么我唯一的错误就是我的远程命令。
我试过了
>CON 2> error.log
...似乎做同样的事情。
不幸的是,Windows 中没有默认的 TEE 命令。
我最好的解决方案是:
1) echo 输入密码
2) ssh "参数"2>error.log
建议?
最佳答案
如果远程系统支持该语法,您可以执行以下操作:
ssh -i keyfile user@host "commands 2>&1" > output.log 2> error.log
这会将远程命令的错误输出重定向到其标准输出。
ssh
自己的标准输出和标准错误不受影响。 2>&1
部分是用于将标准错误(描述符 2)重定向到标准输出(描述符 1)的 Bourne shell 语法。如果远程 shell 是 sh、bash 或 ksh,它应该可以工作。
关于windows - 从批处理中解析 SSH 流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42988315/