Als erstes müssen Sie "fangen" die Server-Antworten. Dies kann wie geschehen:
jetzt
$ nc irc.seersirc.net 6667 |while read res;do echo "==>$res";done
==>:irc.seersirc.net NOTICE AUTH :*** Looking up your hostname...
==>:irc.seersirc.net NOTICE AUTH :*** Couldn't resolve your hostname; using your IP address instead
Da Sie die Antwort in einer Variablen zu fangen, können Sie diese Antworten herausfiltern und die entsprechenden Befehle zurück an den Server senden.
Das Problem ist, dass beim Ausführen von Netcat/Telnet von einem Skript eine einfache echo "PONG"
sendet die Nachrichten nicht zurück zum Server, sondern echo druckt die Nachrichten lokal in Ihrem Terminal.
Um Nachrichten an den Server zu senden, müssen Sie entweder diese Nachrichten am Anfang an netcat weiterleiten (die Technik, die Sie bereits verwenden) oder eine Art von expect-Skript verwenden oder eine Datei als Feed für das netcat verwenden.
In Bezug auf die PONG-Antwort, beachten Sie, dass in der Reihenfolge Pong vom Server akzeptiert werden muss, muss die Nachricht vom Server mit seiner Ping-Anfrage gesendet werden. Ihr Server sendet so etwas wie PING :D7AA1D1D
(jedes Mal anders) und damit die richtige pong Antwort ist PONG :D7AA1D1D
Als Ergebnis kann man einfach nicht eine Pong-Antwort in den ersten Nachrichten sendet am Anfang netcat enthalten, da Sie don‘ Ich weiß, welche ID der Server zusammen mit der Ping-Anfrage an Sie sendet.
Dies ist ein Arbeitsentwurf Skript eine Datei mit kontinuierlich die netcat zu füttern:
rm .ircbot
touch .ircbot
prmnick="gv"
tail -f .ircbot |nc irc.seersirc.net 6667 |while read res
do
echo "==>$res"
if [[ "$res" == *"Couldn't resolve your hostname; using your IP address instead"* ]];then
sleep 2
echo "NICK gvgv" >>.ircbot
tail -n1 .ircbot #used just to display the last line of the helper file in my screen.
elif [[ "$res" == *"PING"* ]]; then
sleep 2
echo "$res" |sed 's/PING/PONG/' >>.ircbot
tail -n1 .ircbot
sleep 2
echo "USER gvgv 8 * :gvgv " >>.ircbot
tail -n1 .ircbot
sleep 2
echo "PRIVMSG $prmnick : hello from bot" >>.ircbot
tail -n1 .ircbot
fi
done
Tipp: Durch einen zweiten Anschluss zu öffnen, können Sie manuell „Kontrolle“ über Bot von mehr Befehle an die .ircbot
Datei zu senden (dh $ echo "JOIN #channel" >>.ircbot
), die auch netcat zugeführt werden.
Übrigens, einige Web-Suche über bash irc bots
wird einige nützliche Ergebnisse zurückgeben.
Dieser einfache Bash-Skript ist als ein IRC-Bot zu verwenden: https://github.com/Newbrict/bash-irc-bot/blob/master/bot.sh
auch gefunden, ich diese nützliche IRC über Telnet Führung: http://archive.oreilly.com/pub/h/1963
Schließlich ist dies eine Alternative, um das/dev/tcp direkt mit: https://gist.github.com/Wollw/3330337