Tudo bem, estou escrevendo um script de shell para abrir o Irssi e conectar-se automaticamente ao freenode. Devo editar o arquivo em ~/.irssi/config ou existe uma maneira de simular que estou digitando /connect irc.freenode.net? Usei echo, send e expect, mas não funcionou. Aqui está o código que tenho até agora.
irssi
echo "/connect irc.freenode.net"
Responder1
irssi fornece uma -c
opção que permite especificar um servidor ao qual se conectar quando o aplicativo for iniciado. Depágina de manual do irssi:
-c, --connect=SERVER
connects to SERVER
Então, você pode usar qualquer um destes:
$ irssi -c irc.freenode.net
$ irssi --connect=irc.freenode.net
$ irssi --connect irc.freenode.net
A razão pela qual echo
não funciona é porque não está conectado à entrada padrão do irssi. Basicamente, o que acontece é:
- Você inicia o irssi, conecta-se a um servidor, bate um papo e sai.
- Assim que o irssi for fechado (seu processo termina), seu
echo
texto será impresso.
Você terá o mesmo resultado se usar:
$ irssi ; echo "Hello"
Agora, no que expect
diz respeito, isso provavelmente se deve ao fato de o irssi ser um cliente baseado em ncurses. Como o ncurses redefine a maneira como a entrada e a saída são manipuladas, é muito provável que ele expect
não consiga se comunicar com o processo de qualquer maneira. Além disso, não há nada a esperar stdout
especificamente, já que o irssi envia muitas coisas nesse stream:
- Um cabeçalho azul.
- Algumas linhas em branco, algumas com texto, se você usou
-c
(registro de conexão). - Outra linha azul com algum texto.
- Um aviso.
- ...
E não apenas:
[(status)] _
Ao que você poderia responder com:
/connect irc.freenode.net