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.