SSH em vários servidores e salvar a saída de vários comandos no arquivo no servidor local

1

Eu quero o SSH em vários servidores (host 1, host2 e host 3) e salve a saída de vários comandos (cmd1, cmd2 etc) no arquivo (output.properties) no servidor local. Eu sei que existem alguns posts semelhantes a este, mas eu não tenho certeza onde estou indo errado. Abaixo está o trecho de código.

folderPath="cd /usr/local/apps/tempdir";
echo $folderPath;
eval $folderPath;

# host 1
echo RepCard1=$(expr $(grep -r "sample text" * | wc -l) / 2) >> /usr/local/host1/tempdir/output.properties;

# Server 2

ssh -T user@host2 <<EOF >>/usr/local/host1/tempdir/output.properties;
#alias GetDuplicateCardStats="cd /usr/local/apps/tempdir"
folderPath="cd /usr/local/apps/tempdir";
echo $folderPath;
eval $folderPath;

echo RepCard2=$(expr $(grep -r "sample text" * | wc -l) / 2);
exit
EOF

. /usr/local/host1/tempdir/output.properties;

echo "host 1"
echo $RepCard1

echo "host 2"
echo $RepCard2
# RepCard2 is always executed on Host 1 and print value from host 1

Qual é o erro no script acima?

    
por Hashmukh Punamia 14.10.2014 / 19:56

1 resposta

1

Nesta linha:

echo RepCard2=$(expr $(grep -r "sample text" * | wc -l) / 2);

expr e grep serão executados no sistema local, não no servidor SSH. Você precisa escapar dos caracteres $ para que eles sejam mantidos no documento aqui e enviados para o servidor.

echo RepCard2=\$(expr \$(grep -r "sample text" * | wc -l) / 2);
    
por 14.10.2014 / 20:55