远程更改密码脚本
[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"