Introduction
Introduction Statistics Contact Development Disclaimer Help
index.md - sites - public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log
Files
Refs
---
index.md (3881B)
---
1 Bots
2 ====
3 Its very easy to write shell script based bots with ii. As a short examp…
4 at this:
5
6 tail -f \#<CHANNEL>/out |
7 while read -r date time nick mesg; do
8 nick="${nick#<}"
9 nick="${nick%>}"
10 printf "%s: WHAT??\n" "$nick"
11 done >#<CHANNEL>/in
12
13 Its just spamming a channel but I guess your imagination is boundless. I…
14 heard about people using it together with nagios to get the notification…
15 IRC. Remember to strip input for example with tr(1), tr -cd "0-9a-zA-Z" …
16 example would only allow numbers and characters.
17
18 If you want to see a live demonstration of a bot written for ii, join #g…
19 freenode, the grml-tips bot which searches for [grml](http://www.grml.or…
20 and gives a link or error messages is written in 45 lines of /bin/sh. No…
21 will not publish the code since I really suck in shell programming :)
22
23 Stat scripts
24 ------------
25 If you want to use for example [pisg](http://pisg.sf.net/) to generate c…
26 stats this will also work if you choose the irssi log format.
27
28 Automatic reconnects
29 --------------------
30 If you want some kind of automatic reconnects in ii you can make a somet…
31 like this in a shell script:
32
33 while true; do
34 ii -s irc.oftc.net -n iifoo -f "John Doe" &
35 iipid="$!"
36 sleep 5
37 printf "/j %s\n" "#ii" > ~/irc/irc.oftc.net/in
38 wait "$iipid"
39 done
40
41 bots for irc it (ii)
42 ====================
43
44 iibot
45 -----
46 [iibot](https://github.com/c00kiemon5ter/iibot) by c00kiemon5ter is writ…
47 bash, but can easily be translated to plain sh (ask him).
48
49 It uses a main script to connect to multiple servers and channels, and
50 auto-reconnect and auto-join on network failure.
51
52 It reads commands with a leading '!' and calls a secondary script to han…
53 command and the responce. That way commands can be added or removed
54 dynamically. The secondary script knows the network, channel, nick and m…
55 that triggered the command, so it is easy to filter responses to command…
56 specified channels, users and such.
57
58 if you need help, do not hesitate to ask c00kiemon5ter on freenode and o…
59
60 nagios
61 ------
62 Simple Perl script "nagios\_post.pl" as interface between
63 [Nagios](http://www.nagios.org/) and ii:
64
65 #!/usr/bin/perl -w
66
67 my $users = "your_nickname(s)";
68 my $pipe = "$ENV{HOME}/irc/your_irc_server/#your_channel/in";
69 my %color = (
70 red => "\0034",
71 purple => "\0036",
72 yellow => "\0038",
73 clear => "\00315",
74 blue => "\0032\002",
75 green => "\0033",
76 normal => "\0031",
77 );
78
79 open(PIPE, '>', $pipe) or die "Can't write to $pipe: $!";
80 while (<>) {
81 s/Host [a-z0-9_.]+ is down/$color{red}$&$color{normal}/i;
82 s/PROBLEM.*?CRITICAL/$color{red}$&$color{normal}/i;
83
84 s/PROBLEM.*?WARNING/$color{yellow}$&$color{normal}/i;
85 s/Host [a-z0-9_.]+ is up/$color{green}$&$color{normal}/i;
86
87 s/RECOVERY.*?OK/$color{green}$&$color{normal}/i;
88
89 print PIPE "$users: $_";
90 }
91 close(PIPE);
92
93 The appropriate Nagios configuration looks like this:
94
95 # 'notify-by-irc' command definition
96 define command{
97 command_name notify-by-irc
98 command_line /usr/bin/printf "%b" "$TIME$ $NOTIFICATI…
99 }
100
101 # 'host-notify-by-irc' command-notification
102 define command{
103 command_name host-notify-by-irc
104 command_line /usr/bin/printf "%b" "$TIME$ Host $HOSTA…
105 }
106
107 Start ii appropriately and add notify-by-irc and host-notify-by-irc to t…
108 appropriate "service&#x5f;notification&#x5f;commands" and
109 "host&#x5f;notification&#x5f;commands" -- and you have your own Nagios I…
110
111 rsstail
112 -------
113 Just piping the output of [rsstail](http://www.vanheusden.com/rsstail/) …
114 the fifo "in" should work. More detailed examples are welcome.
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.