Я установил ircd-hybrid
на моем сервере Ubuntu (192.168.1.2, example.com).
Мы используем #teamchannel
общаться внутри команды.
Возникает вопрос: как мне отправить короткое сообщение из example.com
к #teamchannel
из сценария bash? например example.com: Alert! The server is rebooting now
я нашел сценарий Perl что делает именно то, что мне нужно.
IRC - это простой текстовый и строчно-ориентированный протокол, поэтому его можно сделать с помощью основных инструментов Linux. Итак, без установки ii
:
echo -e 'USER bot guest tolmoon tolsun\nNICK bot\nJOIN #channel\nPRIVMSG #channel :Ahoj lidi!\nQUIT\n' \
| nc irc.freenode.net 6667
В этой команде nc
устанавливает сетевое соединение, и вы отправляете данные для входа, ник, присоединяетесь к каналу с именем "#channel" и отправляете сообщение "Ahoj lidi!" на этот канал. И выйдите с сервера.
использовать консольный клиент irc
apt-get install ii
ii -i /tmp -s 192.168.1.2
echo "/PRIVMSG #teamchannel example.com: Alert! The server is rebooting now" > /tmp/irc/in
Одним из решений было бы использовать ожидать для создания сценария связи с IRC-сервером с помощью клиента telnet.
#!/bin/bash
exec 3>/dev/tcp/example.com/6667
echo "NICK nickname1234" >&3
echo "USER nickname1234 8 * : nickname1234" >&3
echo "JOIN #teamchannel" >&3
echo "PRIVMSG #teamchannel Alert!" >&3
echo "QUIT" >&3
cat <&3
Если вам нужно указать пароль и использовать ssl, вы можете сделать что-то вроде этого.
#!/bin/bash -e
USER=$1
MYPASSWORD=$2
IRC_SERVER=$3
IRC_PORT=$4
CHANNEL=$5
MSG=$6
(
echo NICK $USER
echo USER $USER 8 * : $USER
sleep 1
echo PASS $USER:$MYPASSWORD
echo "JOIN $CHANNEL"
echo "PRIVMSG $CHANNEL" $MSG
echo QUIT
) | ncat --ssl $IRC_SERVER $IRC_PORT
Скрипт должен запускаться так:
./post_to_irc.sh your_user your_pass irc_server 6667 "#target-channel" "Your message"
Это похоже на предыдущий пример с использованием nc
но я обнаружил, что должен использовать ncat
чтобы заставить его работать с нашим IRC-сервером, который был настроен с SSL.