如何让 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]$
打完收工!