Auto log in SSH usando esperar

0

Eu escrevi um script para login automático em um servidor remoto. Os dados de login são armazenados em um banco de dados.

/usr/bin/expect <<EOD
spawn ssh -oStrictHostKeyChecking=no -oCheckHostIP=no $SSHUser@$SSHHost
match_max 100000
expect "*?assword:*"
send -- "$SSHPass\r"
send -- "\r"
expect eof
EOD

Isso funciona, ele faz login com sucesso, mas não consigo interagir. Nenhum pressionamento de tecla é enviado ao servidor.

    
por skerit 11.09.2012 / 11:24

1 resposta

2

Por que seu script fecha o soquete

Sempre que um script expect atinge o final do arquivo, ele fecha todos os processos gerados e sai. Em outras palavras, está se comportando da maneira atual.

Mantendo o soquete aberto para interação

O que está faltando é usar o comando interagir quando você vê um prompt de comando. Por exemplo, depois de enviar sua senha:

expect {\$\s*} { interact }

Em seu caso de uso particular, você poderia simplesmente chamar interagir imediatamente após enviar sua senha sem esperar pelo prompt, mas o exemplo acima é geralmente uma prática melhor que permite lidar com outros tipos de situações se você optar por fazê-lo.

O Interact permitirá que você faça o que quiser: para interagir com a sessão SSH. Isso continuará até você fechar a conexão e o processo gerado sair.

Veja também

link

    
por 11.09.2012 / 11:35

Tags