Você precisa eliminar $:
read response
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.
Você precisa eliminar $:
read response
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.