因为要实现非交互ssh登录,每台机器都去做公钥显然太麻烦,所以想简单的把密码写在脚本中,直接登录执行命令。
sshpass本来是首选,但是部分机器需要安装C compiler, 这也不符合预期,所以决定采用expect
网上搜索了一下,基本上都是单独的expect脚本,很少有在shell中嵌套expect,这样的话需要两个脚本来执行。
现在写Shell中嵌套expect的用法,首先要确定/usr/bin/expect存在
#!/bin/bash
passwd="12345678"
expect <<!
set time 5
spawn ssh user@192.168.1.2
expect {
"*yes/no" { send "yes\r"; exp_continue }
"*password:" { send "$passwd\r" }
}
expect "*#" { send "df\r" }
expect "*#" { send "exit\r" }
expect eof
!