linux使用shell脚本利用expect工具实现SCP传输文件到多台服务器

1、安装expect

yum install expect

2、设置服务器地址,用户名,密码,源路径,目标路径

新建文件host.txt添加如下内容

192.168.0.135 root 密码 源路径 目标路径
192.168.0.136 root 密码 源路径 目标路径
192.168.0.137 root 密码 源路径 目标路径

3、添加expect执行脚本: cpExeShell.sh

#!/usr/bin/expect -f
set HOST [lindex $argv 0]
set USERNAME [lindex $argv 1]
set PASSWD [lindex $argv 2]
set source [lindex $argv 3]
set target [lindex $argv 4]
spawn scp -r $source $USERNAME@$HOST:$target
expect {
"(yes/no)?"
{
send "yes\n"
expect "*assword:" { send "$PASSWD\r" }
}
"*assword:"
{
send "$PASSWD\r"
}
}
expect eof

4、添加shell脚本执行expect脚本:exeScp.sh

#!/bin/bash
dir=/home
while read line
do
host=`echo $line| awk '{print $1}'`
username=`echo $line | awk '{print $2}'`
passwd=`echo $line | awk '{print $3}'`
source=`echo $line | awk '{print $4}'`
target=`echo $line | awk '{print $5}'`
$dir/cpExeShell.sh $host $username $passwd $source $target 
done < $dir/host.txt

5、赋予sh文件执行权限

chmod +x *.sh

6、执行

./exeScp.sh

资源下载地址

说明:此处有三个文件均在home文件夹下,如需要发送其它文件夹到目标服务器,只需更改或增加host.txt文件中内容即可


版权声明:本文为liushimiao0104原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。