Bash SSHバージョン[複製]

Bash SSHバージョン[複製]

Bashの変数にSSHバージョン番号を割り当てることはできません。以下のコードを実行すると、「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はstdoutではなくstderrでバージョンを印刷するようです。したがって、stderrをstdoutにリダイレクトする必要があります。

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

関連情報