Отправить сообщение на IRC канал от bash


9

Я установил ircd-hybridна свой сервер Ubuntu (192.168.1.2, example.com).
Мы используем #teamchannelдля общения внутри команды.

Вопрос в том, как я могу отправить короткое сообщение от example.comto #teamchannelиз скрипта bash? напримерexample.com: Alert! The server is rebooting now

Редактировать:

Я нашел Perl-скрипт, который делает именно то, что мне нужно.


1
Ссылка на сценарий perl web.archive.org/web/20100125223219/http://www.javalinux.it/…
epatel

Ответы:


9

использовать консольный клиент 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

Спасибо, но это не работает для меня. После iiожидания оболочки, когда я заканчиваю команду нажатием &, вторая команда выполняется, но без сообщения.
принимает

выделите файл 'out' для устранения проблемы: найдите каталог irc (/ tmp / SERVERNAME), cd / tmp / SERVERNAME и cat out, затем выведите сообщение и прочитайте.
bindbn

12

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!" на этот канал. И выйти из сервера.


добавьте \ nQUIT в конец списка команд, чтобы выйти сразу после отправки одного сообщения
Уолтер Хек,

2

Одним из решений будет использование сценария ожидаемого взаимодействия с сервером IRC с помощью клиента telnet.


Нужно ли мне expectотправлять сообщение с того же компьютера, на котором установлен IRC-сервер?
принимает

вы делаете .. вышеупомянутое решение будет хорошо работать с ожидаемым.
Crankyadmin

1
#!/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

2
Небольшой текст вокруг сценария оболочки будет иметь большое значение для того, чтобы сделать этот ответ лучше.
HBruijn

0

Если вам нужно ввести пароль и использовать 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.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.