O comando funciona localmente, mas falhou no remoto

0

Eu não entendo porque meu comando falha quando eu o uso remotamente com ssh ou pdsh:

Localmente funciona:

line=' last -F | grep -vE '^(svc_qual|s594998a|reboot|s823850a|s825722a|s559857a|s603256a|root|s823656a|s230281a|s638181a|s835786a)' | head -1 ';login='echo $line | awk '{print $1}''dm;user='getent passwd $login' ;echo $line ; echo $user

Mas no controle remoto, ele falha:

ssh User@Server " line='last -F | grep -vE '^(svc_qual|s594998a|reboot|s823850a|s825722a|s559857a|s603256a|root|s823656a|s230281a|s638181a|s835786a)' | head -1 ';login='echo $line | awk '{print $1}''dm;user='getent passwd $login' ;echo $line ; echo $user  "

Eu também tentei com o pdsh:

/opt/techunix/bin/pdsh.sh -f /tmp/vmod/servers -c "line='last -F | grep -vE '^(svc_qual|s594998a|reboot|s823850a|s825722a|s559857a|s603256a|root|s823656a|s230281a|s638181a|s835786a)' | head -1 ';login='echo $line | awk '{print $1}''dm;user='getent passwd $login' ;echo $line ; echo $user"
    
por Med 20.06.2017 / 12:01

1 resposta

0

Você precisará excluir caracteres que não deseja que seu shell local interprete, ou seja, " '" e " $ "

Em vez de:

ssh User@Server " line='last -F | grep -vE '^(svc_qual|s594998a|reboot|s823850a|s825722a|s559857a|s603256a|root|s823656a|s230281a|s638181a|s835786a)' | head -1 ';login='echo $line | awk '{print $1}''dm;user='getent passwd $login' ;echo $line ; echo $user  "

Faça:

ssh User@Server " line=\'last -F | grep -vE '^(svc_qual|s594998a|reboot|s823850a|s825722a|s559857a|s603256a|root|s823656a|s230281a|s638181a|s835786a)' | head -1 \';login=\'echo \$line | awk '{print $1}'\'dm;user=\'getent passwd \$login\' ;echo \$line ; echo \$user  "

Você também pode optar por colocar aspas simples em todo o comando ssh. Em seguida, você só precisa alterar as aspas simples do comando awk e grep entre aspas duplas:

ssh User@Server ' line='last -F | grep -vE "^(svc_qual|s594998a|reboot|s823850a|s825722a|s559857a|s603256a|root|s823656a|s230281a|s638181a|s835786a)" | head -1 ';login='echo $line | awk "{print $1}"'dm;user='getent passwd $login' ;echo $line ; echo $user  '
    
por 20.06.2017 / 16:01