PDA

View Full Version : [SSH comando remoto pipe] perplessitą


toni00t
31-01-2015, 19:14
ciao ho riscontrato un problema sicuramente banale , ma dal quale non riesco a saltarne fuori :
se do il seguente comando

var=`ssh 192.168.70.2 "df /root | grep "dev" | awk '{print \$4`}' " `

mi stampa l'intera riga con /dev/sda e tutti gli altri campi , mentre se


var=`ssh 192.168.70.2 "df /root | grep "dev" " `
echo "$var" | awk '{print $4`}'

mi stampa effettivamente ciņ che voglio , ovvero lo spazio disponibile . Qual'č l'errore? :muro:
come viene processato l'output da remoto?

pigi2pigi
31-01-2015, 19:45
provato a scrivere:
var=`ssh 192.168.70.2 df /root | grep "dev" | awk '{print \$4}'`

toni00t
01-02-2015, 07:44
provato a scrivere:
var=`ssh 192.168.70.2 df /root | grep "dev" | awk '{print \$4}'`
ciao ,grazie ma io voglio che il comando sia eseguito interamente in remoto ;
inoltre non essendoci i doppi apici come fa la shell a sapere che quello č un comando
eseguito da ssh?


mi sono reso conto che c'č anche un problema di imcomprensione del quoting :
se scrivo

echo ' 'ciao' '

giustamente mi stampa ciao perchč il single quotes non protegge da sč stesso ;
tuttavia se scrivo

awk ' '{print \$4}' '


bash dice che manca la parentesi di chiusura. Per quale oscuro motivo?

pigi2pigi
01-02-2015, 12:55
Perche quando metti " viene chiuso dal successivo ", non si possono nestare e lo stesso fa ' quindi

echo ' 'ciao' '
č uguale a echo spazio ciao spazio e funziona uguale
mentre
awk ' '{print \$4}' '
non funziona perchč {} non č tra apici, funziona se
awk ' ' '{print \$4}' ' '

Quando bisogna racchiudere una stringa fra apici l'unica soluzuione č usare un tipo di apice per una cosa e l'altro per il resto, (facendo le opportune considerazioni sulla diversitą fra " e ') tipo

ssh 192.168.1.10 "df /root | grep dev | awk '{print \$4}' "
13696804
oppure
ssh 192.168.1.10 "df /root | grep 'dev' | awk '{print \$4}' "
13696804

il grep "dev" non lo puoi fare

oppure se vuoi assegnare una variabile (oggi sto litigando con `)
var=$(ssh 192.168.1.10 "df /root | grep 'dev' | awk '{print \$4}' ");echo $var
13696672

toni00t
05-02-2015, 21:40
grazie!:)