Escrevendo para um prompt interativo

2

Estou usando a ferramenta de linha de comando ftp e quero combinar a entrada de script com a entrada do usuário. Com apenas entrada do usuário, o prompt é assim:

ftp>

Mas quando tento inserir alguma entrada com um script, como

{echo "user username passwd"; cat;} | ftp -n server.tld

Como posso forçar o ftp (ou qualquer cli) a usar o modo interativo?

Eu preferiria uma solução baseada em ferramentas de shell padrão.

    
por bodo 01.10.2014 / 14:13

1 resposta

4

Existe um programa para interagir com ferramentas de linha de comando interativas exatamente como o exemplo ftp : expect . É um shell de script especializado, estendendo a linguagem de script tcl .

É muito poderoso, mas você pode sair sem aprender tudo sobre ele. Uma ferramenta muito útil é autoexpect , que pode gravar uma sessão interativa como um script esperado. O roteiro gravado é certamente útil para entender o básico.

Um script expect pode interagir com um programa interativo como ftp . Isso pode ser combinado com a interação do usuário e o programa interativo. Usando o comando interact em um script expect , o controle pode ser dado temporariamente ao usuário.
Enquanto o usuário tem controle, o script ainda ouve eventos para retomar o controle, então, praticamente, tanto o usuário quanto o script estão interagindo simultaneamente com o programa.

    
por 01.10.2014 / 14:50