localhostで接続していremote-server
ますremote-server
。
期待どおりに動作します。
ssh remote-server "hostname"
remote-server
混乱しています。リモートサーバーのホスト名ではなくローカルホスト名を返すのはなぜですか?
ssh remote-server "print $HOST"
localhost
答え1
2番目のコードの例:
ssh remote-server "print $HOST"
localhost
偉大な人々として記録されるでしょう住宅検査診断ツールSC2029:
Bashは、エスケープされていない一重引用符引数をすべて拡張します。これは、問題のコードが次に関連していることを意味します。
SSHホスト「エコクライアントホスト名」
サーバーのホスト名ではなく、クライアントのホスト名を印刷します。
$HOSTNAMEで$をエスケープすると、文字通り送信され、サーバーで評価されます。
使用して
ssh host "print \$HOST"
または
ssh host 'print $HOST'
あなたはあなたをブロックすることができます地元の拡張ホストでシェルを実行しますが、シェルにホストremote-server
を拡張させます。
答え2
二重引用符を使用しているため、シェルは$HOST
コマンドを実行して起動する前にコマンドを評価するため、コマンドをリモートサーバーに送信しますssh
。print localhost
代わりに一重引用符を使用してください。
shadur@proteus:~$ ssh axiom "echo $HOSTNAME"
shadur@axiom's password:
proteus
shadur@proteus:~$ ssh axiom 'echo $HOSTNAME'
shadur@axiom's password:
axiom