Piszę skrypt perla, aby zalogować się do serwera za pomocą ssh i wykonać pewne polecenia powłoki na serwerze. Problem polega na tym, że serwer jest dostępny tylko po zalogowaniu się na innym serwerze. (Używam logowania bez hasła z kluczami ssh).Cytowanie w bashu i perlu w rekursywnej komendzie ssh
Poniższy skrypt bash działa poprawnie, i ilustruje problem:
#! /bin/bash
server1="login.uib.no"
server2="cipr-cluster01"
ssh "$server1" "ssh $server2 \"echo \\\"\\\$HOSTNAME\\\"\""
wypisuje prawidłową nazwę hosta do mojego ekranu: cipr-cluster01
. Jednak, gdy próbuje zrobić to samo w Perl:
my $server1="login.uib.no";
my $server2="cipr-cluster01";
print qx/ssh "$server1" "ssh $server2 \"echo \\\"\\\$HOSTNAME\\\"\""/;
pojawia się następujący komunikat: login.uib.no
. Tak myślę, że są pewne problemy z cytowaniem skryptu perla.
Dzięki, to działa! (Zauważyłem również, że 'print qx/ssh $ server1 \" ssh $ server2 \\\ "echo \\\\\\\ $ HOSTNAME \\\" \ "/;' działa ... ale twoje polecenia są prostsze) . –