批量向多台服务器上传目录 expect

#!/usr/bin/expect -f
#
##############################################################################

set DATE [exec date "+%Y%m%d%H%M%S"]
set FILE [lindex $argv 0]
set PATH [lindex $argv 1]
 
 
# 开始循环
foreach IP {
10.22.1.48
10.22.1.49
10.22.1.7
10.22.1.8
} {
spawn ssh root@$IP
set timeout 60
log_file -a /var/log/expect/expect$DATE.log
expect "*(yes/no)*"
send "yes\r"
expect "*password:*"
send "Uu2#w@th?9L_\r"
expect "#"
#####################################################################################################################################3
#
#uploading (注意文件名和路径)
#
send "scp 10.22.1.54:/var/stnew/$FILE.tar.gz $PATH\r"
expect "*(yes/no)*"
send "yes\r"
expect "*password:*"
send "Uu2#w@th?9L_\r"
expect "#"
send "cd $PATH\r"
expect "#"
#
#  Backuping  (备份方法可以自己定义)
##################################################################################################
#
#
send "rm -rf $FILE\r"
expect "#"
send "tar -xzvf $FILE.tar.gz\r"
#expect "#"
send "chown -R www:www $FILE\r"
#---------------------------------------------------------------------------------------------------------------------------------------------------
expect "#"
send "rm -rf $FILE.tar.gz\r"
# purge cache (清空服务器的缓存)
send "echo>/root/.ssh/known_hosts\r"
expect "#"
send "exit\r"
expect eof
}

############################################################################---------完-----------########################################################

用法:假如要上传file目录到四台机器的/var/www/htdocs目录下,把file打包成file.tar.gz 然后上传到一台管理机器上/var/stnew目录下,,然后执行 /auto_stnew.sh file /var/www/htdocs

执行前清空一下/root/.ssh/known_hosts内容

你可能感兴趣的:(多台服务器批量上传目录)