scp (v4) copiar do remoto para vários nomes de arquivos locais

2

Eu fiz um monte de googling e acho que o que eu estou tentando fazer não é possível com o openssh / scp v4.x, mas queria perguntar aqui, caso alguém tenha uma solução criativa.

Eu quero copiar vários arquivos de um host remoto (não quero o diretório inteiro, mas sei os nomes dos arquivos e são nomes estáticos) para um diretório local, mas quero que cada arquivo tenha um novo nome - quero o nome da máquina pré-anexado ao nome do arquivo.

Além disso, o motivo pelo qual estou tentando fazer isso é ter apenas 1 login (sem chaves ssh) para cada host remoto (não quero digitar senha para cada arquivo).

aqui está o que eu tenho:

machine="server1.nyc.ny"
logdir="/var/log/jboss"
logs="garbage.log splunk.log jboss.log"

for BOX in ${machine[@]};do
scp $BOX:$logdir/\{"${logs[0]}","${logs[1]}","${logs[2]}"\} ./
done

isso funciona para obter todos os arquivos com 1 login no host remoto, mas, no final, eu terei vários hosts remotos, portanto, quero pré-pendurar o nome da máquina no nome do arquivo de log - por exemplo: server1. nyc.ny-garbage.log

a mesma sintaxe para obter os arquivos não funciona para o destino. meu ssh / scp é v4, então não posso usar as opções do ControlPersist.

alguma solução criativa? muito obrigado!

ps: a matriz de nomes de arquivos de log não é necessária aqui, mas eu a uso porque alguns usuários possuem chaves ssh, portanto, um loop aninhado usando essas matrizes funciona muito bem para elas. Eu preciso de uma solução para usuários que não possuem chaves ssh e, portanto, minimizam a quantidade de digitação de senha.

    
por j-marr 08.09.2014 / 21:43

1 resposta

0

Posso estar faltando alguma coisa, mas parece que você precisa apenas de uma etapa mv extra para renomear os arquivos copiados. Algo como:

machine="server1.nyc.ny"
logdir="/var/log/jboss"
logs="garbage.log splunk.log jboss.log"
targets=""

for BOX in ${machine[@]};do
    scp $BOX:$logdir/\{"${logs[0]}","${logs[1]}","${logs[2]}"\} ./
    for log in ${logs[@]}; do
        mv "$log" $BOX_"$log"
    done
done
    
por 08.09.2014 / 22:06