ожидать: spawn id exp6 не открыт - PullRequest
0 голосов
/ 06 мая 2019

Я очень новичок в создании сценариев и пытаюсь создать сценарий, который будет автоматически подключаться к удаленному серверу без необходимости ввода имени пользователя и пароля, поскольку сценарий выполняет переход через прокси-сервер с заранее заданными именем пользователя, сервером и паролем.

Проблема заключается в том, что при успешном входе в систему и когда пользователь вводит команду выхода, это сообщение об ошибке отображается на консоли:

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 '
...