如何让 expect 和 bash 共存

            在编写脚本时,为了安全地在主机间执行命令,很多人都用上了 expect 命令(其实也算不上十分安全,但总比打通 ssh 免密码登录要好点)。在编写脚本中, #!/usr/bin/expect#!/bin/bash 无法同时定义,全程用 expect 又觉得无比麻烦。所以很多操作都需要写两个脚本,一个 expect 用于远程操作,一个 bash 用于过滤信息及进行后续操作。

其实使用一个 expect 参数就可以让两种命令共存了。

[nagios@gxuweg3app01 my]$ vi test.sh 

#!/bin/bash
expect -c "set timeout 2
                spawn ssh pausr01@gxuweg3app08
                expect \"password:\"
                send \"Finder\r\"
                expect \"]*\"
                send \"echo good!\r\"
                expect \"]*\"
                send \"exit\r\"
"|grep good
~                                 
"test.sh" 10L, 199C written

[nagios@gxuweg3app01 my]$ ./test.sh  
pausr01@gxuweg3app08:/uniiof/users/pausr01>echo good!
good!
[nagios@gxuweg3app01 my]$ 

打完收工!