windows - 从批处理中解析 SSH 流

标签 windows batch-file ssh cmd

使用批处理脚本运行 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/

相关文章:

batch-file - 如何使用 PUSHD 和 POPD

javascript - 从javascript运行一个bat文件

git - 将 Jenkins 连接到 AWS CodeCommit 存储库

python - 检查主机 key 是否在python中更改

python - 为什么 tkinter 按钮的高度选项在 OSX 和 Windows 上的行为不同?

Windows 上的 C++ 探查器

windows - 如何在 Windows 8 上编写输入法?

java - 为什么我的 JOptionPane 中的选项相反?

windows - 任务计划程序 : Run a Java program after a Python script finishes

docker - 从kubernetes/Docker中的Pod/容器执行,通过不包含预安装bash的镜像创建