envia um caractere especial “~ -enter” no script de espera

1

eu preciso de ajuda por favor.

eu escrevo um pequeno script de teste para o meu trabalho diário.

nesse script eu me conectarei a um console do servidor.

aqui está minha parte esperada:

export TMPEXPECT=$(mktemp /home/user/tmp/expect.XXXXXX)
chmod 700 $TMPEXPECT

echo "Verbinde auf console..."
        cat <<< '#!/usr/bin/expect -f
spawn ssh root:ttyS'"$port"'@'"$console"'
expect {        "*gnore*" { send "i\r\r"}        }
expect {        "\n" {send "\r"}        }
expect {        "\n" {send "\r"}        }
sleep 2
expect {        "\n" {send "\r"}        }
expect {        "\n" {send "~.\r"}        }
expect eof
' > $TMPEXPECT
$TMPEXPECT

a saída é assim:

spawn ssh root:ttyS33@console

A non-empty Data Buffering File was found. Choose which action
should be performed ( (I)gnore, (D)isplay, (E)rase or (S)how and erase ) : I

Welcome to Special Dedicated-Server Linux (x86_64) Version 5.5.1 - Kernel 4.4.77-9.1.x86_64 (ttyS0).

server login:
Welcome to Special Dedicated-Server Linux (x86_64) Version 5.5.1 - Kernel 4.4.77-9.1.x86_64 (ttyS0).

server login:
Welcome to Special Dedicated-Server Linux (x86_64) Version 5.5.1 - Kernel 4.4.77-9.1.x86_64 (ttyS0).

server login: ~.

você pode ver os trabalhos de conexão.

mas tenho problemas.

depois de pressionar 3 vezes digite eu quero fechar a conexão.

se eu quiser fazer isso normal eu vou pressionar "alt gr +. enter" e a conexão está próxima.

server login: Connection to console closed.

mas isso não funciona como você pode ver acima: (

você tem alguma ideia?

    
por Viperdriver2000 10.10.2017 / 20:27

2 respostas

1

bem, eu respondo a mim mesmo porque é melhor ler.

eu testei um pouco ... eu deletei o "expect eof" parece ser melhor.

cat <<< '#!/usr/bin/expect -f
spawn ssh -e none root:ttyS'"$port"'@'"$console"'

expect {
        "*regular*" { send "1\r"}
        "default" { send "i\r"}
        }

expect {
        "*gnore*" { send "i\r"}
        }

expect {
        "*\n*" {send "\r"}
        }
sleep 5
expect {
        "*\n*" {send "\r"}
        }
sleep 2
expect {
        "*\n*" {send "\r"}
}
sleep 2
' > $TMPEXPECT
$TMPEXPECT
echo ""
echo ""
echo "this is a test after the expect and expect eof part"

com este código eu recebo essa saída:

spawn ssh -e none root:ttyS33@console

A non-empty Data Buffering File was found. Choose which action
should be performed ( (I)gnore, (D)isplay, (E)rase or (S)how and erase ) : I

Welcome to Special Dedicated-Server Linux (x86_64) Version 5.6.0 - Kernel 4.4.89-9.1.x86_64 (ttyS0).

server login:
Welcome to Special Dedicated-Server Linux (x86_64) Version 5.6.0 - Kernel 4.4.89-9.1.x86_64 (ttyS0).

server login:

this is a test after the expect and expect eof part

parece que a conexão está fechada corretamente. acho que sim. Eu testei uma conexão normal. e eu não recebo uma mensagem como esta:

*
* * * ttyS33 is being used by (root) !!!
*

1 - Initiate a regular session
2 - Initiate a sniff session
3 - Send messages to another user
4 - Kill session(s)
5 - Quit

Enter your option :

isto é o que eu recebo se uma conexão não for fechada corretamente.

então eu acho que este caso está fechado. obrigado pela vossa ajuda

    
por 11.10.2017 / 22:00
0

Você precisa enviar exit\r para fechar a conexão ssh em vez de terminar o script no eof.

    
por 15.09.2018 / 22:08