Eu posso pensar em algumas maneiras de fazer isso, mas eu recomendo configurar o ssh
access sem senha, você me agradecerá mais tarde.
1. Configure o acesso sem senha às suas máquinas.
Este é, de longe, o melhor método, já que você deve se conectar às máquinas novamente e isso tornará sua vida muito mais fácil. Também é muito mais seguro do que as outras opções, mesmo se você optar por usar uma frase secreta vazia, já que você não estará jogando senhas sem criptografia.
Primeiro, crie uma chave pública ssh
em sua máquina:
ssh-keygen -t rsa
Ser-lhe-á pedida uma senha que lhe será pedida para introduzir a primeira vez em que executar qualquer comando ssh após cada início de sessão. Isso significa que, para vários comandos ssh
ou scp
, você só precisará inseri-lo uma vez. No entanto, você pode deixá-lo vazio para ter acesso totalmente sem senha.
Depois de gerar sua chave pública, copie-a (como user1
) para cada computador em sua rede:
while read ip; do
ssh-copy-id -i ~/.ssh/id_rsa.pub user1@$ip
done < IPlistfile.txt
Você terá que inserir manualmente a senha para cada IP (a menos que você use uma das soluções abaixo para esta etapa também), mas uma vez feito isso, você será capaz de copiar arquivos para qualquer uma dessas máquinas com um simples:
while read ip; do
scp /home/user1/Desktop/filetobesent.txt user1@$ip:~/Desktop
done < IPlistfile.txt
Se você tiver sshpass
instalado, poderá automatizá-lo para não precisar digitar sua senha para cada máquina:
SSHPASS='password'
while read ip; do
sshpass -e scp /home/user1/Desktop/filetobesent.txt user1@$ip:~/Desktop
done < IPlistfile.txt
2. Instalar sshpass
Este é um ótimo programa que permite passar uma senha ssh
como um parâmetro de linha de comando. Esta, obviamente, não é uma solução muito segura e eu recomendo que você leia a seção "Considerações sobre segurança" de man sshpass
.
De qualquer forma, provavelmente está disponível nos repositórios da sua distribuição, nos sistemas baseados no Debian ele pode ser instalado com
sudo apt-get install sshpass
Eu não posso verificar, já que não tenho uma máquina baseada em RedHat, mas pelo que posso dizer, pesquisando aqui , deve ser instalável no Fedora com
sudo yum install sshpass
Depois de ter instalado, você pode simplesmente executar
SSHPASS='password'
while read ip; do
sshpass -e scp /home/user1/Desktop/filetobesent.txt user1@$ip:~/Desktop
done < IPlistfile.txt
A opção -e
informa sshpass
para obter a senha da variável SSHPASS
. Isso é um pouco mais seguro do que dar a ele um parâmetro com a opção -p
.
IMPORTANTE:
Isso falhará silenciosamente se o servidor ao qual você está se conectando for desconhecido, se sua chave pública não estiver armazenada em sua máquina. Se isso não parecer estar funcionando, basta conectar uma vez ( ssh
ou scp
) à máquina remota e aceitar sua chave pública.
3. Use pscp
em vez
pscp
é uma alternativa para scp
que aceita a senha como um parâmetro de linha de comando. Em sistemas baseados em Debian, isto pode ser instalado com
sudo apt-get install putty-tools
Como eu disse antes, não posso verificar, mas deve ser instalável no Fedora com
sudo yum install putty
Você pode copiar seus arquivos com
while read ip; do
pscp -pw password /home/user1/Desktop/filetobesent.txt user1@$ip:~/Desktop
done < IPlistfile.txt