运用shell 的expect达到不同服务器之间的交互

一,export的命令详解

 expect 的核心是  spawn expect send set

spawn 调用要执行的命令
expect 等待命令提示信息的出现,也就是捕捉用户输入的提示
send 发送需要交互值,代替用户手动输入的内容
set 设置变量值
set timeout 60 60秒超时
set timeout -1 永不超时
interact 执行完成后保持交互状态。
expect eof 与spawn对应表示捕捉终端输出信息终止。

expect 脚本必须以interact或expect eof结束,一般执行自动化脚本任务通常使用expect eof

二,确认是否安装expect

#rpm  -qa  |grep  expect 
#yum  install   expect  -y                         进行安装操作

三,查看安装expect后的路径

 #which   expect
 /usr/bin/expect

四,生产环境下实例操作
(定时拷贝另一台服务器的相关软件)
#vim /home/project_backup.sh

#!/bin/sh
# project_backup
. /etc/profile                  #如不提示环境变量的问题,可以不加这两行
. ~/.bash_profile               #若提示环境变量的问题,安装环境变量后,添加该两行
dateTime=`date +%Y-%m-%d`
#name=BJDBbackup_`date +%Y-%m-%d`
expect -c "
        set timeout -1;
        spawn /usr/bin/scp -r -P 62222  /home/tmmma_bak/$dateTime.tar.gz  [email protected]:/home/tmmmabak;
        expect {
            *password: { send \密码\r\ }
               };
         expect eof;
       "

加入计划任务

 #crontab  -e   
 * 3 * * *  /home/project_backup.sh

注:使用中出现的问题
1)运行交互脚本时,不能执行成功
查看环境变量的问题,安装环境变量后,进行添加
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43949342/article/details/86590486