linux批量修改密码、拷贝文件至远程机器

来源:互联网 发布:欧洲 旅馆 网络 编辑:程序博客网 时间:2024/05/16 05:04
#!/bin/bash
#!/usr/bin/expect -f
#expect需要手动安装:解压/挂在系统镜像,package目录下搜索expect,拷贝到linux服务器下,rpm -ivh expect*进行安装,安装完成后,运行该脚本,sh auto_passwd_scp.sh


#待拷贝文件所在服务器ip(文件服务器ip),自行修改ip
File_Server_IP=192.168.1.1
#待拷贝文件所在路径,执行修改文件路径
File_Locate=/root/Desktop/file.tar
#远程服务器存放待拷贝文件的路径,自行修改目录
Remote_File_Dir=/tmp
#远程服务器欲修改的统一密码,自行修改密码
PASSWD=111111
#假设100台服务器主机ip和对应随机密码存放在“ip_pw_list.txt”文档里,存放格式为“ip 随机密码”,分行存放,示例如下:
#############################
# 192.168.1.1 password1
# 192.168.1.2 password2
# ......
# 192.168.1.100 password100
#############################
#获取100台服务器主机ip,赋值给变量IP
IP=`cat ip_pw_list.txt | awk '{print $1}'`
#获取100台服务器随机密码,赋值给变量PW
PW=`cat ip_pw_list.txt | awk '{print $2}'`


#将100个主机ip赋值给数组IP,IP[0]=192.168.1.1、IP[1]=192.168.1.2、...IP[99]=192.168.1.100
i=0
for IP_Temp in $IP
do
IP[$i]=$IP_Temp
i=$(($i+1))
done
#将100个主机的随机密码赋值给数组PW,PW[0]、PW[1]、PW[2]...PW[99]
j=0
for PW_Temp in $PW
do
PW[$j]=$PW_Temp
j=$(($j+1))
done


#ssh循环登陆远程服务器,修改密码,拷贝文件
for k in {0..99}
do
#ssh远程登陆服务器,并通过expect自动输入随机密码
expect -c "
set timeout 30; 
spawn ssh root@${IP[$k]}
expect {
\"yes/no\" {send \"yes\r\";exp_continue}
\"password:\" {send \"${PW[$k]}\r\";interact}
}
"
#登陆远程服务器后,通过passwd命令修改root密码,通过expect自动传递修改密码
expect -c "
set timeout 30; 
spawn passwd
expect {
\"password:\" {send \"$PASSWD\r\";exp_continue}
\"password:\" {send \"$PASSWD\r\";interact}
}
"
#登陆远程服务器后,通过scp命令拷贝文件到该远程服务器
expect -c "
set timeout 30; 
spawn scp root@${File_Server_IP}:/$File_Locate  /$Remote_File_Dir
expect {
\"yes/no:\" {send \"yes\r\";exp_continue}
\"password:\" {send \"$PASSWD\r\";interact}
}
"

done






0 0
原创粉丝点击