大作业08-使用脚本批量修改密码

远程更改密码脚本

[root@localhost ~]# vim mvPasswd.expect  #远程更改密码脚本
#!/usr/bin/expect   #使用脚本远程命令行执行命令
set host [lindex $argv 0]     #第1个参数
set passwd "root"
set password [lindex $argv 1]     #第2个参数
spawn ssh root@$host   #进入expect环境后才可以执行的expect内部命令,功能是给ssh运行加壳,用来传递交互指令
expect {
"yes/no" { send "yes\r";exp_continue}   # 判断是否包含yes/no,第一次ssh连接会提示yes/no,继续 
"password:" { send "$passwd\r" }   #  以上ssh并输入密码登录 ,初始密码为root
}

expect "]*"
send "passwd\r"     #初始密码passwd为root
expect ":"
send "$password\r"  #更改密码为第2个参数
expect ":"
send "$password\r"  #再次确认,更改密码为第2个参数
expect "]*"
send "exit\r"
interact   #执行完成后保持交互状态,把控制权交给控制台

[root@localhost ~]# vim mvPasswd.sh  #调用脚本
#!/bin/bash
for ip in `cat $1`    # 第一个参数存储ip列表的文件
do
  ./mvPasswd.expect $ip $2  # 第二个参数是需要修改的密码
done

[root@localhost ~]# sh mvPasswd.sh /root/ip.txt "lri35krJF;ba"   #以上脚本使用范例

远程执行命令脚本

[root@localhost ~]# vim cmd.expect
#!/usr/bin/expect
set user [lindex $argv 0]  # 系统用户
set host [lindex $argv 1]  # 服务器地址
set passwd [lindex $argv 2]  # 密码
set cm [lindex $argv 3]  # 需要执行的命令
spawn ssh $user@$host
set timeout -1
expect {
"yes/no" { send "yes\r"}
"password:" { send "$passwd\r" }
}

expect "]#"
send "$cm\r"
expect "]#"
send "exit\r"
interact

[root@localhost ~]# chmod a+x cmd.expect
[root@localhost ~]# vim cmd.sh  # 调用脚本
#!/bin/bash
user=$2
password=$3
cm=$4
for ip in `cat $1`
do
  ./cmd.expect "$user" "$ip" "$password" "$cm"
done

## 参数1是存储ip列表的文件路径
## 参数2是用户名
## 参数3是密码
## 参数4需要执行的命令

# 使用这个脚本批量安装一些基础通用的工具
[root@localhost ~]# sh ./cmd.sh "/root/ipAll.txt" "root" "lri35krJF;ba" "yum -y install expect vim-enhanced epel-release libmcrypt-devel libmcrypt"

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值