Bash SSH 版本

Bash SSH 版本

无法将 SSH 版本号分配给 bash 中的变量。运行下面的代码,“uname -a”的输出被分配给变量“os”,但是“ssh -v”的输出出现在终端窗口中,但没有分配给变量“ssh_v”。

已确认这种情况发生在各种版本的 Solaris 和 Ubuntu 上,但我不知道为什么。

代码:

#!/usr/bin/env bash

ssh_v=$(ssh -V)
printf "ssh_version = $ssh_v\n"

os=$(uname -a)
printf "OS_version = $os\n"

输出:

root@myserver:/usr/build/run# ./test.sh
Sun_SSH_2.4, SSH protocols 1.5/2.0, OpenSSL 0x100020bf
ssh_version =
OS_version = SunOS myserver 5.11 11.3 sun4v sparc sun4v

答案1

看起来 SSH 在 stderr 中打印版本,而不是在 stdout 中。所以你需要将 stderr 重定向到 stdout:

ssh_v=$(ssh -V 2>&1)

相关内容