expect交互命令与rsync文件同步
expect交互命令与rsync文件同步
为网友解答expect交互命令与rsync文件同步的电脑小知识,接下来一起来看看吧。
介绍
expect命令是一个自动化工具,可以根据脚本与其他交互式程序进行交互,通过在脚本中设定期望值和响应值进行交互操作,主要应用于执行命令和程序时,系统以交互形式要求输入指定字符串,实现交互通信。
expect中,有三个重要的主命令,分别是spawn、expect、exp_send,这三个命令几乎存在于所有expect脚本中,除了这些之外,还有很多expect所特有的参数、变量,它们也作用于expect的方方面面。
spawn激活,send发送到交互命令。

rsync命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。
rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。
rsync是一个功能非常强大的工具,其命令也有很多功能特色选项,我们下面就对它的选项一一进行分析说明。
说明
本文脚本主要是通过调用实现文件批量自动与多台服务器进行交互更新。
文件列表:
- auto_expect:expect命令的执行模板。
- ip_list_config:存放IP和密码的配置文件,IP在前,与密码之间用空格或tab隔开。
- sync_file.sh:待执行脚本
auto_expect
#!/usr/bin/expect -f
spawn rsync -avzP source root@$ip:dest
expect {
"(yes/no)?" {send "yes\r";exp_continue}
"password:" {send "$pwd\r"}
}
expect eof
ip_list_config
192.168.0.1 passwd1
192.168.0.2 passwd1
192.168.0.3 passwd1
sync_file.sh
#!/usr/bin/expect -f
################define variables###############
path=`pwd`
################begin of main #################
show_usage()
{
echo "USAGE:$0"
echo " [-s | -source]"
echo " [-d | -des ]"
echo " [-h | -help ]"
}
auto_rsync()
{
while read iplist
do
ip=`echo $iplist | awk '{print $1}'`
pwd=`echo $iplist | awk '{print $2}'`
echo -e "$iplist\n"
echo "rsync -avzp $source_file root@$ip:$des_file"
sed -e "s;source;$source_file;g" auto_expect>auto_expect_rsync
sed -i "s;dest;$des_file;g" auto_expect_rsync
sed -i "s;\$ip;$ip;g" auto_expect_rsync
sed -i "s;\$pwd;$pwd;g" auto_expect_rsync
chmod +x $path/auto_expect_rsync
$path/auto_expect_rsync
done < $path/ip_list_config
}
auto_ssh()
{
while read iplist
do
ip=`echo $iplist | awk '{print $1}'`
pwd=`echo $iplist | awk '{print $2}'`
echo -e "$iplist\n"
echo "ssh root@$ip"
sed -e "s;source;;g" auto_expect>auto_expect_ssh
sed -i "s;rsync -avzP;ssh;g" auto_expect_ssh
sed -i "s;:dest;;g" auto_expect_ssh
sed -i "s;\$ip;$ip;g" auto_expect_ssh
sed -i "s;\$pwd;$pwd;g" auto_expect_ssh
chmod +x $path/auto_expect_ssh
done < $path/ip_list_config
exit 1
}
if [ $# -ne 4 ];then
echo -e "\e[32;5;1m please input current!! \e[0m\n"
show_usage;
exit 1;
fi
while true
do
case "$1" in
-h | -help)
show_usage
;;
-s | -source) source_file=$2
echo $soutce_file
shift 2
;;
-d | -dest) des_file=$2
echo $des_file
auto_rsync
auto_ssh
;;
*)
show_usage
exit 1
;;
esac
done
相关阅读
-
ip地址冲突上不了网怎么解决 设置固定IP地址的步骤
今日IT小知识分享:ip地址冲突上不了网怎么解决和设置固定IP地址的步骤的相关话题,接下来就是全面介绍。 如果你曾经看到“Windows 检测到 IP 地址冲突”或“此网络上的另一台计算机具有相
-
华硕电脑怎么截屏 华硕电脑截屏怎么操作
为大家介绍华硕电脑怎么截屏的电脑方面的小经验,华硕笔记本自带截屏键,在笔记本右上角Prtsc SysRq,只要在所需界面按下此键就能截屏。
-
美洲杯决赛2021时间是什么时候? 美洲杯决赛哪个台直播?
小编带来的是美洲杯决赛2021时间是什么时候?和美洲杯决赛哪个台直播?方面的内容,一定能解决您的问题的! 美洲杯决赛就要开始了,巴西阿根廷谁将夺冠?是梅西带领潘帕斯雄鹰展翅摘走
-
抖音怎么设置支付顺序 抖音支付功能什么时候实行的
小编为大家解答抖音怎么设置支付顺序的IT小经验,抖音支持支付宝支付、抖音支付和微信支付,在支付顺序中可设置优先使用抖音支付,设置方法如下:


