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
$rcno 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.