Como escrever espera no shell

1

Esta é a continuação da minha pergunta anterior: Comando Spawn não encontrado

Depois de me referir a alguns posts antigos, eu escrevi esses comandos. Se estiver errado, como posso executar o ssh para o servidor remoto e executar alguns comandos?

    
por Vijay 07.06.2016 / 08:48

2 respostas

1

Uma possibilidade é: criar um arquivo de sintaxe de expectativa e chamá-lo por meio de um script de shell:

 #!/bin/bash
 expect -f my-file.exp $1 # parameter 1 is the server name

No meu arquivo.exp você só espera comandos:

spawn ssh "username@[lindex $argv 0]"  # param 1 : server name
                                # expect now reads the input and does what you tell it on certain patterns

expect { 
  "password:" { send "my-password\r"; send "do_this_command\r"; send "do_that_command\r"; exp_continue; }
  "done" { send_user "exiting"; }
}

Este exemplo conecta-se ao servidor enviando a senha em texto simples, envia algum comando e continua.

Se ele ler "concluído" da entrada, ele será encerrado. Caso contrário, o tempo limite será esgotado após alguns segundos.

Contanto que você faça um "exp_continue", ele permanecerá dentro da expectativa {} -loop, correspondendo a entrada e fazendo a saída apropriada.

    
por 07.06.2016 / 09:04
0

Você também pode usar uma linguagem esperada no seu script e escrever um script esperado.

#!/usr/bin/expect -f 
spawn ssh localhost 
expect "password: " 
send "password\r" 
expect "{[#>$]}"         #expect several prompts, like #,$ and >
send -- "command.sh\r"
expect "result of command"
etc...
    
por 07.06.2016 / 10:35

Tags