LXF163: Raspberry Pi: Как создать IRC-чат
Olkol (обсуждение | вклад) (→Чем дальше, тем смешнее) |
Olkol (обсуждение | вклад) м (Olkol переименовал страницу LXF162: Raspberry Pi: Как создать IRC-чат в LXF163: Raspberry Pi: Как создать IRC-чат: Ошибка в нумерауии журнала) |
Текущая версия на 14:31, 20 октября 2018
|
|
|
Устанавливаем сервер IRC и общаемся с другими пользователями
Содержание |
[править] Raspberry Pi: Как создать IRC-чат
Алекс Кокс создает сеть IRC с нуля и вдыхает в нее несколько нездоровую жизнь, причем всего в 224 МБ ОЗУ.
Вы, вероятно, думаете, что Raspberry Pi – компьютер для обучения. А может быть, для вас это не более чем игрушка. В целом, и то, и другое справедливо – он прекрасно подходит для обеих этих целей. И обе мы сегодня охватим: и повеселимся, и поучимся. Но заодно и докажем, что RPi способен и на другую роль: (очень) маломощного сервера. Большинство этих технологий будут работать на любом компьютере, подключенном к Интернету, и вы сможете их применить, даже если у вас еще нет Pi.
В этой статье мы установим сервер IRC – классическое приложение со скромными системными требованиями, которое позволит другим подключиться к вашему Raspberry Pi, чтобы пообщаться, и получим массу дополнительных инструментов в придачу: от управления каналом, ником и памятками до искусных ботов, которые будут сидеть на сервере, поддерживая каналы активными, обучаясь (в некотором смысле) и говоря чепуху посетителям.
[править] Начинаем
Для нашего урока советуем воспользоваться свежеустановленным (еще без дополнений) Raspbian, версией Debian для RPi. Мы выбрали его прежде всего потому, что необходимые нам программы уже протестированы в Debian для других ARM-платформ, таких как Squeezebox, поэтому не будет проблем с совместимостью. Образ диска Wheezy можно скачать с официального сайта Raspberry Pi (www.raspberrypi.org/downloads) или взять с DVD этого номера. Его установка описывалась в предыдущих статьях о Raspberry Pi – обращайтесь к ним за более подробными объяснениями. Вкратце, вам нужно записать образ диска на SD-карту утилитой dd или установщиком ARM Fedora (он работает с любыми образами дисков). Обязательно измените размеры разделов на своей карте, чтобы использовать все доступное место.
Так как для запуска сервера IRC нам не понадобится LXDE или другой графический интерфейс, для начала стоит убедиться, что сервер может работать «вслепую», т. е. без монитора и устройств ввода. По умолчанию SSH и сеть в Raspbian будут запущены, если вы не отключили их ранее, а IP-адрес Raspberry Pi вы узнаете от маршрутизатора. В этом случае перед переходом к следующему шагу нужно оставить все порты (кроме сетевого и, естественно, входа питания) пустыми.
Если IP-адрес узнать не удается, подключите монитор и клавиатуру для первичной настройки. Когда система загрузится, зайдите в систему с обычным логином и паролем (пользователь pi, пароль raspberry), выйдите из программы первоначальной настройки, если она открылась, затем попробуйте попинговать какой-нибудь сайт в Интернете для проверки, что сеть активна. После этого, чтобы узнать локальный адрес RPi, наберите ip addr в оболочке Raspberry Pi. Адрес запишите: он понадобится на следующем этапе.
[править] Настройка
На любом подходящем компьютере с любой ОС откройте терминал. В Windows клиента SSH по умолчанию нет, поэтому скачайте PuTTY с сайта www.chiark.greenend.org.uk/~sgtatham/putty и воспользуйтесь им. Подключитесь с пользователем pi на записанный вами локальный IP-адрес – например, командой ssh pi@192.168.1.100 или с помощью PuTTY, указав адрес, протокол SSH и порт 22.
Если у вас спросят пароль, значит, соединение установилось. С этого момента Raspberry Pi должен работать постоянно; в случае частых перезагрузок его адрес может меняться, тогда задайте статический IP-адрес – в чем вам поможет руководство на http://elinux.org/RPi_Setting_up_a_static_IP_in_Debian.
[править] Установка
Зайдите в RPi с обычными логином и паролем, затем приступите к установке необходимых пакетов. Запустите команду:
sudo apt-get update
для обновления пакетов до последних версий, затем выполните команду:
sudo apt-get install ircd-hybrid
для установки последней версии ARM-совместимого сервера Hybrid IRC. При установке будет создан новый пользователь – irc – с ограниченными правами, и затем от его имени будет запущен сервер. Это самый простой сервер IRC из тех, что нам попадались; конечно, есть и другие, например, inspircd, ratbox, dancer и rage, но ни один из них не развернуть так быстро. Проверьте работу сервера: установите пакет irssi (клиент IRC для командной строки), запустите программу и наберите /join 127.0.0.1 для подключения к серверу IRC на Raspberry Pi. Наберите /exit для возврата в терминал.
Следующий этап долгий и нудный, и мы не поможем вам его сократить. Надо открыть файл настройки Hybrid и заполнить его всей необходимой информацией о вашей сети. Во-первых, по неизвестной причине файлы настройки Hybrid находятся в каталоге, доступ к которому по умолчанию запрещен, и нужно выполнить команду
sudo chmod 755 /etc/ircd-hybrid/
чтобы открыть доступ. Затем скомандуйте
sudo nano /etc/ircd-hybrid/ircd.conf
для открытия файла (или откройте его в другом редакторе); все параметры, которые нужно задать, снабжены подробными комментариями, и проблем быть не должно. Обязательно прочтите все, так как в файле есть строка, которую нужно раскомментировать перед запуском сервера.
Обратите особое внимание на раздел Operator – в нем задаются люди с реальной властью на сервере. В идеальном случае это, конечно, исключительно вы. Сохраните файл настройки, выйдите из него и выполните команду:
mkpasswd <your intended pass>
чтобы сгенерировать зашифрованный пароль. Вернитесь в конфигурационный файл и найдите раздел Operator. Измените строку user на user = “*@127.0.0.1 – это означает, что только вошедший на сервер с этого локального компьютера может получить права настоящего оператора. Созданный зашифрованный пароль вставьте в поле password.
[править] Сервисы
Теперь пора установить пакет services. К сожалению, в Wheezy нет поддержки hybserv, сервисного движка ircd-hybrid по умолчанию. В процессе написания статьи мы не раз пытались скомпилировать его из исходников, но напрасно, и вместо этого обратились к стороннему компоненту сервисов: Anope. Его тоже придется компилировать из исходников, но он по крайней мере работает.
Для начала создадим свежий подкаталог, например, anope, в домашнем каталоге и загрузим в него архив Anope командой
wget http://sourceforge.net/projects/anope/files/anope-stable/Anope%201.8.7/anope-1.8.7.tar.gz.
Распакуем его командой
tar xvfz anope-1.8.7.tar.gz
и перейдем в созданный каталог. В Anope есть скрипт настройки. Наберите ./Config для его запуска и внимательно рассмотрите параметры. Вообще-то есть все шансы, что подойдут и параметры по умолчанию, но стоит убедиться, что значения верны для вашей системы. По завершении работы скрипта наберите make и отойдите заварить себе чашечку чая. Когда команда закончит работу, выполните
sudo make install
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
Пора снова изменить файл настройки. При желании можно много чего поменять, но, чтобы Anope заработал, достаточно изменить всего несколько параметров. Наберите cd ~/services для перехода в install, установочный каталог Anope, и скомандуйте
nano example.conf
– откроется пример файла настройки. Прокрутите его содержимое и раскомментируйте параметр IRCDModule, установив его в ‘hybrid’, чтобы Anope знал, с каким сервером IRC ему придется взаимодействовать. Задайте надежный пароль в разделе Remote Server и запомните его, потому что он пригодится вам в финальной настройке Hybrid. Задайте имя сети и цифры, заданные при установке Hybrid, затем укажите имя оператора-администратора в поле ServicesRoot. Сохраните файл с именем services.conf. Теперь зайдите на сайт www.anope.org/ilm.php?p=lm и заполните форму. Она выдаст текст, который можно вставить в /etc/ircd-hybrid/ircd.conf, чтобы Hybrid знал все необходимое об Anope. Наконец, выполните команду
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
~/services/services
чтобы запустить Anope, и команду
sudo /etc/init.d/ircd-hybrid restart
для перезапуска Hybrid с новыми настройками.
[править] Egg’оизмы
Сервисы запущены, и мы можем сосредоточиться на запуске одного-двух ботов с Eggdrop. Скрипты для этой утилиты написаны на TCL, а в Raspbian он по умолчанию не установлен. Сделать это можно, запустив команды sudo apt-get install tcl8.4 и install tcl-dev8.4. Убедитесь, что устанавливаете версию 8.4: по умолчанию установится 8.5, а она не ладит с Eggdrop. Еще одна вещь, которая нужна Eggdrop и которую осталось установить – telnet. Установите его командой apt-get. Eggdrop также устанавливается из исходных кодов; загрузите архив командой
wget ftp://ftp.eggheads.org/pub/eggdrop/source/1.6/eggdrop1.6.9.tar.gz
затем распакуйте его командой
tar xvzf eggdrop1.6.9.tar.gz
Перейдите в созданный каталог и скомандуйте ./configure, чтобы подготовить установку Eggdrop для Raspberry Pi.
Затем мы с вами обойдем некий камень преткновения. В исходном коде Eggdrop есть досадная ошибка, из-за которой команда make завершается неудачно. В редакторе nano откройте файл src/md5/md5c.c, найдите строку 208 и замените ее на следующую:
data = ((unsigned char *)data) + free;
включая точку с запятой в конце – затем сохраните файл и вернитесь в основной каталог Eggdrop. Теперь все должно быть готово; запустите make config, затем make clean, затем make и, наконец, make install, чтобы завершить установку Eggdrop. Затем – как будто было мало предыдущего «затем» – исправим еще одну ошибочку в libc, выполнив команду
export MALLOC_CHECK_=4
чтобы подготовить систему. Откройте файл eggdrop.simple.conf в nano и пробегитесь по нему, задавая параметры по своему усмотрению. Сервер, к которому мы подключаемся – 127.0.0.1, так как сервер находится на том же локальном компьютере; если вы хотите выпустить бота Eggdrop во внешний мир (но помните, что такие боты не поощряются в большинстве сетей, потому что бывают на редкость надоедными) или запустить Eggdrop на другом компьютере, здесь можно указать любой IRC-сервер. Убедитесь, что внимательно просмотрели файл настройки – как с Hybrid; здесь есть одна строка, которую нужно удалить, чтобы все заработало.
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
[править] Запуск бота
Сохраните файл настройки и вызовите Eggdrop командой
./eggdrop -m eggdrop.simple.config
Она запускает локальный сервер telnet на порту 3333, к которому можно подключиться для дальнейшей настройки бота, хотя мы сосредоточимся на администрировании бота через прямое IRC-подключение. Она также подключает бота к каналу, указанному в файле настройки. Запустите IRC-клиент irssi, подключитесь к серверу 127.0.0.1, зайдите в ранее указанный канал и отправьте сообщение своему боту командой
/msg <botname> hello
При первом запуске бота вы определитесь как его владелец, и бот будет отвечать вам. Переключитесь на другую панель в irssi, нажав Alt + номер панели, где будет показан дружелюбный ответ бота. Сделайте то, что он велит – то есть задайте свой пароль – и вы сможете подключиться к выделенному каналу бота напрямую, набрав
/dcc chat <bot name>
Но вот беда: на данный момент он не делает ничего особенного, просто красуется в канале. Прелесть Eggdrop – в расширяемости скриптами на TCL, и таковых уйма в Интернете. Один из наших любимых – egg-fu; это реализация очень простого скрипта искусственного интеллекта. Каждое утверждение добавляется в его виртуальный мозг, поэтому строка вроде «LXF великолепен» свяжет свойство «великолепен» с объектом «LXF». Последующее утверждение «LXF – журнал» добавит в список свойств «журнал», и у бота будет несколько вариантов комментария, когда объект всплывет в разговоре.
Установите его, зайдя в ~/eggdrop/scripts/ и загрузив файл командой
wget http://sourceforge.net/projects/egg-fu/files/egg-fu/2.0.11/egg-fu_2.0.11.zip
и затем распаковав командой
unzip egg-fu_2.0.11.zip
Откройте созданный ранее файл настройки Eggdrop, прокрутите его до конца и добавьте строку
source scripts/egg-fu_2.0.11.tcl
Благодаря ей при следующем запуске Eggdrop загрузит скрипт egg-fu. Но это еще не все – мы обнаружили, что egg-fu выдает ошибки, если не прописать полные пути в его файле настройки и полный путь в верхней части самого скрипта, поэтому, прежде чем двигаться дальше, позаботьтесь об этом. Потом перезапустите бота. Откройте irssi, начните сеанс чата DCC с ботом и отправьте ему команду .die по выделенному каналу связи, чтобы выключить его. Теперь снова запустите бота, на сей раз сбросив флаг -m, так как при последующих запусках этот флаг уже ни к чему. Вернитесь в irssi, зайдите в канал бота и побеседуйте с ним. Возможно, не сразу, но в конце концов он начнет подхватывать ваши выражения и отвечать вполне естественно.
[править] Чем дальше, тем смешнее
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
Дальнейшее развитие бота зависит от вас. Мы очень позабавились, запустив сразу двух ботов с искусственным интеллектом (для этого мы установили другую версию egg-fu в другой каталог и создали отдельный файл настройки для Eggdrop, указывающий на другой каталог). Да, боты перенимают друг от друга полную ерунду, но время от времени заходить на канал и смотреть, какой степени безумия они достигли – невероятное удовольствие!
Если ваш сервер будет публичным, возможно, вы захотите установить и других ботов. Боты, способные выполнять различные действия от управления каналами до простых игр, имеются на www.egghelp.org/tcl.htm. Конечно, публичный сервер требует добавочной настройки: убедитесь, что все пароли надежны; запускайте все от имени пользователя с ограниченными правами, перенаправьте порты Raspberry Pi на маршрутизаторе и, пожалуй, подключитесь к сервису динамического DNS, типа www.dyndns.com, чтобы посетители всегда могли найти сервер, даже если ваш домашний IP-адрес изменится. И, наконец, помните: если мозг вашего бота слишком разбухнет, то Raspberry Pi, у которого, разумеется, не самая мощная архитектура, зависнет, пока будет думать, что бы ему такого ответить. Чтобы сервер работал плавно, мы ограничили ресурсы процессора, доступные каждому процессу Eggdrop. С помощью apt-get установите cpulimit, затем запустите Eggdrop с префиксом cpulimit --limit 40 (например), чтобы он использовал не более 40 % доступных циклов процессора RPi. Это замедляет бота, но поддерживает жизнь сервера.
К тому же, «мозг» бота хранится в обычном текстовом файле, а значит, туда легко залезть и достать несколько фраз. Если у ваших сражающихся ботов развилась одержимость Джеффом Голдблюмом [американский актер, – прим. пер.], как у наших, сделайте это обязательно. Вы раньше знали, что Джефф Голдблюм «наверное, пьян» или «компьютерная программа», а также что «Робокоп – это не Джефф Голдблюм и, наверное, человек, и, значит, я знаю, что Робокоп – это исследование ноги»? Нет? Ну вот, а теперь знаете. |