Linux

Bash SSH 版本

  • February 5, 2019

無法將 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

看起來 SSH 在標準錯誤中列印版本,而不是標準輸出。所以你需要將stderr重定向到stdout:

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

引用自:https://unix.stackexchange.com/questions/498726