使用expect实现自动交互随机出现exp4 not open异常怎么处理??????

大刘0417 2018-04-26 03:44:43
函数脚本如下:

#向指定的服务器复制文件或目录
#参数1:ip地址;参数2:登录用户名;参数3:登录密码;参数4:发送的文件;参数5:目标位置
function scptoremote() {
local ip=$1
local username=$2
local password=$3
local sendfiles=$4
local toplace=$5
/usr/bin/expect<< EOF
log_user 0
set timeout 1
spawn scp -r $4 ${username}@${ip}:${toplace}
expect {
"*No route to host" {exit 12;exp_continue}
"*Name or service not known" {exit 12;exp_continue}
"*yes/no*" {send "yes\r";exp_continue}
"*password:" {send "${password}\r";exp_continue}
"Permission*" {exit 1;exp_continue}
"\\\\\\
  • *" {exit 13}
    }
    expect eof
    EOF
    return $?
    }


命令行调用代码:

[root@master shfile]# scptoremote 192.168.199.233 root abcdefg ~/.ssh/ ~/.ssh/


反复执行,会发现有时是正确执行,但有时会出现:
expect: spawn id exp4 not open
while executing
"expect eof"
,请问这是什么原因,已经搞了好几天了也没搞定,请高人指点!!!!!!
...全文
1006 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复

23,128

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧