Verwenden Sie eine korrekte Angabe oder Flucht:
fromServer=$(ssh -A first.com 'ssh second.com rpm -qa | grep exampleString')
echo $fromServer
oder
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
edit: oooooooh, hinterhältig, ich habe nicht gesehen, Sie taten zwei SSH ☺
Dann brauchst du ein bisschen mehr Zitate, weil du dich nicht haben willst Das Rohr wird von first.com
interpretiert. Hier sind drei Möglichkeiten, um daran zu arbeiten:
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'")
Was passiert ist, dass Sie ausführen möchten:
[email protected] % rpm -qa | grep exampleString
auf dem second.com
Server, so dass Sie das Rohr zu entkommen, so dass es durch die first.com
nicht interpretiert ist Server:
[email protected] % ssh second.com rpm -qa \| grep exampleString
or
[email protected] % ssh second.com 'rpm -qa | grep exampleString'
aber dann wieder, müssen Sie das von Ihrer lokalen Workstation auf first.com
, ausgeführt haben, wie Sie immer noch nicht wollen um zu sehen, interpretiert das Rohr, müssen Sie eine zweite Schicht zu entkommen/zitieren hinzuzufügen:
[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'
und dann, sobald Sie einen Ausgang erhalten sind sicher, dass Sie, dass ganzer Befehls der Ausgabe in einer Variablen setzen können:
VAR=$(ssh first.com "ssh second.com 'rpm -qa | grep exampleString'")
HTH
beachten Sie, dass Ihre | grep wahrscheinlich auf Ihrem Ursprungsserver ausgeführt wird, nicht die, die in die Sie sshing. –
Sie müssen Anführungszeichen oder eine andere Technik verwenden, um Ihre Befehle zu gruppieren und den Hostnamen vom Befehl vom Parameter zu unterscheiden. Was ist der Befehl, der an den ersten ssh übergeben wurde? Was ist der Befehl an den zweiten weitergegeben? Wie finden die jeweiligen Muscheln das heraus? – mpez0
'ssh second.com rpm -qa | grep exampleString 'oder' ssh second.com rpm -qa | grep exampleString 'schien das Verhalten nicht zu ändern. Wie sonst kann ich die Befehle gruppieren? – Nelson