A peça que falta no seu script parece ser a variável rc
. Seu script (principalmente) está sendo executado em sua máquina local, então você poderia
- cria um nome de arquivo temporário fora da parte redirecionada,
- use esse nome dentro da parte redirecionada e
- echo
$rc
no arquivo temporário e - leia a variável fora da parte direcionada.
Para um nome de arquivo temporário, geralmente é feito com mktemp
, então as partes podem parecer
- fora
mytemp=$(mktemp) trap "rm -f $mytemp" EXIT HUP INT QUIT
- dentro
# get my IP-address from 'SSH_CLIENT' my_addr=\$(echo "\$SSH_CLIENT" |awk '{printf \;}') result=\$(mktemp) echo "\$rc" >\$result scp \$result \$my_addr:$mytemp rm -f \$result
- fora
rc=$(cat $mytemp)
A razão pela qual $someID
não é passado do servidor local para o remoto é que o seu documento aqui começa com
ssh -v $remoteServer << 'EOF' >> $LOG 2>&1
tem citado o marcador 'EOF'
, dizendo ao shell para não expandir a string antes de passá-la ao comando ssh
. Se você quiser a expansão, retire as cotações. No entanto, quando você fizer isso, terá que colocar uma barra invertida antes de cada caractere $
que deseja que o shell remoto expanda.
Pode ser mais simples usar a opção -q
(quiet) para ssh / scp e reduzir a saída do seu script para algo que poderia ser facilmente redirecionado para uma variável.