用shell写一个批量推送公钥的脚本
时间: 2023-07-07 09:30:21 浏览: 60
可以使用以下脚本批量推送公钥:
```bash
#!/bin/bash
# 读取公钥文件路径和目标主机列表文件路径
read -p "请输入公钥文件的绝对路径:" pubkey_path
read -p "请输入目标主机列表文件的绝对路径:" hostlist_path
# 读取登录用户名和登录密码
read -p "请输入登录用户名:" username
read -s -p "请输入登录密码:" password
echo
# 循环遍历目标主机列表文件中的主机名
while read hostname; do
echo "正在推送公钥至主机 ${hostname} ..."
# 将公钥文件推送至目标主机的~/.ssh/authorized_keys文件中
sshpass -p "${password}" ssh-copy-id -o StrictHostKeyChecking=no -i "${pubkey_path}" "${username}@${hostname}"
echo "公钥推送完成!"
done < "${hostlist_path}"
```
使用方法:
1. 将以上脚本保存为`push_pubkey.sh`
2. 给脚本添加执行权限:`chmod +x push_pubkey.sh`
3. 运行脚本:`./push_pubkey.sh`
4. 按照提示依次输入公钥文件路径、目标主机列表文件路径、登录用户名和登录密码即可。目标主机列表文件中每行一个主机名。
注意:此脚本依赖于`sshpass`工具,如果你的系统中没有安装,请先安装该工具。