Bash 远程执行命令的函数

需安装 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
#!/usr/bin/env bash
#远程执行命令
set -e;

EXPECT_SH(){
local EXUSR=${1}
local EXHOST=${2}
local EXPWD=${3}
local EXCMD=${4}
expect -c "
set timeout 300
spawn ssh ${EXUSR}@${EXHOST}
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\"}
\"]*\" {send \"\r\"}
\">*\" {send \"\r\"}
}
send \"${EXCMD}\rexit\r\"
expect eof
"
}