Я очень новичок в создании сценариев и пытаюсь создать сценарий, который будет автоматически подключаться к удаленному серверу без необходимости ввода имени пользователя и пароля, поскольку сценарий выполняет переход через прокси-сервер с заранее заданными именем пользователя, сервером и паролем.
Проблема заключается в том, что при успешном входе в систему и когда пользователь вводит команду выхода, это сообщение об ошибке отображается на консоли:
username@remote_server ~ $ exit
logout
Connection to remote_server closed.
expect: spawn id exp6 not open
while executing
"expect eof "
Другая проблема заключается в том, что когда сервер недоступен, я не уверен, как правильно завершить работу сценария. В приведенном ниже сценарии я сделал комментарий к тому, что попробовал.
Ниже мой сценарий:
#!/bin/bash
#log into remote server
clear
echo "Enter server name [ENTER]:" #prompt user for input
read INPUT
SERVER=`echo $INPUT`
clear
echo ""
echo "Logging into $SERVER, please wait ............"
echo ""
export SERVER #export global variable to expect script
#Take the gobal env variable from bash script above i.e. $SERVER and pass
it into the expect script below
/usr/bin/expect -c '
set password "password"
expect ":~$"
set timeout 10
log_user 0
spawn ssh -o StrictHostKeyChecking=no $env(SERVER)
expect "user_name@proxy_jump_server*:" #preset proxy jump server username and servername. User should not see this
send "$password\r"
expect {
timeout {send_user "server is unreachable"; exit}
eof { ; exit } # this is where I am not sure how to exit the code correctly if the server is unreachable
"* ~ $"
}
send "clear\r"
log_user 1
interact
expect eof '