Ssh em vários servidores e mesclar arquivos em um

2

Consegui fazer isso com um servidor com o seguinte código:

ssh server001 << EOF
cat /dir/file001.txt >> somefile
EOF

Com vários servidores, meu script é capaz de ssh nos servidores, mas por alguns motivos, ele não consegue encontrar meus arquivos file00x e me apresenta o seguinte erro: cat: /dir/file00x.txt: No such file or directory , mesmo que o arquivo exista.

Aqui está o meu código:

 for i in {10..15}; do
    ssh $i      //for simplicity, theres some text manipulation to get the actual name of the server
    cat /tmp/$i.txt
 done << newfile.txt

Eu também tentei esse método (claramente não é o caminho certo), mas o arquivo ainda não foi encontrado:

 for i in {10..15}; do
    ssh $i      
    cat /tmp/$i.txt >> newfile.txt
 done 

Tentei isso também, mas também não funcionou:

 for i in {10..15}; do
    ssh $i  << EOF    
    cat /tmp/$i.txt >> newfile.txt
    EOF
 done 
    
por user3669481 21.08.2016 / 20:54

1 resposta

0

Então, como eu entendi a pergunta, você precisa acessar /tmp/$i.txt na máquina remota e não importa onde newfile.txt é acessado.

Nesse caso, não precisamos nos preocupar com os documentos AQUI ou ser inteligentes, um simples

ssh $i cat /tmp/$i.txt >> newfile.txt

executará o cat na máquina remota, mas será anexado localmente.

Isso pode ser colocado em loop:

for i in {10..15}
do
  ssh $i cat /tmp/$i.txt >> newfile.txt
done

Se, em vez disso, você quiser que o redirecionamento também ocorra na máquina remota, podemos citar o comando:

for i in {10..15}
do
  ssh $i "cat /tmp/$i.txt >> newfile.txt"
done

Agora, o cat $i.txt >> newfile.txt acontece na máquina remota.

Na sua configuração, não importa.

    
por 21.08.2016 / 21:31