2017-01-25 31 views
1

上で実行されたときに$ SSH_CLIENTエコー空を返します。..SSH - それが接続されたらコマンドは、SSH接続に接続されている初期接続

ssh -p $port -t [email protected]$ip "echo $SSH_CLIENT; bash" 

...空行のエコーがあるように思われます。
つまり、新しい行だけがサーバーにエコーされています。私は手動で

echo $SSH_CLIENT 

を貼り付ける場合

は、それだけで正常に動作します。

なぜですか?何が解決策になりますか?

答えて

2

リモートシェルはパラメータを見ているように、単一引用符を使用してください。ローカルシェルでは設定されていないので、何も取得できません。echoがデフォルトで生成する改行で、リモートシェルで実行されます。

あなたが通常の方法のいずれかでSSH_CLIENTの前で$をエスケープする必要があります。それは、この場合には厳密には必要ではないが、あなたは言葉を防ぐために、あなたの変数の展開を引用すべきである、ということ

ssh ... 'echo $SSH_CLIENT; bash' 
ssh ... "echo \$SSH_CLIENT; bash" 

注意分割とパス名の拡張。

1

$SSH_CLIENTは、実行前にローカルホスト上で最初に展開されますssh;設定されていない場合、リモートホストはコマンドecho; bashを見ます。 sshコマンドの実行前に、変数はローカルシェルに展開されている

ssh -p $port -t [email protected]$ip 'echo $SSH_CLIENT; bash' 
関連する問題