fshz.net
当前位置:首页 >> linux下用ExpECt spAwn时的问题 >>

linux下用ExpECt spAwn时的问题

*.log 是shell中的用法, scp或者其他命令本身并不直接将 * 替换成匹配的多个文件名。 建议你将 expect 脚本做成一次只上传一个文件,这个文件名由输入参数来决定 scp [lindex $argv 0] root@192.xxxxxx:/home expect "password:" {send "111111...

spawn是进入expect环境后才可以执行的expect内部命令。expect是一种脚本语言,它能够代替我们实现与终端的交互,我们不必再守候在电脑旁边输入密码,或是根据系统的输出再运行相应的命令。 如果没有装expect或者直接在默认的SHELL下执行是找不到...

expect的send不能单独用的。 一般需要: spawn expect send expect send 这样用。 还有个问题 #!/usr/bin/expect 应该放在第一行吧。

在expect {} 括号中间加入{ send \"sh t.sh\r\"; exp_continue } 这样就可以了

改成 send “exit \$ret\r” ret 变量是 ssh 到远端后shell里面定义的 (即你之前的send "ret=`echo $?`\r") ,所以要把 $ 用 \ 转意,否则 $ret 指的是 expect 里的ret变量,你在 expect 里当然没有定义过这个变量了,所以出错。

不要写成 bash 脚本,直接写 expect 脚本就行了。 #!/usr/bin/env expect spawn su - expect ":" { send "redhat\r" } interact

#!/usr/bin/expect set time 30 set passwd xxxxx (xxxx是你的密码内容) spawn sudo expect "Password:" 引号里是你手动执行sudo时候 。系统返回给你的提示,可以只匹配最后几个字母, 也可以写全 send "$passwd\r" expect eof EOF

改成 send “exit \$ret\r” ret 变量是 ssh 到远端后shell里面定义的 (即你之前的send "ret=`echo $?`\r") ,所以要把 $ 用 \ 转意,否则 $ret 指的是 expect 里的ret变量,你在 expect 里当然没有定义过这个变量了,所以出错。

./suroot.sh 中为什么不直接申明 #!/usr/bin/expect ? 然后,expect -c " xxx " 就可以直接写成 xxx 了。

#!/bin/bash date=`date +%Y%m%d` pw='123456' /usr/bin/expect -c " spawn mysqldump -u root -p ec > ec$date.sql ; set timeout 10; expect { \"*password*\" {send \"$pw\r\";} } expect eof;"

网站首页 | 网站地图
All rights reserved Powered by www.fshz.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com