shell批量修改主机密码并取回密码文件脚本——筑梦之路

实现目标:利用shell脚本批量修改主机密码,并将存储密码的文件取回

环境说明:需要修改各主机的hostname,且各个主机的hostname不能相同

#批量修改主机名称的脚本

#!/bin/bash

#定义主机的数组
my_hosts=(192.168.1.10 192.168.1.11 192.168.1.12 192.168.1.13)

#循环遍历数组
for(( i=0;i<${#my_hosts[@]};i++)) do
    #${#my_hosts[@]}获取数组长度用于循环
    echo ${my_hosts[i]};
    ansible ${i} -i /etc/ansible/hosts -m shell -a "hostnamectl set-hostname ${i}"      
done;



#修改密码的脚本mp.sh

#!/bin/bash

#需要修改的用户名
username=root

#生成随机密码15位,包含数字 大小写英文 特殊字符
password=`< /dev/urandom tr -dc 0-9-A-Z-a-z-@%#|head -c ${1:-15}`

#获取主机的hostname
hostname=`hostname`

#获取ip的命令
#ip addr | awk '/^[0-9]+: / {}; /inet.*global/ {print gensub(/(.*)\/(.*)/, "\\1", "g", $2)}' 

#保存密码到txt文件,该文件需要取回
echo "${hostname} ${username}新密码为 $password" >> /home/${hostname}_password_for_${username}.txt

#执行修改密码
echo ${password} | passwd --stdin ${username}


----------------------
说明:ansible和配置好hosts

cat /etc/ansible/hosts

[test]
192.168.1.10 ansible_host_user=root  ansible_host_pass='123456'  ansible_ssh_port=22
192.168.1.11 ansible_host_user=root  ansible_host_pass='123456'  ansible_ssh_port=22
192.168.1.12 ansible_host_user=root  ansible_host_pass='123456'  ansible_ssh_port=22
192.168.1.13 ansible_host_user=root  ansible_host_pass='123456'  ansible_ssh_port=22

#main脚本

#!/bin/bash

#脚本分发
ansible test -i /etc/ansible/hosts -m copy -a "src=/root/mp.sh dest=/home/"
ansible test -i /etc/ansible/hosts -m shell -a "cd /home/ && chmod +x mp.sh && sh mp.sh"

#取回密码文件
mkdir -p /home/all_passwords && cd /home/all_passwords/
ansible test -i /etc/ansible/hosts -m fetch -a "src=/home/{{inventory_hostname}}_password_for_root.txt dest=./"

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值