Expect 远程执行检查函数

需安装 expect 才能正常使用。

1
yum install -y expect;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#!/usr/bin/env bash
#expect 功能检查
set -e;

EXPECT_CHECK(){
local EXUSR=${1}
local EXHOST=${2}
local EXPWD=${3}
#ssh test
EXP_RST=`
expect -c "
set timeout 300
spawn ssh ${EXUSR}@${EXHOST} \"echo PASS\"
expect {
\"not known\" {send_user \"[exec echo -e Erro:Host not known\n];exit\"}
\"Connection refused\" {send_user \"[exec echo -e Erro:Connection refused\n];exit\"}
\"(yes/no)?\" {send \"yes\r\";exp_continue}
\"password:\" {send \"${EXPWD}\r\";exp_continue}
\"Permission denied\" {send_user \"[exec echo -e Erro:Wrong passwd\n];exit\"}
}
"|grep -E 'PASS|Erro'|grep -v echo|sed 's/\r//g;s/\n//g'
`
if [[ ${EXP_RST} && ${EXP_RST} == PASS ]]; then
echo -e "\nEXPECT CHECK COMPLETE!\n";
return 0;
else
echo -e "\n${EXUSR}@${EXHOST} EXPECT CHECK ERROR!\n";
echo -e "\n${EXP_RST}\n";
return 1;
fi
}