Windows 从批处理解析SSH流

Windows 从批处理解析SSH流,windows,batch-file,ssh,cmd,Windows,Batch File,Ssh,Cmd,使用批处理脚本运行ssh,我发现所有输出都被转储到标准错误中。。。所以我的命令是: ssh -i keyfile user@host "commands" 2> error.log 如果本地已知\u主机中没有匹配的密钥,则捕获远程服务器提示输入密码。。。 这使我无法捕获错误处理或日志记录的输出,而不让我的批处理脚本的用户无法知道空白提示是什么。 我的另一个想法是先做一个简单的ssh来测试连接,如果需要,建立密码提示,然后转到感兴趣的命令。但是我觉得如果第一个通过了,那么我唯一的错误就是我

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

ssh -i keyfile user@host "commands" 2> error.log
如果本地已知\u主机中没有匹配的密钥,则捕获远程服务器提示输入密码。。。 这使我无法捕获错误处理或日志记录的输出,而不让我的批处理脚本的用户无法知道空白提示是什么。

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

我试过了

>CON 2> error.log 
。。。似乎做了同样的事情

不幸的是,Windows中没有默认的TEE命令

我的最佳解决方案是: 1) 输入密码 2) ssh“params”2>error.log


建议?

如果远程系统支持该语法,您可以执行以下操作:

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

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

仍然会将所有输出重定向到日志,包括密码提示