我不确定 Ant,但既然你提到了 Bash,我可以建议使用期望吗?
下面的示例是作为一个函数构建的,但显示了如何完成您想要的……这假设您将在 SSH 命令行上运行一个命令(例如启动远程脚本)。
exp_comm ()
{
# Remotely execute an SSH command on another server
SVR="$1"
USR="$2"
PSW="$3"
TGT="$4"
ARG="$5"
/usr/bin/expect <<- EOF 1>>stdout.out 2>>stderr.err
set timeout 60
spawn ssh ${USR}@${SVR} '${TGT}' ${ARG}
expect "*assword:"
send -- "${PSW}\r"
expect eof
EOF
return $?
}
像这样称呼它:
exp_comm "server" "userid" "password" "/tmp/testscript.sh" "'One Big Arg1'"
exp_comm "server" "userid" "password" "/tmp/testscript.sh" "Arg1 Arg2 Arg3"
您可以修改以运行多个命令,并通过更改 spawn ssh 行删除目标脚本和参数,然后使用 expect 来执行其他操作,从而进入更复杂的“智能”命令。就像是:
/usr/bin/expect <<- EOF 1>>stdout.out 2>>stderr.err
set timeout 60
spawn ssh ${USR}@${SVR}
expect "*assword:"
send -- "${PASS}\r"
expect "*>"
send -- "command1\r"
expect "*>"
send -- "command2\r"
expect eof
EOF
希望这可以帮助。