批量修改密码脚本--------小练习

批量修改脚本练习

批量修改文件名脚本

需求:将test目录下所有以.txt结尾的文件名字修改成.log结尾
mkdir /test
touch {1..8}.txt
touch {1..5}.jpg
touch {1..4}.mp2

1. 切换到test目录
cd /test

2. 打开目录,查看目录下的内容
ls *.txt

3. 遍历出.txt文件结尾的文件
for name in `ls *.txt`		

4. 将.txt结尾的文件名部分进行切割,切割出文件名
head_name=`ls *.txt | cut -d. -f1`	

5. 将切割出来的文件名与.log进行拼接覆盖原文件名字
mv $i $head_name.log

#编写脚本

vim test.sh
# !/bin/bash
	cd /test
	
	for name in `ls *.txt`
	do
	        head_name=`echo $name | cut -d .-f1'
	        mv $name $head_name.log
	done    

./test.sh			执行脚本  

在这里插入图片描述

远程修改单台机器的密码(非交互)

#一行
[root@yum01 ~]# ssh root@远程主机ip "echo 123 | passwd root --stdin"

修改单台机器密码的脚本

# 修改单台机器的密码

#!/bin/bash

while read line
do

 user="root"
 old_pass="111"
 new_pass="123"
 ip=192.168.100.50
 cmd="echo $new_pass | passwd root --stdin"

 expect << EOF
  spawn ssh $user@$ip $cmd

  expect {
    "yes/no" {send "yes\r";exp_continue}
    "*assword" {send "$old_pass\n"}
   }

  expect eof
 EOF
done < host.txt

批量修改密码脚本

#将需要操作的变量存在一个文件中,文件格式如下:

[root@yum01 scripts]# cat host.txt 
#批量修改密码
root:111:123:192.168.100.40
egon:xxx:yyy:192.168.100.50
tom:222:333:192.168.100.60           #用户名:原密码:新密码:用户ip


[root@yum01 scripts]# while read line;do echo $line ;done < host.txt 
#批量修改密码
root:111:123:192.168.100.40
egon:xxx:yyy:192.168.100.50
tom:222:333:192.168.100.60 #用户名:原密码:新密码:用户ip


#!/bin/bash


while read line
do
    

 user=`echo $line | awk -F: '{print $1}'`
 old_pass="`echo $line | awk -F: '{print $2}'`
 new_pass=`echo $line | awk -F: '{print $3}'`
 ip=`echo $line | awk -F: '{print $4}'`
 cmd="echo $new_pass | passwd root --stdin"

 expect << EOF
  spawn ssh $user@$ip $cmd

  expect {
    "yes/no" {send "yes\r";exp_continue}
    "*assword" {send "$old_pass\n"}
   }

  expect eof
 EOF
done < host.txt

批量执行命令脚本

- 参考上一个脚本,我们只需要对脚本的一些变量稍加改动,就可以让多个服务器同时执行一条命令。


# 批量执行命令
#!/bin/bash

read -p "请输入您想要批量执行的命令: " cmd  # echo '1.1.1.1 www.baidu.com' >> /etc/hosts

while read line
do
    
 # 修改单台机器的密码
 user=`echo $line | awk -F: '{print $1}'`
 pass=`echo $line | awk -F: '{print $2}'`
 ip=`echo $line | awk -F: '{print $3}'`


 expect << EOF
  spawn ssh $user@$ip $cmd

  expect {
    "yes/no" {send "yes\r";exp_continue}
    "*assword" {send "$pass\n"}
   }

  expect eof
 EOF
done < host1.txt

./host1.txt      执行脚本


切换其他虚拟机查看hostname文件内容,命令执行成功
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

琴声浮或沉__听懂只一人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值