![如何在局域网内所有活跃 IP 中复制同一个文件](https://linux22.com/image/1050073/%E5%A6%82%E4%BD%95%E5%9C%A8%E5%B1%80%E5%9F%9F%E7%BD%91%E5%86%85%E6%89%80%E6%9C%89%E6%B4%BB%E8%B7%83%20IP%20%E4%B8%AD%E5%A4%8D%E5%88%B6%E5%90%8C%E4%B8%80%E4%B8%AA%E6%96%87%E4%BB%B6.png)
请建议我如何将单个相同的文件复制到 LAN 中的所有活动 IP 地址、所有主机中的相同用户和相同密码。
答案1
用这个:
#!/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
这里我依靠nmap
检查哪些主机处于启动状态,由于防火墙问题,输出在某些情况下可能会出错。首先,我将活动的 IP 地址保存在一个数组中,然后遍历该数组以rsync
逐个将文件复制到主机。
你应该使用基于密钥的身份验证否则它会要求你输入每个主机的密码,如果你没有基于密钥的密码,你可以使用其他一些不安全的、绝对不推荐的方法,比如sshpass
。