86 lines
2.2 KiB
Bash
Executable File
86 lines
2.2 KiB
Bash
Executable File
#!/bin/bash
|
||
|
||
# set -x
|
||
|
||
check_ssh() {
|
||
SSH_USER="${1}"
|
||
SSH_HOST="${2}"
|
||
SSH_PORT="${3}"
|
||
SSH_PASSWORD="${4}"
|
||
|
||
SSH_RESULT=$(expect -c "
|
||
spawn ssh -p ${SSH_PORT} ${SSH_USER}@${SSH_HOST}
|
||
expect {
|
||
-re \".*Are you sure you want to continue connecting.*\" {
|
||
send \"yes\n\"
|
||
exp_continue
|
||
}
|
||
-re \".*password.*\" {
|
||
send \"${SSH_PASSWORD}\n\"
|
||
exp_continue
|
||
}
|
||
-re \".*@.*\" {
|
||
send \"exit\n\"
|
||
expect eof
|
||
}
|
||
}
|
||
")
|
||
|
||
ANSWER_SUCCESS="Connection to ${SSH_HOST} closed."
|
||
ANSWER_ERRORS=(
|
||
"Permission denied"
|
||
"connect to host ${SSH_HOST} port ${SSH_PORT}: No route to host"
|
||
"connect to host ${SSH_HOST} port ${SSH_PORT}: Connection refused"
|
||
)
|
||
|
||
[[ $(echo "${SSH_RESULT}" | grep "${ANSWER_SUCCESS}" ) ]] && echo "Успешно подключились" && exit 0
|
||
|
||
for ANSWER in "${ANSWER_ERRORS[@]}"
|
||
do
|
||
[[ $(echo "${SSH_RESULT}" | grep "${ANSWER}" ) ]] && echo "${ANSWER}" && exit 1
|
||
done
|
||
|
||
echo "${SSH_RESULT}"
|
||
|
||
echo "Произошла неизвестная ошибка"
|
||
exit 1
|
||
}
|
||
|
||
main() {
|
||
while [[ $# -gt 0 ]]
|
||
do
|
||
KEY="${1}"
|
||
VALUE="${2}"
|
||
case "${KEY}" in
|
||
-u)
|
||
SSH_USER="${VALUE}"
|
||
shift
|
||
;;
|
||
-p)
|
||
SSH_PORT="${VALUE}"
|
||
shift
|
||
;;
|
||
-h)
|
||
SSH_HOST="${VALUE}"
|
||
shift
|
||
;;
|
||
-P)
|
||
SSH_PASSWORD="${VALUE}"
|
||
shift
|
||
;;
|
||
esac
|
||
shift
|
||
done
|
||
|
||
[ -z "${SSH_USER}" ] && echo "Не был установлен пользователь" && exit 1
|
||
[ -z "${SSH_PORT}" ] && echo "Не был установлен порт" && exit 1
|
||
[ -z "${SSH_HOST}" ] && echo "Не был установлен хост" && exit 1
|
||
[ -z "${SSH_PASSWORD}" ] && echo "Не был установлен пароль" && exit 1
|
||
|
||
check_ssh "${SSH_USER}" "${SSH_HOST}" "${SSH_PORT}" "${SSH_PASSWORD}"
|
||
|
||
exit 0
|
||
}
|
||
|
||
main "${@}"
|