Use isto:
#!/bin/bash
hosts=( $(nmap -sP 192.168.6.0/20 | grep -Eo "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+") )
for ip in "${hosts[@]}"; do
rsync -a /location/to/file.txt user@"$ip":/where/to/put/
done
Aqui eu confiei em nmap
para verificar quais hosts estão ativos, a saída pode estar errada em alguns casos devido a problemas de firewall. Primeiro, salvei os endereços IP ativos em uma matriz e, em seguida, executei a matriz para obter o arquivo copiado para os hosts usando rsync
, um por um.
Você deve usar autenticação baseada em chave para isso, senão você pedirá a senha de cada host, Se você não tiver baseado em chave, você pode usar outros métodos UNSECURED e absolutamente NÃO RECOMENDADOS, como sshpass
.