Windows 从批处理解析SSH流
使用批处理脚本运行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 -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,它应该可以工作。仍然会将所有输出重定向到日志,包括密码提示