linux下编写sh脚本使用expect问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux下编写sh脚本使用expect问题相关的知识,希望对你有一定的参考价值。

我想在linux写个备份DB2数据库的脚本,需要切换到数据库对应的用户上。如:
t.sh
su db2inst1 #切换用户
#下面是备份数据库的
db2stop force
db2start
db2 connect to test
db2 backup db test online to /home/db2inst1
切换用户需要手动输入密码
我想写个运用expect的脚本 a.sh
#!/bin/bash
expect -c "
spawn ./t.sh
expect
\"*assword\" send \"111222\r\"; exp_continue

interact
expect eof"
这样写 测试后 可以实现自动输入密码,但是下面的备份数据库的命令不执行了。
应该怎样改?大神请指教

在expect 括号中间加入 send \"sh t.sh\r\"; exp_continue 这样就可以了 参考技术A interact 是把控制权交给用户,脚本就不管了,你删掉它,然后在spawn ./t.sh下一行加上set timeout 120,防止备份还没结束就超时了。 参考技术B 1、检查t.sh是否有执行权限;
2、手动执行t.sh,看下什么情况;
3、spawn ./t.sh改为spawn sh -x t.sh跟踪一下;追问

t.sh已经执行了啊!第一行切换用户实现了
后面的备份命令没有执行

参考技术C 兄弟, 你这个问题我可以解决,你是不懂Linux的对吧?你私信我。我给你看看

以上是关于linux下编写sh脚本使用expect问题的主要内容,如果未能解决你的问题,请参考以下文章

windows下编写的脚本文件,放到Linux中无法执行解决方法

windows下编写的脚本文件,放到Linux中无法执行解决方法

Linux下编写一脚本,实现本目录下文件的批量复制。

windows下编写的bash脚本拖入linux环境下脚本出错之编码问题

expect spawn not found

关于windows下编写的shell脚本在linux下无法运行报错问题