2016-03-23 11 views
0

Bu yapmak çalışılıyor şeydir.

ssh first.com 
ssh second.com 
rpm -qa | grep exampleString 

Nasıl bir değişkene bir satır içine aşağıdaki üç adımı birleştirir ve çıktı saklayabilirsiniz: elle ilk haline Shh ve ardından ikinci içindeki ssha o zaman ben çıktısını almak komutunu çalıştırın?

+0

not. –

+0

Komutlarınızı gruplandırmak ve ana bilgisayar adını komuttan parametreden ayırmak için alıntılar veya başka bir teknik kullanmanız gerekir. Komut ilk ssh'a ne geçti? Komutun ikincisine ne geçti? İlgili kabuklar bunu nasıl anlıyor? – mpez0

+0

'ssh second.com rpm -qa | grep exampleString 'veya "ssh second.com rpm -qa | grep exampleString" davranışı değiştirmedi. Komutları başka nasıl gruplayabilirim? – Nelson

cevap

1

kullanın düzgün alıntı veya kaçan:

fromServer=$(ssh -A first.com 'ssh second.com rpm -qa | grep exampleString') 
echo $fromServer 

veya

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 

düzenleme: Oooooooh, sinsi, seni yaptıklarını görmedik iki SSH

☺ Öyleyse biraz alıntı yapmaya ihtiyacın olacak çünkü ur borusu first.com tarafından yorumlanmaktadır. Eğer first.com tarafından yorumlanır değil böylece boru kaçmak zorunda,

[email protected] % rpm -qa | grep exampleString 

second.com sunucuda:

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'") 

Ne oluyor çalıştırmak istediğiniz olmasıdır: Burada bu geçici bir çözüm için üç yol var sunucu:

[email protected] % ssh second.com rpm -qa \| grep exampleString 
or 
[email protected] % ssh second.com 'rpm -qa | grep exampleString' 

ama hala istemiyorum sonra tekrar, sen, o, yerel iş istasyonundan, first.com idam olmalı

[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' 

sonra, size bir değişkene bu bütün komutun çıktısını koyabilirsiniz bir çıktı elde emin olduktan sonra: boru yorumlanır görmek, size alıntı/kaçan ikinci bir katman eklemeniz gerekir

grep muhtemelen kaynak sunucuda çalıştırmak için gidiyor, içine sshing ediyoruz dEĞİL olanlar | sizin
VAR=$(ssh first.com "ssh second.com 'rpm -qa | grep exampleString'") 

HTH

+0

'' ifadesini eklemek herhangi bir davranışı değiştirmedi. – Nelson

+0

Ve eğik çizgi bir şey yapmadı. – Nelson

+0

Sorununuz, şu anki iş istasyonunuz ve ikinci sayfanın ana bilgisayarı arasında yorumlanmasını istemediğiniz bir borudur. Bu nedenle, tüm ifadeyi iki kez alıntı yapmanız veya iki kez boru karakterinden kaçmanız gerekir. ters eğik çizgi. – zmo