日期:2014-05-16  浏览次数:20723 次

shell脚本中使用expect的问题
#!/bin/bash
command="ssh -l root  172.16.203.204"
expect -c "
        spawn $command
        expect {
         \"*172.16.203.204's password:\" {send \"tinet1234\r\"; exp_continue}
          \"root@\" {send \"asterisk -r\r\"; exp_continue}       
           \"*CLI>\" {send \"core show calls\r exit\r\";exp_continue}         
                }
"
各位大神 我想问问 我想把core show calls 命令的输出获取 应该怎么做呢?以上的脚本一直在屏幕上打印出很多的
ccic*CLI> e show calls
 ex exit
ccic*CLI> it
corcore show calls
ccic*CLI> e show cal  不知道是怎么回事啊 我就在脚本中获取core show calls命令的输出结果 用一个变量获取 该怎么做呢

------解决方案--------------------
可以考虑配置ssh信任,这样ssh命令就不需要输入密码了。
用expect必须把密码写到脚本里面,不太安全。
------解决方案--------------------
引用:
Quote: 引用:

expect结果写一个临时文件,然后shell读这个文件内容

这样做没有用啊!你因为那个文件都不在本地 在远端计算机上 这种方法我试过 文件在远端及其上的

再写个scp的expect,把那个文件复制回来