如何通过脚本批量修改主机账户密码,注意这是linux服务器,且账户已经过期,第一次登录需要提供当前密码,之后重复两次输入新密码
时间: 2024-03-11 21:48:55 浏览: 15
你可以使用以下脚本来批量修改主机账户密码:
```bash
#!/bin/bash
# 常量定义
ACCOUNT_NAME="your_account_name"
NEW_PASSWORD="your_new_password"
# 获取主机列表
HOST_LIST=$(cat host_list.txt)
# 循环遍历每个主机
for HOST in $HOST_LIST
do
# 修改密码
ssh $ACCOUNT_NAME@$HOST 'passwd' << EOF
# 第一次输入当前密码
current_password
# 第二次输入新密码
$NEW_PASSWORD
# 第三次确认新密码
$NEW_PASSWORD
EOF
done
```
说明:
- `ACCOUNT_NAME`:需要修改密码的账户名。
- `NEW_PASSWORD`:新的密码。
- `HOST_LIST`:主机列表,每行一个主机名或IP地址,保存在 `host_list.txt` 文件中。
- `ssh $ACCOUNT_NAME@$HOST 'passwd'`:通过 SSH 登录主机并执行 `passwd` 命令。
- `<< EOF` 和 `EOF`:定义一个 shell 命令的输入流,用于输入密码。
注意:
- 在第一次执行脚本时,需要手动输入当前密码。
- 为了安全起见,建议在执行脚本前先测试一下,确认能够正确修改密码。
相关问题
帮我写一个使用shell脚本,完成批量修改主机密码,当前的账户密码已经过期,需要先输入一次当前密码,再输入两次新密码完成修改
好的,我可以为您提供一个简单的shell脚本,以完成上述任务:
```bash
#!/bin/bash
# 获取当前密码
read -s -p "请输入当前密码: " current_password
echo ""
# 获取新密码
read -s -p "请输入新密码: " new_password
echo ""
# 再次确认新密码
read -s -p "请再次输入新密码: " new_password_confirm
echo ""
# 判断两次输入的新密码是否一致
if [ "$new_password" != "$new_password_confirm" ]; then
echo "两次输入的新密码不一致,请重新运行脚本并输入相同的新密码。"
exit 1
fi
# 批量修改主机密码
# 假设主机列表存储在hosts.txt文件中
# 假设ssh登录用户名为root
# 假设ssh端口号为22
while read host; do
sshpass -p "$current_password" ssh root@"$host" -p 22 'echo "root:'"$new_password"'" | chpasswd'
done < hosts.txt
echo "密码修改完成。"
```
脚本中使用了`sshpass`命令,需要先安装才能使用,安装方法如下:
```bash
sudo apt-get install sshpass
```
需要注意的是,此脚本仅供学习和参考,实际应用中请根据具体情况进行修改和调整。
帮我写一个shell脚本,完成批量修改centos7主机密码,目前情况是当前的账户密码已经过期,登录后需要先输入一次当前密码,再输入两次新密码完成修改
好的,我可以为您提供一个简单的shell脚本,以完成上述任务:
```bash
#!/bin/bash
# 获取当前密码
read -s -p "请输入当前密码: " current_password
echo ""
# 获取新密码
read -s -p "请输入新密码: " new_password
echo ""
# 再次确认新密码
read -s -p "请再次输入新密码: " new_password_confirm
echo ""
# 判断两次输入的新密码是否一致
if [ "$new_password" != "$new_password_confirm" ]; then
echo "两次输入的新密码不一致,请重新运行脚本并输入相同的新密码。"
exit 1
fi
# 批量修改主机密码
# 假设主机列表存储在hosts.txt文件中
while read host; do
sshpass -p "$current_password" ssh root@"$host" 'echo "'"$new_password"'" | passwd --stdin root'
done < hosts.txt
echo "密码修改完成。"
```
脚本中使用了`sshpass`命令,需要先安装才能使用,安装方法如下:
```bash
sudo yum install -y sshpass
```
需要注意的是,此脚本仅供学习和参考,实际应用中请根据具体情况进行修改和调整。