使用、適切な引用やエスケープ:
fromServer=$(ssh -A first.com 'ssh second.com rpm -qa | grep exampleString')
echo $fromServer
または
fromServer=$(ssh -A first.com ssh second.com rpm -qa \| grep exampleString)
echo $fromServer
% VAR=$(ssh -C [email protected] ls -la \| grep vim)
% echo $VAR
-rw------- 1 user user 15153 Mar 22 13:45 .vimrc
を編集:oooooooh、卑劣な、私はあなたがやっていた見なかった SSH
☺だから、もう少し引用する必要があるでしょう。 URパイプは
first.com
によって解釈されます。あなたはそれが
first.com
によって解釈されていないので、パイプをエスケープする必要がありますので、
[email protected] % rpm -qa | grep exampleString
をsecond.com
サーバー上:
fromServer=$(ssh -A first.com ssh second.com rpm -qa \\\| grep exampleString)
fromServer=$(ssh -A first.com 'ssh second.com rpm -qa \| grep exampleString')
fromServer=$("ssh -A first.com 'ssh second.com rpm -qa | grep exampleString'")
何が起こっていることは、あなたが実行したいということです。ここではそれを回避するには3つの方法がありますサーバー:
[email protected] % ssh second.com rpm -qa \| grep exampleString
or
[email protected] % ssh second.com 'rpm -qa | grep exampleString'
しかし、あなたはまだしたくないとして、再度、あなたは、それがあなたのローカルワークステーションから、first.com
上で実行されている必要がありパイプの解釈を参照するには、引用/エスケープの第二の層を追加する必要があります。
[email protected] % ssh first.com "ssh second.com 'rpm -qa | grep exampleString'"
or
[email protected] % ssh first.com 'ssh second.com rpm -qa \| grep exampleString'
、その後のあなたは確信していると、あなたは、変数にその全体のコマンドの出力を置くことができ、出力を得る:
グレップおそらく元のサーバー上で実行するために起こっている、あなたにsshingていませもの|あなたが
VAR=$(ssh first.com "ssh second.com 'rpm -qa | grep exampleString'")
HTH
出典
2016-03-23 19:44:23
zmo
ノート。 –
コマンドをグループ化し、コマンドからホスト名とパラメータを区別するために、引用符またはその他の技術を使用する必要があります。最初のsshに渡されるコマンドは何ですか? 2番目のコマンドに渡されるコマンドは何ですか?それぞれのシェルはどのようにそれを把握していますか? – mpez0
'ssh second.com rpm -qa | grep exampleString 'または「ssh second.com rpm -qa | grep exampleString」は動作を変更していないようです。他にどのようにコマンドをグループ化できますか? – Nelson