ii


Gracias al sorprendente vt102 conocí ii, un minimalista cliente de irc.
Para tratar de manejarlo y entender su funcionamiento hice este pequeño script, basándome en los ya existentes en la página de ii y en el script de vt102.
El script ejecuta ii con las opciones server , nick, pass y canales, entra en los canales indicados, abre un terminal con splitvt y multitail en ejecución y presenta un menú desde el cual escogemos en qué canal escribir u otras opciones.
Pulsando Ctrl+D paramos la entrada de texto y volvemos al menú; la opción exit mata el proceso ii , splitvt, y borra los archivos temporales.



Script de inicio (puede llamarse como se quiera)

#!/bin/bash
# El script solo sirve para entrar a un server; para entraren más de uno
# habría que lanzar otra instancia en otro terminal


comprobar_conexion()
{
if pidof ii
then
echo "Conectado a " $server
else
echo "No hay conexión con " $server
fi
}

ruta=~/irc

# Si entramos como root nos riñe
if [ "$(id -u)" == "0" ]; then
echo "No es buena idea salir a irc como root. Por favor, loguea como usuario"
exit 1
fi

# Si no hay parametros nos vamos. Los argumentos pueden ser mínimo 3:
# server, nick, canal o server, nick, key;
# en los 2 casos el script continua, aunque en el segundo caso se conectará al server sin
# entrar a ningun canal

if [ $# -lt 3 ] ; then
echo
echo "Uso: $0 server nick [-k key] canal1 canal2... canaln"
echo "Los nombres de los canales se escriben sin la almohadilla "
echo
exit 1
fi

# Si ponemos nick y pass
if [ $3 = "-k" ]; then
server=$1
pass=$4
ii -s $server -n $2 -k $4 &
echo "Conectando con " $1"..."
sleep 5
comprobar_conexion
shift
shift
shift
shift
for i in "$@"
do
echo "/j #$i" > $ruta/$server/in
done
else
# Si no ponemos pass
server=$1
ii -s $server -n $2 &
echo "Conectando con " $1"..."
sleep 5
comprobar_conexion
shift
shift
for i in "$@"
do
echo "/j #$i" > $ruta/$server/in
done
fi

# Guarda los canales para el out y el in
for i in "$@"
do
echo "-f "$ruta/$server/#$i/out >> canal_out.txt
echo $ruta/$server/#$i/in >> canal_in.txt
done

canal_out=`cat canal_out.txt`

splitvt multitail $canal_out -lower ii_1_in -bottom -s 50
# ii_1_in es un script externo de entrada de texto
exit 0


Script para entrada de texto

#!/bin/bash
# Este escript debe llamarse ii_1_in


cont=0
while read linea; do
opciones[$cont]=`echo "$linea"`
let cont=cont+1
done < canal_in.txt
mensaje(){
echo "Pulsa Ctrl+d para volver al menú"
}
menu(){
echo cont=$(($cont-1))
for i in `seq 0 $cont` do
printf " [$i]Canal $i"
done
cont=$(($cont+1))
printf " [w] W3m [m] Mail [s] Shell [x] Exit"
echo
printf "\nIntroduce un nº para seleccionar el canal, o la opción. \nCtrl+d vuelve al menú: "
}
while true do
clear
menu
read choise
if [ $choise = "x" ] then
rm canal_in.txt
rm canal_out.txt
killall ii
killall splitvt
exit 0
fi
if [ $choise = "m" ] then
alpine
mensaje
fi
if [ $choise = "w" ] then
w3m -B
mensaje
fi
if [ $choise = "s" ] then
/bin/bash
mensaje
fi
actual=${opciones[$choise]}
clear
printf "Ctrl+d para volver al menú \n>"
cat >> $actual
done

No hay comentarios: