Bash usando o netcat, envia uma saída do comando para o arquivo

0

Eu preciso saber como pegar a saída e armazená-la em uma variável. Eu não quero enviar toda a saída para o arquivo, apenas uma das saídas de comando que estou enviando .. Basicamente

AUTH
AUTH
LIST  <---needs to go to file

Eu tentei .. read $response mas não está funcionando.

    
por Robert Way 13.03.2016 / 19:12

2 respostas

1

Você precisa eliminar $:

read response
    
por 13.03.2016 / 19:19
0

nc não é expect , portanto você não tem controle sobre quais partes da saída do host remoto são capturadas. Você pode redirecionar toda a saída para um arquivo (e processar o arquivo posteriormente com awk , sed , perl ou o que for para extrair somente o que você precisa) ou enviá-lo diretamente para awk (ou qualquer outro) antes escrevendo em um arquivo ou armazenando-o em uma variável de shell (com $() de substituição de comando).

No entanto, é quase certo que seria melhor escrever seu script em perl (e usar o Expect.pm module ou Net::Telnet ou Net::IMAP ) ou em python using pexpect (ou python ' imaplib2 library), ou em algum outro idioma com uma biblioteca expect -like ou IMAP client.

Isso permite que você se conecte à porta relevante (IMAP, aparentemente) no host remoto, emita os comandos necessários, aguarde respostas e faça o que for necessário com a resposta (incluindo salvar alguns as respostas para um arquivo)

Adicionei a tag /expect à sua pergunta - clique nela para obter uma lista de perguntas e respostas relacionadas a expect neste site.

    
por 14.03.2016 / 10:42