«Деньги, карты, два ствола» (linux, kodi, tv-box)

— Мамо! Купіть мені плєєр!
— Який тобі плєєр, доцю? Ти ще коньків не сточила!..

Прогресс шёл себе, шёл, и дошёл до того, что наиболее универсальный плейер нынче представляет собой … компьютер в том или ином его обличии. А современный медийный контент — это различные файлы (видео/аудио/изображение/прочие), хранящиеся либо на каких-нибудь носителях, либо на серверах, как локальных, так и размещенных где-то в интернете. Миру явили даже такой симбиоз, как Smart-TV — (фактически, обычный) компьютер, который запхнули внутрь телика. Он тебе и в интернет сходит, и музычку проиграет, и киношку покажет, и еще целую кучу других разных дел сделает!

Но так уж вышло, что телик я себе купил … обычный (хорошо, хоть с HDMI-входами!). И это — лишь одна из причин всего того «перфоманса», который описан в этой заметке. Телевизор мой стоит себе на стенке в зале. Рядом разместился AV-ресивер (музыку тоже люблю послушать иногда), колонки, саб, одним словом — «всё пучком». И лишь компьютера там нет! Ну и последний «гвоздь в крышку» — моя домашняя «файлопомойка» (сервер, на котором хранятся все те самые файлы медиа-контента) живет на антресоли, образно говоря, «на другом краю мира» (квартиры). И никаких кабелей между этими локациями не было проложено по определению (ну кто мог себе такое даже представить в конце прошлого века, когда делался ремонт квартиры?!). Ну и последнее — музыку  я люблю «пускать» на ресивер «по цифре», но при этом, из цифровых входов у моего «старичка» имеются лишь S/PDIF и его оптическая разновидность — TOSLINK. А фильмы жена любит смотреть со звуком из телевизора («А чего оно так громко гупает с твоих колонок?»). Ну вот вроде как и закончили с «вводными»…

Итак, первый плейер, на который были возложены обязанности развлекать нас, представлял собой мини-ПК Raspberry-PI, с установленной на нем дополнительной платой PiFi-Digi (цифровые выходы звука S/PDIF и TOSLINK). Вот такая себе «сладкая парочка»:

Ах да, кроме «вышеперечисленных товарищей» в процессе также участвовали:

  • USB-адаптер беспроводной сети Tp-Link TL-WN725N (надо ж было как-то к «файлопомойке» подключаться)
  • Беспроводная «аэро-мышь» i7 Rii mini (в качестве пульта ДУ)

Установленное на «малину» ПО представляло собой (в разное время) различные дистрибутивы Linux, с установленной на них программой медиа-плейера Kodi («в девичестве» называвшейся XBMC, и к которой я за эти годы, можно сказать, «прикипел душой»). И все было бы хорошо, если бы не те самые «НО», которые по определению есть всегда и везде:

  • Компьютер сей особой производительностью не блистал. Это была модель из «более ранних» версий (model B): одно ядро частотой 700 МГц, памяти 512 Мб. Возможно, текущие версии «малины» (например, Raspberry-PI model 3B+) работали бы пошустрей, но тратить деньги на «эксперименты по проверке теорий» абсолютно не хотелось. Кроме того, и плату S/PDIF тоже пришлось бы покупать новую…
  • Дизайн изделия (именно такой, как и показан на фото выше, без корпуса) тоже особо глаз не радовал (не столько мой глаз, сколько жены).
  • Были еще какие-то мелочи, но, видимо, настолько незначительные, что уже и из памяти выветрились.

Железо

Вдруг как-то неожиданно освободился мини-пк, работавший моей домашней «файлопомойкой» (мини-сервером, выполнявшим разные задачи, в том числе и хранения медиа-контента). Вот такой, как показан на картинках ниже (разве что, wi-fi адаптера в моем не было, и как следствие, антенки — тоже):

А главный «сюрприз» ждал меня внутри этого компьютера — при тщательном осмотре его материнской платы на ней было обнаружено место для установки передатчика TOSLINK (оптического варианта S/PDIF). Использованный в компьютере чип аудио-кодека ALC662 от ф. Realtek имеет соответсвующий выход. Последующая проверка цепей показала, что все необходимые подключения и элементы на плате присутствовали, и не хватало лишь самого передатчика! На следующей картинке место для установки TOSLINK видно (в левом нижнем углу платы, пониже светло-зеленого гнезда аналогового аудио-выхода):

Отлично! Передатчик TOTX179 был куплен и распаян на плате, в корпусе мини-пк было «прогрызено» отверстие под него, и новый медиа-плейер был практически готов! Оставалось лишь поставить на него ОС и программу-проигрыватель.

«Муки выбора» (софт)

Глобально «что устанавливать» — вопрос не стоял абсолютно! Все тот же Kodi поверх все того же Linux-а. Ответ на вопрос о том, «какой Linux устанавливать», мне тоже известен уже давно — тот, который знаешь, иначе «танцы с бубном» затянутся надолго! А «знакомы» мне два дистрибутива — Ubuntu и Debian. Вопрос был лишь в том, «что где доступно и почем?». Речь о том, что версии плейера Kodi, включенные в различные дистрибутивы их авторами, во первых, отличаются, а во вторых, не дают «гибкости выбора» (как вы можете увидеть в приведенной ниже таблице, в официальных репозиториях присутствует лишь по одной версии Kodi для каждого из релизов). Но тут мною для Ubuntu были найдены так называемые PPA на сервере launchpad.net, «и всё сразу-же стало на свои места»! 🙂

Ниже приведена таблица, в которой указано, какие версии Kodi доступны в разных версиях Linux-ов (для Ubuntu рассматривались только LTS-релизы). На всякий случай уточню — приведенная в таблице информация была актуальна на момент написания данной заметки.

Дистрибутив Релиз Доступность Kodi в репозиториях
Официальный PPA
Ubuntu 16.04 LTS (Xenial) 15.2 16.1 (kodi-old)
17.6 (stable)
18.0 (unstable)
Ubuntu 18.04 LTS (Bionic) 17.6 17.6 (stable)
18.0 (unstable)
Debian 8 (jessie) 16.1 (backports)
Debian 9 (stretch) 17.1

По итогам «исследований» мною был выбран дистрибутив Ubuntu, и вот почему: использование PPA предоставляло возможность установить 2 или 3 разных версии проигрывателя Kodi, не меняя при этом саму ОС. Причем, в плане самого проигрывателя Kodi мои личные предпочтения склонялись к версиям 16 и 18. Поводом для такого моего выбора послужила опция в настройках звука, которая в 16-й версии Kodi присутствовала, в 17-й версии её убрали, а в 18-й — снова вернули! Речь идет о возможности «задрать» уровень громкости центрального канала, когда плейер выполняет т.н. downmix из многоканального (5.1) звука в двухканальное стерео. Эта штука очень сильно помогает при просмотре на телевизоре (имеющем лишь стерео-динамики) фильмов с такими «качественными» переводами, при которых голоса актеров «озвучки» выведены лишь в центральный канал да еще и со слабым уровнем, в результате чего их очень плохо слышно на фоне «громогласных» звуковых эффектов. А с учетом того, что иногда «задирать центр» приходится аж до уровня в +10…+16 дБ, то лично для себя эту опцию я считаю весьма и весьма полезной! Настройка параметра в 16-й версии Kodi показана на скриншоте:

Релиз Ubuntu мною был выбран такой: 16.04 LTS, и вот почему. Во первых, в нём возможно установить любую из ТРЁХ различных версий проигрывателя Kodi (естественно, речь про установку именно с помощью PPA). А во вторых — настройка сетевых адаптеров в нём осуществляется ещё «по-старому». Не скажу, что я не нашел для 18.04 LTS информацию о том, как в ней вернуться к «старому» ifupdown вместо «нового» netplan, или не нашел, что и как нужно прописать в настройках netplan для запуска моего адаптера TL-WN725N. НО, под управлением netplan он все равно стартовать не захотел, а менять в «новом» дистрибутиве «новый» netplan на «старый» ifupdown я посчитал просто «не красивым». Кстати, в случае использования Network Manager-а всё настраивалось, подключалось и работало на ура, но в том-то и дело, что в мои планы его использование не входило, о причинах чего будет сказано в следующем абзаце…

Дело в том, что для работы Kodi не нужны никакие «графические рабочие столы» (такие как Gnome, KDE, и т.п.). У него есть возможность работать в т.н. «standalone» режиме, для которого — да, нужен X-сервер, но вот desktop-ы всякие там — совсем не обязательны! А за то время, что пользуюсь линуксами разными, я уже успел убедиться, что «графический десктоп» — это самая «прожорливая» часть ПО в данных системах! Поэтому, ставить на свой плейер я режил серверную версию Ubuntu — ту самую, которая совсем без графики! Расчитывая при этом впоследствии «досыпать» поверх «голой консоли» лишь самый необходимый минимум. И вот именно по причине отсутсвия графического десктопа никакой Network Manager моему плейеру просто «не светил»!

Установка ОС

Установка ОС Ubuntu в интернете описана столько раз, что останавливаться на этом не вижу смысла. Пошли на сайт, скачали образ диска (iso-файл), записали его на «болванку» или флешку, загрузились с нее и установили. Единственное, на всякий случай повторюсь — лично себе я устанавливал 64-битную версию server-а Ubuntu 16.04.5 LTS. И еще одна настоятельная рекомендация — устанавливая ОС, не используйте слово «kodi» в качестве логина (юзер с таким именем будет создан позже, при установке программы Kodi).

Настройка беспроводной сети

Считаю нужным уточнить — всю установку и настройку плейера я проводил, подключив его к сети (роутеру) ETHERNET-КАБЕЛЕМ. Связано это с тем, что так БАНАЛЬНО ПРОЩЕ! Не могу сказать, что современные версии Ubuntu «проблемны» в плане поддержки большинства популярных (наиболее массово производимых) Wi-Fi-адаптеров, но сам я никогда не возился с их настройкой именно во время установки ОС. Проще всё проделать, подключившись кабелем. И лишь потом настраивать Wi-Fi (естественно, продолжая «висеть на кабеле», чтоб не отвечать на вопросы типа «А как я могу скачать пакеты, если к интернету не подключен?» 🙂 )…

Должен сделать еще одно краткое отступление. Естественно, описываемые в этой заметке действия проделывались не раз, не два, и не двадцать два. И лишь по итогам всех этих (за)нудных «экспериментов» была написана статья, которая теперь выглядит как «просто раз, два, три…». В ходе этих «экспериментов» действия предпринимались самые разные, и далеко не всегда действительно необходимые. А главное, потом было сложно понять, лучше стало после них, или хуже. Потому что «всё продолжало работать также, как и до того как…».

И вот сейчас речь пойдет именно о таком «сомнительной необходимости» действии — установке «из исходников» драйвера для моего Wi-Fi-адаптера. На всякий случай напомню, мною использовался USB адаптер Tp-Link TL-WN725N с чипом RTL8188EUS от Realtek внутри. Должен сразу же добавить — Ubuntu сама распознает указанный адаптер и сама устанавливает драйвер для него. Но я в эти «дебри» с установкой драйвера «из исходников» полез на том этапе, когда у меня в Ubuntu 18.04 LTS никак не получалось настроить подключение к беспроводной сети в программе netplan (подумал, «А вдруг поможет?»). По факту — не помогло, но инфа осталась, вот и выкладываю ее тут. Итак, чтобы установить драйвер на RTL8188EUS выполните следующее (приведены команды, которые необходимо выполнить в консоли):

  1. Установите необходимые дополнительные пакеты:
sudo apt-get update
sudo apt-get install -y linux-headers-$(uname -r) build-essential git
  1. Скопируйте исходники драйвера:
git clone https://github.com/lwfinger/rtl8188eu
  1. Перейдите в папку с исходниками:
cd rtl8188eu
  1. Выполните сборку и установку драйверов:
make all
sudo make install
  1. Включите использование системой модуля установленного вами драйвера:
sudo insmod 8188eu.ko

После перезагрузки ОС должна начать использовать установленный вами драйвер вместо встроенного. Но повторюсь, разницы в работе Wi-Fi после смены драйвера лично я не заметил, поэтому считаю установку драйвера не обязательной.

Непосредственную настройку беспроводного подключения нужно начать с установки необходимых пакетов.

  1. Для этого в консоли введите команды:
sudo apt-get update
sudo apt-get install -y wireless-tools wpasupplicant
  1. Настройте параметры подключения к беспроводной сети (предполагается, что ваша сеть использует WPA-PSK или WPA-PSK2 шифрование). Для этого запустите редактор, указав для редактирования соответсвующий файл настроек:
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
  1. Редактор должен сообщить вам, что он открыл [Новый файл]. В файл впишите такие строки:
country=GB
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
   ssid="тут_впишите_SSID_вашей_сети"
   psk="тут_впишите_ключ_шифрования_вашей_сети"
}

Естественно, что SSID и пароль (выделенные выше красным цветом) вы должны указать СВОИ собственные! Двухбуквенный код страны, при желании, также можете указать свой (список кодов можно тут просмотреть в таблице). Правда, я не заметил особой разницы от его смены. Выполнив это, сохраните файл (нажмите F3 и затем подтвердите имя файла для сохранения, нажав Enter) и выйдите из редактора (нажав F2).

  1. И завершающий шаг — настройка сетевых параметров адаптера в файле /etc/network/interfaces. Правда, перед этим вам нужно уточнить какое «имя» система присвоила вашему беспроводному адаптеру. Это можно сделать следующей командой:
iwconfig

В ответ вы должны получить список всех сетевых адаптеров, которые ОС обнаружила в вашем компьютере. Напротив тех  из них, которые не являются беспроводными, будет указано «no wireless extensions». По поводу же того адаптера, который программа опознает как беспроводной, будет указано нечто наподобие такого:

wlx30b5c216a241  unassociated  ESSID:""  Nickname:"<WIFI@REALTEK>"
          Mode:Auto  Frequency=2.412 GHz  Access Point: Not-Associated   
          Sensitivity:0/0  
          Retry:off   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:off
          Link Quality:0  Signal level:0  Noise level:0
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

В показанном примере видно, что имя беспроводного сетевого адаптера — wlx30b5c216a241 (выделено мной). Вот именно для него и нужно прописать настройки в файл /etc/network/interfaces. Откройте данный файл в редакторе:

sudo nano /etc/network/interfaces

Впишите в конце файла (не удаляя и не меняя остальные, уже имеющиеся там строки) следующее:

allow-hotplug wlx30b5c216a241
auto wlx30b5c216a241
iface wlx30b5c216a241 inet dhcp
#wireless-power off
	wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Естетсвенно, редактируя файл, «имя» адаптера указывайте то, которое будет использовано в вашей системе.

Вписанные вами в файл команды означают следующее: адаптер допускает «горячее подключение» (1-я строка), должен запускаться «автоматом» при старте системы (2-я строка), получать все настройки (IP-адрес, шлюз, DNS) автоматически, по DHCP-протоколу (3-я строка) и для подключения к беспроводной сети использовать настройки из соответсвующего файла (5-я строка). 4-я строка запрещает управление питанием для данного адаптера (в том смысле, что драйверу адаптера запрещено снижать мощность передатчика Wi-Fi-радиомодуля с целью экономии энергии), но чтобы данная директива начала работать, ее нужно «раскомментировать» (удалить «#» в начале строки).

  1. Сохраните изменения и выйдите из редактора.

На этом настройка завершена, и после перезагрузки ваш компьютер должен нормально подключиться к беспроводной сети.

Установка Kodi

Для установки Kodi на Ubuntu-server нужно выполнить несколько действий, а именно:

  • Добавить PPA репозитория Kodi на сервере launchpad.net;
  • Установить X-server;
  • Установить Kodi;
  • Создать новый Unit для Sysytemd, который будет запускать Kodi как standalone-демон при запуске ОС;
  • Создать новое правило для polkit, которое позволяет неавторизованному пользователю управлять перезагрузкой/выключением системы (это добавит соответсвующие кнопки в меню Kodi);

Мною была найдена страница на GitHub, автор которой написал и выложил скрипт, выполняющий все вышеописанное, избавляя от необходимости делать это пошагово вручную.

Чтобы воспользоваться данным скриптом и установить Kodi с его помощью, выполните следующее:

  1. Установите необходимый пакет:
sudo apt-get update
sudo apt install git -y
  1. Клонируйте скрипт автора с сайта GitHub на свой компьютер:
git clone https://github.com/abacao/Boot2Kodi.git
  1. Перейдите в папку со скриптом:
cd Boot2Kodi
  1. ВНИМАНИЕ — ЭТО НЕ ОБЯЗАТЕЛЬНЫЙ ШАГ! Так как по умолчанию этот скрипт подключает т.н. «stable»-ветку репозитория Kodi, то в результате его выполнения на компьютер будет установлена текущая «стабильная» версия программы, а именно — 17.6 (учтите, что данная информация была актуальна на момент написания заметки, при выходе новых версий проигрывателя наверняка всё изменится, поэтому, уточните свежую раскладку по версиям на странице проекта на сервере launchpad.net или тут). Если вы хотите установить именно текущую стабильную версию программы Kodi (17-ю), просто пропустите этот шаг и сразу переходите к 5-му пункту! Если же вы хотите установить Kodi версий 16.х (предыдущую) или 18.х («нестабильный» релиз-кандидат), то тогда вам нужно будет выполнить следующее:

Откройте файл скрипта в редакторе:

nano install.sh

Найдите в нем такую строку (где-то в начале файла):

add-apt-repository ppa:team-xbmc/ppa -y

И отредактируйте её. Если вы хотите установить Kodi версии 16.х, измените ее так, чтобы строка стала выглядеть следующим образом:

add-apt-repository ppa:team-xbmc/kodi-old -y

Если же вы хотите установить Kodi версии 18.х, то строку нужно привести к такому виду:

add-apt-repository ppa:team-xbmc/unstable -y

Сохраните изменения и выйдите из редактора.

  1. Запустите скрипт на выполнение:
sudo sh ./install.sh

По окончании работы скрипта программа Kodi будет установлена и запущена.

Звук — донастройка и метод переключения

Как уже было сказано в начале заметки, в моем случае звук проигрывателя должен был выводиться «наружу» двумя различными способами. При просмотре фильмов — по HDMI на телевизор. А при прослушивании музыки — по S/PDIF (TOSLINK) на AV-ресивер. Но тут меня поджидала «засада» — Kodi видела только лишь два выхода (а главное — ни одного из тех, что были нужны мне!):

Причина «фокуса» крылась в программе pulseaudio — это она предоставляла проигрывателю информацию о всего двух возможных способах вывода звука. В случае, если бы на компьютере был установлен какой-нибудь «графический десктоп», в нем присутствовали бы средства для настройки предпочтений из числа ВСЕХ имеющихся в компьютере аудио-устройств. Но увы, в моём распоряжении были сервер и «голая консоль» на нём! Решением оказалось «грохнуть» pulseaudio (и в таком случае Kodi использзовал бы сведения, предоставляемые другой программой аудио — alsa). И как показала дальнейшая проверка — в таком случае список для выбора оказывается гораздо шире:

Естественно, этот вариант устраивал меня намного лучше — в нем были доступны к  выбору нужные мне и HDMI, и S/PDIF!

Интернет предлагал мне вообще полностью удалить программу pulseaudio с компьютера. Но я воспользовался другими найдным советом — просто запретить pulseaudio сканирование аудио-устройств. И этого оказалось достаточно! Чтобы настроить систему таким образом, нужно выполнить следующее:

  1. Откройте в редакторе файл настроек программы pulseaudio:
sudo nano /etc/pulse/client.conf
  1. Найдите в файле такую строку:
; autospawn = yes
  1. Отредактируйте ее так, чтобы она стала выглядеть следующим образом:
 autospawn = no
  1. Сохраните изменения и выйдите из редактора.
  2. Перезагрузите компьютер.

Всё! После перезагрузки в настройках Kodi вы увидите максимально полный перечень устройств для вывода звука, имеющихся в вашем компьютере!

Для переключения вывода звука с одного интерфейса (в моем случае, с HDMI) на другой (S/PDIF) интернет настойчиво предлагал мне установить в программу Kodi дополнительный плагин. И я даже установил его! И даже выполнил весь тот «кордебалет», который нужен был для его настройки! Но скажу честно — это была не совсем тривиальная задача! Нужно было найти специальный xml-файл с настройками интерфейса, найти в нем конкретную запись, отредактировать её, дополнительно добавить туда еще какой-то код, скопировать файлы иконок, и т.д. и т.п… Короче говоря — не понравилось мне все это! И поэтому я свою задачу решил совсем иначе — просто создал в программе Kodi еще один (новый) профиль (пользователя)! В каждом из профилей я настроил свой собственный способ вывода звука (а также, и дополнительные параметры): в одном используется HDMI, в другом — S/PDIF! И теперь в случае необходимости я просто переключаюсь из одного профиля в другой (штатными средствами программы Kodi)! В итоге — никакой мороки с правкой xml-файлов…

Кеширование

100500 раз в интернете читал высказывания о том, что «мультимедиа по Wi-Fi — это плохое решение!». Но кабеля у меня как не было (между «файлопомойкой» и плейером), так и нет по сей день! А «киношку» посмотреть какую-никакую охота все-равно.

Еще во времена, когда плейером трудился старенький Raspberry, я нашел описание и настроил по нему кеширование в программе Kodi. И считаю эту возможность большим плюсом — благодаря ей Kodi старается скачать себе в буфер какой-то объем данных наперед. И благодаря буферизации вопроизведение намного меньше подвержено влиянию качества канала передачи данных, чем в случае, когда кеширование не используется. Например, «среднестатистическую» песню Kodi за пару-тройку секунд скачивает в свой буфер целиком и потом воспроизводит её непосредственно из памяти. Есть ли ему при этом какое-либо дело до нестабильности Wi-Fi, думаю, вы догадаетесь сами…

Чтобы настроить кеширование в программе Kodi нужно создать специальный файл настроек и вписать в него ряд параметров. Учтите, что названия параметров в файле для версии 16.х отличаются от таковых для версий 17.х и 18.х! Поэтому, будьте внимательны, выполняя приведенные ниже инструкции.

Чтобы настроить кеширование, выполните следующее:

  1. Запустите редактор, указав для редактирования соответсвующий файл настроек:
sudo nano /home/kodi/.kodi/userdata/advancedsettings.xml
  1. Редактор должен сообщить вам, что он открыл [Новый файл]. В файл нужно вписать настройки, которые будут определять параметры кеширования. Как уже было сказано выше, для разных версий программы Kodi эти строки должны отличаться:

ЕСЛИ ВЫ НАСТРАИВАЕТЕ ПРОГРАММУ KODI ВЕРСИИ 16.Х, то впишите в файл такие строки:

<advancedsettings>
    <network>
	<cachemembuffersize>268435456</cachemembuffersize>
	<buffermode>1</buffermode>
	<readbufferfactor>6</readbufferfactor>
    </network>
</advancedsettings>

ЕСЛИ ЖЕ ВЫ НАСТРАИВАЕТЕ ПРОГРАММУ KODI ВЕРСИЙ 17.Х или 18.Х, то строки должны быть такие:

<advancedsettings>
    <cache>
	<memorysize>268435456</memorysize>
	<buffermode>1</buffermode>
	<readfactor>6</readfactor>
    </cache>
</advancedsettings>
  1. Сохраните файл и выйдите из редактора.

Изменения вступят в силу после перезапуска Kodi (думаю, проще будет перезагрузить сам компьютер).

Параметров три (их значения выделены красным цветом), и не смотря на отличие имен параметров, определяют они одно и то же: первый указывает размер буфера в байтах (в моём мини-пк установлен модуль памяти объемом 2Гб, так что размер буфера я указал равным 256 Мб, но можно было указать и побольше), второй — опредеяет в каких случаях используется кеширование (вариант 1 означает — для любых протоколов и сетей, как локальных, так и «глобальных»), и третий параметр указывает, во сколько раз быстрее программа должна пытаться считывать данные из источника по сравнению с битрейтом самого медиа-файла. Подробнее прочесть о том, что и как можно настраивать в файле advancedsettings.xml, вы можете в Wiki на сайте Kodi.

И вот теперь действительно ВСЁ!…

Ах да,

…вишенка на торте

Чтобы сделать скриншот, можно обратиться к программе Kodi из браузера с «соседнего» в сети компьютера. Для этого вы дожны выполнить запрос на адрес:

http://адрес_компьютера_с_kodi:8080/jsonrpc?request={"jsonrpc":"2.0","id":1,"method":"Input.ExecuteAction","params":{"action":"screenshot"}}

Пару важных замечаний. Во первых, для того, чтобы это работало, в настройках Kodi нужно «Разрешить удаленное управление по HTTP». Во вторых, при выполнении самого первого скриншота программа попросит вас указать папку, в которую их сохранять. И третье — самое грустное: это работает лишь в версиях 16.х и 17.х…

Новости программы Easyhotspot, июнь…ноябрь 2018

Новости — июнь…ноябрь 2018

С момента прошлой публикации в программе произошли следующие изменения:

  • Изменения в веб-интерфейсе Easyhotspot («черной админке»);
  • Обновления и исправления модулей
  • Обновления и изменения скрипта-инсталятора
  • Изменения в документации

Изменения в веб-интерфейсе Easyhotspot («черной админке»)

  • Версия фреймворка Codeigniter (на котором написана «черная админка») обновлена до 3.1.9. Что при этом изменилось в самом Codeigniter можно прочесть в «Change Log» на их сайте. В свою очередь, для Easyhotspot это — банальное поддержание актуальности базового фреймворка;
  • Немного изменены настройки редактора TinyMCE: добавлена кнопка прямого редактирования html-кода и добавлен вызов текстовых сообщений на украинском языке, когда он украинский язык выбран в «черной админке»;
  • Исправлена ошибка нового кабинета: в меню вызова страниц платежных систем кнопка для п/с Mixplat открывала ошибочную ссылку (несуществующую страницу);
  • Изменен формат экспорта данных из программы — добавлена библиотека PHPExcel, и все отчеты, которые ранее выводилось в виде CSV-файлов, теперь выводятся в формате MS Office Excel (2007);
  • Параллельно ряд отчетов был сделан «более красивыми». Например, экспорт данных из архива теперь выводится на трех листах одного xlsx-файла. На первом листе выводятся сведения об аккаунтах, на втором — о платежах, и на третьем — о сеансах доступа в интернет;
  • При экспорте в xlsx-файл из архива данных об аккаунте возникала ошибка создания «многостраничного» файла электронной таблицы, ЕСЛИ В БАЗЕ НЕ БЫЛО СВЕДЕНИЙ О «ПОКУПКЕ». Ошибка исправлена;
  • Обновлен отчет о ваучерах при экспорте в xls-файл. Если ранее в нем выводились только логин и пароль, то теперь список параметров расширен, и в него входят такие сведения: Номер, Логин, Пароль, Имя Тарифного пакета, Дата и время создания ваучера, MAC-адрес клиента, Данные из графы «Паспорт», Дата и время активации ваучера, Дата и время окончания срока годности ваучера, Суммарное время доступа в интернет по ваучеру, Суммарный объем трафика, потребленный ваучером, ID хотспота (NASID);
  • Попутно была обнаружена и устранена ошибка, которая ранее во время экспорта (еще в CSV) результатов работы платежных модулей могла приводить к удалению из базы этих данных (уже после их экспорта), даже если администратор не ставил «птичку» о желании такого удаления;
  • Была обнаружена и исправлена ошибка редактирования «клиента с оплатой по счету» (postpaid). Для того, чтобы она проявилась, нужно было, чтобы сначала (когда-то ранее) в программе приключился глюк. Суть ошибки заключалась в следующем: Freeradius при проверке авторизации клиентов в том числе использует данные из таблицы radcheck. Одной из таких записей, размещенных в таблице radcheck, является пароль клиента. При редактировании учетной записи клиента с оплатой по счету код биллинга обновлял запись с паролем в таблице radcheck. Но в момент обновления сам факт наличия в базе radcheck такой записи (с паролем) биллинг не проверял. В нормальной ситуации все происходило успешно, и отредактированный клиент потом успешно авторизовался по новому паролю. Но отношение самого сервера MySQL к обработке запроса на обновление записи звучит так: «да, запрос на обновление был получен и выполнен. но, если самой обновляемой записи при этом не было, мы это ошибкой не считаем» 🙂 … В итоге ошибка проявлялась лишь В ТОМ СЛУЧАЕ, если по каким-то «неизвестным причинам» из таблицы radcheck (когда-то ранее) уже пропала запись о пароле клиента. И вот тогда — обновляй, не обновляй аккаунт клиента в биллинге, а пароля у него в таблице radcheck так и не появлялось! И в итоге такой клиент авторизоваться больше уже не мог и постоянно получал отказ. Ошибка исправлена! И, повторюсь, в нормальной ситуации эта ошибка вообще не проявлялась…
  • При редактировании (ОБНОВЛЕНИИ) настроек фирмы-агрегатора для функции отправки служебных СМС у клиента происходила ошибка — новые данные не записывались в базу программы (у себя эту ошибку так и не смог воспроизвести). Был изменен код функции (сам алгоритм записи настроек в базу), ошибка «ушла»;
  • В код биллинга была добавлена функция переключения ваучеру тарифа с «первого» на «второй» по истечении лимита, отведенного «первым» тарифным пакетом. Что дает этот «финт»? Такой себе «двухскоростной» режим обслуживания! Вы должны будете создать два тарифа: первый — «быстрый и недолгий», и второй — с длительным доступом, но с низкой скоростью. Затем создаете ваучер первого тарифа и даете его клиенту. Клиент по такому ваучеру сначала пользуется быстрым интернетом в течение какого-то времени, и по истечении номинала первого тарифа его отключит от интернета. Описываемая тут функция найдет ваучер «первого» тарифа с израсходованным номиналом, и сменит ему тариф на «второй». Клиент подключится к интернету снова, но уже на низкой скорости. И в таком медленном режиме он сможет пользоваться интернетом до тех пор, пока не израсходует «номинал» второго (более длинного) тарифа;
  • В биллинг добавлена функция, которая выгружает на указанный в (её) настройках SFTP-сервер xlsx-файл со сведениями обо всех сеансах доступа в интернет за предыдущий день, включая и сведения из графы «паспорт» для соответствующего аккаунта (в эту графу автоматизированные модули Easyhotspot-а вносят номер мобильного телефона клиента);
  • В список агрегаторов функции отправки служебных СМС добавлена фирма АЛЬФАSMS (Украина);
  • Немного изменен макет страницы авторизации, в тех случаях, когда она выводит «промежуточные сообщения» (такие как «Подключаемся…» и т.п.). Текст сообщений теперь отцентрирован по вертикали внутри div-а, выводящего эти сообщения;
  • Небольшие обновления во внешнем виде «чёрной админки» Easyhotspot (правка CSS-файлов: внесение изменений, небольшая оптимизация);
  • Исправлена функция показа рекламы после авторизации (а точнее — приведена к тому же принципу, что и выписка гостевых ваучеров — имя «гостевого тарифа» для проверки берется не из файла настроек (conf.txt), а из базы биллинга (выбирается т.н. «гостевой тариф», привязанный к данному NASID);
  • Изменены настройки размещения лог-файлов, генерируемых веб-приложением Easyhotspot. Теперь они располагаются в папке /var/www/easyhotspot/application/logs;
  • В процедуру ротации лог-файлов добавлен файл настроек, обязывающий раз в неделю проводить ротацию логов веб-приложения Easyhotspot (всех логов, найденных в папке /var/www/easyhotspot/application/logs);

Обновления и исправления модулей

  • Переписан модуль СМС-авторизации! Теперь он предлагает два способа авторизации клиентов — либо по паролю, присылаемому в СМС, либо по звонку на номер, указанному хотспотом. Кроме того, функции модуля были разделены между самим биллингом и страницей авторизации. Отдельное веб-приложение теперь не используется, а номер своего телефона клиент теперь вводит непосредственно в меню авторизации хотспота. Подробнее можно прочесть на странице с описанием модуля или в инструкции к нему;
  • В модуль Робокассы внесено изменение — убрана отправка символа валюты (RUB) при проведении платежей в рублях. В соответствии с текущей версией документации п/с Робокасса, платежи итак осуществляются в рублях и отправка информации о валюте — излишняя;
  • Исправлена ошибка в платежном модуле Onpay: при формировании ваучера модуль вписывал пароль с устаревшим аттрибутом User-Password. В современных версиях FreeRDIUS данный аттрибут вызывает ошибку, и клиент не может авторизоваться. Исправлено на рекомендованное Cleartext-Password. Клиенты успешно авторизуются по купленным ваучерам.
  • Пришло уведомление от платежной системы Liqpay о том, что с 01.07.2018 они окончательно отключают автоматическую переадресацию запросов с домена LiqPay.com на LiqPay.ua. Изменение адреса страницы платежной системы было внесено в код модуля;
  • Обновлен (а точнее — переписан заново) модуль обслуживания по СМС, отправляемым на т.н. «короткие номера». Теперь модуль написан на php (был — на perl). Страница Тарифов модуля теперь адаптируется под экраны мобильных устройств. Владельцы мобильных устройств могут, нажав кнопку, автоматически переходить в приложение отправки для СМС, куда уже будут вписаны и требуемый «короткий номер», и текст сообщения! Все подробности можно прочесть на обновленной странице с описанием модуля СМС («короткие номера»), либо в инструкции к нему;

Обновления и изменения скрипта-инсталятора

  • В системе полностью убрано использование perl-модуля Net::Ping::External. Это обусловлено тем, что в новых версиях дистрибутивов данная библиотека будет недоступна. Как показал поиск, причина изъятия указанной библиотеки заключается в том, что у нее были обнаружены уязвимости безопасности, которые разработчик не устраняет (и уже давно, благодаря чему складывается впечатление, что он просто забросил свою программу). Ранее в биллинге Easyhotspot библиотека Net::Ping::External использовалась дважды: во первых, в скрипте страницы авторизации с помощью ping МОГЛА выполняться проверка доступности интернета (по умолчанию была выключена). С другой стороны, скрипт контроля роутеров, обслуживаемых сервером Easyhotspot, выполнял ping роутеров, от которых были получены запросы. Первое «применение» — как мне кажется, фактически не использовал никто. И даже больше — реально это было лишено смысла, т.к., если у хотспота отсутствует доступ к интернету, то переадресация неавторизованнных клиентов на страницу авторизации не работает. В итоге, было принято решение полностью убрать из кода страницы авторизации как использование самой библиотеки Net::Ping::External, так и проверки доступности интернета с помощью ping. Для второй задачи было найдено альтернативное решение. Скрипт контроля роутеров был вписан в сам Easyhotspot (в «черную админку»), функция ping также легла на нее же (с использованием уже языка php), а вместо старого perl-скрипта была написана «заглушка», которая просто переадресовывает запросы на новый адрес проверки;
  • Выход дистрибутива Ubuntu 18.04 LTS послужил поводом для радикального обновления скрипта-инсталятора! С учетом того, что дистрибутив Ubuntu 18.04 LTS выпускается только в 64-битной версии, программу Chillispot устанавливать на него стало бесполезным (Chillispot не работает на 64-битных ОС!). И в итоге получалось так, что Easyhotspot, установленный на Ubuntu 18.04 LTS, мог бы работать только в «варианте 3» (удаленный сервер-RADIUS для управления «внешними» роутерами). Инсталятор был изменен так, что теперь на сервер Easyhotspot, если он используется в качестве шлюза локальной сети хотспота («варианты 1 и 2»), устанавливается не устаревший Chillispot, а его обновленный «форк» — Coova-Chilli! При этом приложение Coova-Chilli компилируется из «исходников» непосредственно на самом сервере, что позволяет устанавливать его как на 32-битных ОС, так и на 64-битных! Благодаря внесенным изменениям (с одной стороны) Easyhotspot на дистрибутив Ubuntu 18.04 LTS теперь можно также устанавливать в любом из вариантов! А с другой стороны — сервер Easyhotspot в «вариантах 1 и 2» теперь может быть установлен на 64-битную версию и иных дистрибутивов;
  • В скрипт-инсталятор добавлена новая функция. В «черной админке» для отображения лога авторизации используются разные команды для разных версий сервера FreeRADIUS, установленного в биллинге. Теперь скрипт-инсталятор прописывает цифру, соответствующую версии FreeRADIUS-а, в файл конфига веб-интерфейса Easyhotspot, и благодаря этому биллинг сам выбирает корректную команду для отображения лога авторизации (раньше команду нужно было выбирать вручную — править вручную файл конфига);

Изменения в документации

Обновлена инструкция «Mikrotik и Easyhotspot». В инструкцию добавлена информация о настройке NASID. Расширена информация по поводу HTTPS-авторизации, добавлены разъяснения.  На основании информации, изложенной в интернете, был написан дополнительный скрипт, который в комплексе с рядом дополнительных мер позволяет заставить продукцию Apple открывать страницу авторизации хотспота не в CNA, а в Safari (т.е., в полноценном браузере).

Обновлена инструкция «Индивидуализация вашего хотспота». В инструкцию добавлены такие разделы:

  • Автоматический показ меню авторизации сразу же
  • Запрет меню авторизации «прятаться»
  • Изменение сложности логина и пароля, генерируемых программой

Просмотреть все эти изменения в действии можно на сайте демо-версии модифицированной программы Easyhotspot (логин/пароль Кассира: vcool/vcool123, логин/пароль Администратора: admin/admin123)

На всякий случай, напоминаю, что все эти изменения относятся именно к модифицированной версии программы Easyhotspot, которую можно приобрести на странице онлайн-продажи.

Список предыдущих анонсов новостей программы Easyhotspot доступен тут.

Новости программы Easyhotspot — февраль 2018

С момента прошлой публикации в программе произошли следующие изменения:

  • Изменения в веб-интерфейсе Easyhotspot («черной админке»);
  • Обновления и исправления у страницы авторизации
  • Новые модули
  • Обновления иных модулей
  • Обновления и изменения скрипта-инсталятора
  • Написан новый кабинет пользователя
  • Изменения в документации

Читать далее «Новости программы Easyhotspot — февраль 2018»

Форматирование флешки в Linux

Как показывает учет статистики моего блога, периодически сюда попадают люди, которые ищут ответ именно на этот вопрос — «Как отформатировать флешки в Linux?»

Итак, наиболее просто это можно сделать с помощью программы Gparted. Как ей пользоваться для изменения разделов жесткого диска, я уже вкратце писал тут. Для форматирования флешки не нужно загружаться в режиме Live-CD, можно просто запустить программу из меню. После этого в программе первым делом нужно выбрать саму флешку (вверху справа, нечто вида /dev/sdx, сориентироваться можно по объему диска в Мб) а потом на выбранном разделе щелкнуть правой кнопкой и выбрать пункт «Форматировать»….

А теперь перейдем к консоли. Зачем? На тот случай, если вдруг графика подводит…

Тезис первый — ниже описаны команды, выполнение которых разрешено только администратору. То есть, рядовой пользователь просто получит ответ, что команда не найдена. Посему, сначала в консоли становимся администратором:

su

…и в ответ на запрос вводим пароль администратора. Как стать root-ом в Ubuntu (точнее, задать root-у свой собственный пароль) я уже писал.  Теперь поищем нашу флешку (собственно, как это сделать, я упоминал тут). Повторюсь — для этого вводим следующую команду:

fdisk -l

В ответ получим данные обо всех разделах всех жестких дисков компьютера. В том числе и данные о разделах флешки тоже. Причем, у флешек, плотно эксплуатировавшихся (и форматировавшихся в том числе) под Windows в таблице разделов зачастую такая каша, что линуксовый fdisk выводит весьма «веселые» комментарии:

Диск /dev/sdc: 125 МБ, 125829120 байт
4 heads, 60 sectors/track, 1024 cylinders
Units = цилиндры of 240 * 512 = 122880 bytes
Disk identifier: 0x6f20736b

Это не похоже на таблицу разделов
Возможно, вы выбрали неверное устройство.

Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/sdc1   ?     3242233     7998524   570754815+  72  Неизвестный
Раздел 1 имеет различные физические/логические начала (не-Linux?):
физ=(357, 116, 40) логич=(3242232, 3, 49)
Раздел 1 имеет различные физические/логические окончания:
физ=(357, 32, 45) логич=(7998523, 0, 19)
Раздел 1 не заканчивается на границе цилиндра.
/dev/sdc2   ?      702874     8769658   968014120   65  Novell Netware 386
Раздел 2 имеет различные физические/логические начала (не-Linux?):
физ=(288, 115, 43) логич=(702873, 0, 3)
Раздел 2 имеет различные физические/логические окончания:
физ=(367, 114, 50) логич=(8769657, 1, 22)
Раздел 2 не заканчивается на границе цилиндра.
/dev/sdc3   ?     7791173    15857957   968014096   79  Неизвестный
Раздел 3 имеет различные физические/логические начала (не-Linux?):
физ=(366, 32, 33) логич=(7791172, 3, 6)
Раздел 3 имеет различные физические/логические окончания:
физ=(357, 32, 43) логич=(15857956, 3, 37)
Раздел 3 не заканчивается на границе цилиндра.
/dev/sdc4   ?    12023672    12023903       27749+   d  Неизвестный
Раздел 4 имеет различные физические/логические начала (не-Linux?):
физ=(372, 97, 50) логич=(12023671, 1, 53)
Раздел 4 имеет различные физические/логические окончания:
физ=(0, 10, 0) логич=(12023902, 2, 51)
Раздел 4 не заканчивается на границе цилиндра.

Пункты таблицы разделов расположены не в дисковом порядке

Ну да ладно, нас не шуточные комментарии интересовали. Главную информацию мы получили — в системе наша флешка определилась как /dev/sdc.

Начать я предлагаю все-таки с наведения порядка в таблице разделов. Для этого запустим все тот же fdisk, но уже с указанием того накопителя, который будем рихтовать:

fdisk /dev/sdc

(Естественно, вместо /dev/sdc вы указывайте нужный вам диск). В ответ получим следующее приглашение:

Команда (m для справки):

Чтобы, как говорили в небезызвестной комедии, «огласить весь список, пожалуйста» нажмем на клавиатуре как нам и предлагают букву «m». В ответ получим список возможных команд:

Действие команды
   a   переключение флага загрузки
   b   редактирование метки диска bsd
   c   переключение флага dos-совместимости
   d   удаление раздела
   l   список известных типов файловых систем
   m   вывод этого меню
   n   добавление нового раздела
   o   создание новой пустой таблицы разделов DOS
   p   вывод таблицы разделов
   q   выход без сохранения изменений
   s   создание новой чистой метки диска Sun
   t   изменение id системы раздела
   u   изменение единиц измерения экрана/содержимого
   v   проверка таблицы разделов
   w   запись таблицы разделов на диск и выход
   x   дополнительная функциональность (только для экспертов)

Первым делом удалим все те «смешные и странные» разделы. Как удалим? Да так, полностью, окончательно и бесповоротно! Зачем удалим? Так вы ж ведь флешку вобще-то форматировать собирались…

Данный этап процедуры я позволю себе назвать «первой красной меткой». Суть данного маркера в том, что выполняемые нами далее действия выглядят как деструктивные — мы что-то вроде как удаляем, что-то создаем. Однако, на данном этапе мы на самом деле еще не будем вносить какие-либо изменения в таблицу разделов диска. Реальные изменения будут выполнены позже, и об этом я вас извещу «второй красной меткой»…

Начинаем удалять — а именно — нажимать на клавиатуре букву «d». На предложение выбрать раздел, нажимаем последовательно сначала «1» (чтобы удалить первый раздел диска) :

Команда (m для справки): d
Номер раздела (1-4): 1

…потом снова «d» и «2» (второй раздел), «d» и «3» (третий раздел) и возможно «d» и «4» (четвертый). Показателем того, что уже пора остановиться, будет следующее сообщение от fdisk, появляющееся в ответ на очередное нажатие кнопки «d» :

Разделы еще не определены!

То есть, все разделы мы удалили. Теперь создадим новый. Для этого нажмеме кнопку «n» на клавиатуре:

Команда (m для справки): n
Действие команды
e   расширенный
p   основной раздел (1-4)

Создавать мы будем основной раздел. И для этого нажмем кнопку «p» на клавиатуре:

Номер раздела (1-4):

Создадим первый раздел. Для этого нажмем «1» на клавиатуре:

Первый цилиндр (1-1024, по умолчанию 1):

Значение по умолчанию нас полностью устраивает (нам же не нужно пустое место вначале флешки?). По этому чтобы создать разел начиная с самого первого «цилиндра» просто нажимаем «Enter» на клавиатуре:

Используется значение по умолчанию 1
Last цилиндр, +цилиндры or +size{K,M,G} (1-1024, по умолчанию 1024):

По умолчанию программа нам предлагает номер самого последнего «цилиндра». При этом новый раздел будет создан на весь размер флешки. Если Вы как и я, планируете всю флешку использовать как один диск, то просто согласитесь с предложенным выбором. Если же Вы хотите разбить флешку на несколько разделов, то тут нужно задать точку окончания первого раздела. Простейший способ — это указать требуемый размер раздела способом, который предложил сам fdisk — «+ КОЛИЧЕСТВО (ЕДИНИЦ ИЗМЕРЕНИЯ)». Например ввод «+1000М» создаст раздел размером 1000 Мегабайт. Лично я создавал один единственный раздел, и потому просто нажал «Enter» на клавиатуре:

Используется значение по умолчанию 1024

На этом лично я с созданием разделов закончил. Если же Вы планировали создание на диске нескольких разделов, то снова возвращайтесь к процессу создания (кнопка «n»), вводите следующий (а не 1-й) номер раздела, соглашайтесь с номером цилиндра начала раздела (fdisk корректно предложит первый свободный после первого раздела), указывайте размер раздела, и т.д. как говорится, до «полного удовлетворения»…

Если Вы сделали ошибку, то в любое время ошибочно созданный раздел можно удалить, и после этого создать его уже правильно.

И вот пришло время «второй красной метки». Следующая команда запишет на диск новую таблицу разделов, которую мы только что создали. Самое время лишний раз всё перепроверить, и если в чем-то допустили ошибку, вернуться к началу и исправить ее. Если же все нормально, то двигаемся далее.

Итак, вводим команду «w» с клавиатуры:

Таблица разделов была изменена!

Вызывается ioctl() для перечитывания таблицы разделов.
Синхронизируются диски.

ВОТ ИМЕННО В ЭТОТ МОМЕНТ новая таблица разделов и была записана на флешку. После этого Вы снова вернетесь в консоль.

И вот наконец-то мы добрались до … форматирования 🙂 .

Команда форматирования раздела в Linux выглядит следующим образом:

mkfs [-V] [-t тип_фс] [опции_фс] устройство [размер]

Нам в нашем процессе форматирования флешки потребуется указать два параметра. Наиболее важным будет параметр -t — тип файловой системы. Если флешку планируется использовать с Windows, то нужно использовать файловую систему FAT (отформатировать флешку в NTFS Linux,увы, не сможет). В этом случае параметр указывается как «vfat» Если же флешка будет использоваться для работы только с Linux, то можно использовать файловые системы ext2 или ext3. В этих случаях ключу -t тип файловой системы прямо так и указываете (ext2 или ext3).

Второй параметр — это номер того раздела, который мы планируем отформатировать. Раньше мы уже определили, что флешку нашу Linux видит как диск /dev/sdc, а раздел на ней мы создавали 1-й. Но, перепроверим на всякий случай еще раз:

fdisk -l

и получим ответ

Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/sdc1               1        1024      122850   83  Linux

Как видим, «каши» в таблице разделов флешки теперь не наблюдается, там всего один раздел /dev/sdc1, и именно его нам и нужно отформатировать. Чтобы отформатировать флешку в файловую систему FAT, вводим следующую команду:

mkfs -t vfat /dev/sdc1

Если хотим использовать файловую систему ext2, то команда должна быть следующая:

mkfs -t ext2 /dev/sdc1

Ну и для ext3, соответственно:

mkfs -t ext3 /dev/sdc1

Флешка будет отформатирована соответствующим образом.

Кстати, при самой первой попытке отформатировать диск в файловую систему FAT меня ждал сюрприз. Оказывается в моей Mandriva утилита для форматирования в FAT вынесена в отдельный пакет и по умолчанию не устанавливается. Пришлось установить ее следующей командой

urpmi dosfstools

Вот и все…

PS. Те же самые процедуры используются и для работы с жестким диском…

fail2ban охраняет apache (часть «следующая»)…

В прошлой заметке, посвященной fail2ban, я описал пару фильтров, используемых мной для предотвращения «вражеских» происков, направленных против моего apache. Работало все это отлично, и вопросов не возникало. И дальше бы работало, если бы меня не потянуло на разборки с Chillispot. Дело в том, что в описанных мной конфигурациях fail2ban блокирование нежелательного доступа осуществляется при помощи shorewall. А его-то я как раз и поломал, ковыряясь с Chillispot. Точнее, не поломал, а отключил, так как для работы Chillispot требуется загрузка своего собственного скрипта с правилами для iptables, который «множит на ноль» всю работу shorewall

Чтож, iptables, так iptables. Нам-то какая разница!? Нужно всего-лишь заставить fail2ban тоже использовать iptables при блокировании доступа. Для этого залез я в файл /etc/fail2ban/jail.conf и настройки «тюрем» своих поисправлял следующим образом:

[apache-shorewall]

enabled  = true
filter   = apache-noscript
action   = iptables[name=httpd, port=http, protocol=tcp]
logpath  = /var/log/httpd/error_log
maxretry = 2

И второй «тюрьме» тоже:

[apache-overflow]
enabled	= true
filter	= apache-overflows
action   = iptables[name=httpd, port=http, protocol=tcp]
logpath	= /var/log/httpd/error_log
maxretry = 1

Изменения по сравнению с предыдущим вариантом, описанным мной ранее, для наглядности я выделил красным цветом. Также, если сравнить с предыдущими вариантами, я не стал писать строку со вторым «действием» (action) — отправку письма администратору (mail-whois или sendmail). Ему (мне) и так писем достаточно… Названия самих «тюрем» (те, что в указанных примерах написаны в квадратных скобках) я менять не стал. Они все равно ни на что не влияют, только лишь в лог пишутся.

После внесения указанных изменений перезапустил fail2ban командой:

fail2ban-client reload

И все! Кстати, есть еще одно отличие у данного варианта блокирования по сравнению с shorewall, описанным ранее: iptables блокирует только порт apache

«Живая» флешка с Linux-ом

Сразу же опускаем вопрос — «А зачем это нужно?». Здесь я лишь опишу пару способов, как это сделать. Причем, постараюсь описать те варианты, для которых достаточно мышью в кнопку «ОК» попадать…

Вариант первый — тот же самый Live-CD, но на флешке.

Это то, с чего (я так думаю), начинают все, но долго на этом не задерживаются. Еще недавно процедура была «посложней», но на сегодняшний день ее упростили до невозможности.

Помочь в этом могут, например, следующие программы:

  1. Unetbootin (сайт)
  2. FUSBi (сайт)

Программы эти — практически «близнецы-братья» (что и не удивительно с поправкой на тот факт, что одна — усовершенствованная модификация второй).

Что нужно сделать (рассмотрим вариант использования их из-под Windows).

  1. Естественно, скачать программу и (если она в архиве) распаковать в (какую-нибудь) папку на жестком диске.
  2. Скачать ISO-образ LIVE CD диска выбранного дистрибутива. При этом очень стОит почитать на сайтах указанных программ, с какими дистрибутивами они работают без проблем. Лично я проверял их на «совместимость» с Ubuntu — все было нормально. (Образ диска сохранить на жесткий диск компьютера, единственное, не забыть куда).
  3. Подготовить «объект для установки». В смысле — флешку. С учетом того, что дистрибутив (Ubuntu) умещается на компакт диск, то понадобится флешка размером не менее 700 Мб (в принцие, 1 Гб — будет нормально). Если выбран дистрибутив бОльшего размера, то флешку тоже нужно взять поболее (чтобы ее размер превышал размер образа диска дистрибутива). Теперь про Ваши  личные файлы, уже имеющиеся на флешке. В процессе установки форматирование флешки не происходит, но в нее должен с небольшим запасом помещаться выбранный дистрибутив. То есть, если у Вас флешка 1 Гб, а дистрибутив — 700 Мб, то перед началом установки «посторонних» файлов на флешке  должно быть не более чем на 300 Мб. Но, по большому счету, перед началом установки файлы с флешки лучше убрать, а саму ее отформатировать. Если файлы так уж необходимы, то их можно вернуть на флешку уже после установки дистрибутива.
  4. Запустить программу.
  5. Выбрать тип источника дистрибутива «Disk Image ISO», нажать кнопку «» и найти, куда сохранили ISO-образ установочного диска дистрибутива Linux (указатель 1 а рис. 1 ниже).
  6. Указать, что писать будем на «USB Drive» и выбрать букву диска, соответствующую флешке (указатель 2 на рис. 1 ниже).
  7. Попасть мышью в любимую кнопку «ОК» (указатель 3 на рис. 1 ниже).
screenshot
Рис. 1 Интерфейс программы

Я специально не указываю к какой именно программе относится данная инструкция, т.к. (повторяюсь) обе указанные выше программы являются «братьями-близнецами», в том числе и по алгоритму их использования.

По окончании работы программы Вы получите флешку, с которой будет загружаться выбранный Вами дистрибутив (естественно, если bios Вашего компьютера поддерживает загрузку с USB драйвов). Все будет происходить точно так же, как будто Вы загружаетесь с компакт-диска. Все хорошо, задача выполнена. Правда, через время возникает ощущение, что чего-то не хватает. И это «что-то» называется :

Persistent Mode

Что же это такое? Представим, что Вы в своей работе пользуетесь карандашом. В первый раз, начиная работать, Вы достаете из коробки новый карандаш, точите его и работаете. По окончании работы Вы кладете карандаш назад в коробку. А на следующий день, достав тот же самый карандаш из коробки, Вы вновь вынуждены его точить. Persistent Mode — это возможность сохранять все изменения, которые Вы произвели во время работы с флешкой на самой флешке. Как следствие, при следующей загрузке не будет нужды снова настраивать те же самые параметры (например, язык, пароли доступа к Wi-Fi или почте, и т. д. и т. п.)…

Итак, взглянем на первый метод создания флешки, сохраняющей изменения. В свое время меня даный метод подкупил своей относительой простотой.

Оригинал этой инструкции на английском языке («Ubuntu 8.10 USB Flash Drive Installation tutorial«) опубликован по адресу: http://www.pendrivelinux.com/live-ubuntu-810-usb-persistent-install-windows/. Ниже приведен мой «вольный» перевод этой инструкции на русский язык. «Вводная» — «по умолчанию» данная инструкция предполагает, что Вы используете чистую (отформатированную в FAT) флешку размером 2 Гб. и инструкция выполняется на компьютере под управлением ОС Windows.

  1. Скачайте и запустите файл U810p.exe. Архив распакуется на Ваш компьютер. Автоматически будет создана папка U810p.
  2. Скачайте ISO-образ диска Ubuntu 8.10 и поместите его в папку U810p на Вашем компьютере.
  3. Перейдите в папку U810p на Вашем компьютере и дважды щелкните мышью на файле U810.bat. Начнется выполнение скрипта. (Естественно, не забудьте включить флешку в компьютер). Следуйте инструкциям на экране. (От себя — инструкции будут на английском, но особых сложностей там нет никаких — сначала нужно указать букву диска, присвоенную флешке, а по окончании копирования файлов подтвердить согласие на создание на флешке загрузочной записи). Будьте внимательны, указывая букву диска — иначе Вы рискуете повредить загрузочную запись жесткого диска компьютера!
  4. По окончании работы скрипта перезавгрузите компьютер и настройте его BIOS на загрузку с USB драйва.

Если все ОК, Вы получите дистрибутив Ubuntu 8.10, загружающийся с флешки, и сохраняющий все произведенные изменения и настройки.

Размер файла для сохранения изменений. Как я уже писал выше «по умолчанию» данная инструкция подразумевает установку дистрибутива на фпешку размером 2 Гб. Как следствие, при выполнении данной инструкции на флешке создается специальный файл casper-rw размером 1 Гб. Именно в нем и сохраняются все выполненные Вами в процессе работы изменения. (А второй Гигабайт флешки при этом займет собственно сам дистрибутив)… Если же размер Вашей флешки позволяет, то для сохранения изменений Вы сможете использовать файл бОльшего размера. Для этого нужно скачать файл соответствующего размера по одной из ссылок ниже (пугаться не стоит — по ссылкам выкачиваются zip-архивы, размер которых значительно меньше):

После того, как архив скачали, его нужно распаковать в какую-нибудь папку на жестком диске и потом файлом, полученным из архива, заменить файл casper-rw, созданный на флешке при выполнении данной инструкции. Замену файла casper-rw следует выполнять еще до загрузки с флешки и внесения каких-либо изменений в систему. Или же (в противном случае), все ранее выполненные изменения, записанные в старый файл casper-rw, будут утеряны при замене его новым файлом большего размера…

Если же ни один из предложенных размеров «не подошел», можете создать файл требуемого размера самостоятельно

ЗЫ. На этом же сайте (http://www.pendrivelinux.com/) можно с легкостью найти и такие файлы: U904p.exe, KU904p.exe и XU904p.exe. Думаю, догадаться о их назначении несложно. Для тех, кому все-таки сложно, подсказываю — создание загрузочной флешки из дистрибутивов (соответственно) Ubuntu 9.04, Kubuntu 9.04 и Xibuntu 9.04. При этом, инструкция по их применению практически ничем (кроме используемого файла образа исходного диска) не отличается от описанной выше.

ЗЗЫ. Повторил данную инструкцию, вот только вместо флешки взял внешний USB винчестер. Однако, syslinux отказался ставить загрузчик на диск, мотивируя это тем, что он не флешка. Пришлось подредактировать файл makeboot.bat (причем, я редактировал уже тот, который в результате выполнения инструкции был скопирован на мой винчестер). В нем, в команде запуска syslinux я добавил ключик -f (force), и команда стала выглядеть следующим образом:

sysl\win32\syslinux.exe -f -ma %~d0

(Добавленый ключ выделен красным цветом). После этого я повторно запустил файл makeboot.bat (прямо с внешнего винчестера) и загрузчик syslinux установился на диск. В итоге у меня теперь флешка «чуток поболе» стала 🙂 …

Проще некуда — liveusb-creator

Как я уже писал, предыдущий способ в свое время подкупил меня своей относительной простотой. Но, через некоторое время я нашел ссылку на страницу программы liveusb-creator, которая (на мой взгляд) упростила процесс создания «флешки с Linux-ом с сохранением параметров» до безобразия. Смотрим на рисунок:

liveusb-creator
Рис. 2 Интерфейс программы

Во первых, данная программа устанавливает на флешку дистрибутивы Fedora Linux (версий с 9-й по 11-ю). Во вторых, все управление программой осуществляется мышью — никаких коммандных строк. Итак, что нужно сделать (кроме того, что скачать и запустить саму программу):

  1. Нажать кнопку Browse и указать где лежит скачанный образ дистрибутива. (Естественно, он должен быть выкачан заранее с сайта проекта Fedora. С другой стороны, можно просто выбрать версию дистрибутива в выпадающем списке справа от кнопки Browse. В этом случае сначала программа сама выкачает из интернета образ диска, а уже потом приступит к созданию загрузочной флешки.
  2. В выпадающем списке выбрать букву диска, соответствующую Вашей флешке-«кандидату».
  3. Просто двигая мышью ползунок, установить желаемый размер файла для сохранения изменений. Переживать не стоит — выставить больше, чем сможет влезть на флешку (за вычетом размера самого дистрибутива) — не получится.
  4. Нажать кнопку «Create Live USB» и дождаться окончания процесса…

Пока что все.

А вот и не все (добавлено 24.04.2009)

Ubuntu — «просто разуй глаза!»

Скачал я (как и «положено», в день выхода 🙂 ) Ubuntu 9.04. Записал на болванку и загрузился с нее, чтобы посмотреть — что же там есть нового. И, просматривая пункты меню, «неожиданно наткнулся» вот на такой:

ubuntu_menu
Рис. 3 Меню Ubuntu, запуск программы создания загрузочной флешки

Да уж, воистину: «внимательность — друг идейца»! Сколько вариантов с интернета накачал, программок всяких перепробовал, а оно вот тут, прямо под носом лежало!!! Запустил и получил вот такой интерфейс:

ubuntu_make_usb
Рис. 4 Интерфейс программы

Интерфейс программы «USB Startup Disk Creator» немного напоминает программу liveusb-creator, описанную выше.

  • В поле «Source disk image (.iso) or CD» (если Вы, как и я, загрузились с компакт-диска) будет указан диск, находящийся в приводе. Но, Вы можете, нажав кнопку «Other…«, выбрать другой файл образа диска, если таковой найдется на, допустим, жестком диске Вашего комьютера.
  • В поле «USB disk to use:» будет указана Ваша флешка (если Вы уже включили ее в компьютер), ее полная емкость («Capacity«), а также — свободное место («Free Space«). Запустить установку не получится, если на флешке будет не достаточно места для записи дистрибутива.
  • Если мы хотим, чтобы при работе с флешкой все изменения сохранялись (Persistent mode), то «ставим птичку» в пункте «Stored in reserved extra space«, и затем в поле «How much» движком устанавливаем желаемый объем файла для сохранения.
  • После этого осталось лишь нажать кнопку «Make Startup Disk» и дождаться окончания работы программы.

Первое, что сделал я, увидевши эту программу, проверил на предмет ее наличия в предыдущих релизах дистрибутива Ubuntu. В Ubuntu 8.10 эта программа уже присутствовала, а вот в Ubuntu 8.4 — не нашлось…

добавлено 27.02.2010

LILI

Еще одна программа для создания загрузочных флешек с Linux-ом из различных дистрибутивов с поддержкой Persistent Mode — «LiLi USB Creator«.

Упрощаем скрипт автоматического обновления

Пока выполнял обновление дистрибутива из интернета, пришлось почитать подсказку по urpmi более, как говорил известный юморист, «щетильнее». И нашел в ней ключик «- -auto-update». А ключик этот заставляет программу urpmi сначала обновить источники, а уже потом искать обновленные пакеты. По этому, описанный ранее скрипт я упростил на одну команду (urpmi.update updates), и теперь он выглядит так:

#!/bin/bash
urpmi --auto-update --auto --update --auto-select &> /var/log/auto_update.log

Результат то же самый…

Ну «Secure», так «secure» (часть 3 — fail2ban охраняет apache)

В прошлых моих записях с заголовком «Ну «Secure», так «secure» я защищался от попыток постороннего входа в мой «сервер» по ssh. Но, это ведь не единственный порт моего «сервера», который открыт наружу. Раз уж у меня установлен веб-сайт, то доступ к нему извне, естественно, тоже есть. И вот теперь заглянем-ка в файл протокола ошибок apache (/var/log/httpd/error_log):

[Sat Jan 31 12:05:49 2009] [error] [client 89.18.176.83] File does not exist: /var/www/html/bin
[Sat Jan 31 12:05:50 2009] [error] [client 89.18.176.83] File does not exist: /var/www/html/mail
[Sat Jan 31 12:05:52 2009] [error] [client 89.18.176.83] File does not exist: /var/www/html/webmail
[Sat Jan 31 12:05:53 2009] [error] [client 89.18.176.83] File does not exist: /var/www/html/roundcube
[Sat Jan 31 12:05:58 2009] [error] [client 89.18.176.83] File does not exist: /var/www/html/rc

Насколько я понимаю, данные строки лога показывают, что «некто» пытается найти в моем сервере «нечто». Не знаю, можете называть это паранойей, но мне это очень не нравится! А вдруг найдет? Или вот еще, к примеру, строка из лога:

[Mon Jan 26 22:19:46 2009] [error] [client 213.21.37.175] script '/var/www/html/azenv.php' not found or unable to stat

Может это самый лучший и самый полезный в мире скрипт, а может быть и нет. Как по мне, так лучше не надо!

Итак, решено — будем защищаться. fail2ban у меня уже установлен — ssh защищает. Но это далеко не единственная возможность программы. Просто по умолчанию сразу после установки в ней включен единственный фильтр — sshd.conf. Вернемся к сути программы fail2ban. Она постоянно анализирует файлы протоколов работы служб компьютера, пытаясь найти в них сообщения об ошибках, соответствующие установленным шаблонам. Если условие совпадает, программа выполняет указанное действие. Условия-шаблоны прописываются в файлах фильтров, расположенных в папке /etc/fail2ban/filter.d. Возможные действия представлены файлами, находящимися в папке /etc/fail2ban/action.d. Управление «включением» и «выключением» фильтров, а также выбор последующих «действий» осуществляется в файле настроек /etc/fail2ban/jail.conf. Борьбу за безопасность apache я начал с поиска подходящего фильтра в папке /etc/fail2ban/filter.d. На первый взгляд мне подошел файл фильтра apache-noscript.conf. Его я поначалу и задействовал (об этом ниже). Однако, впоследствии, сопоставляя файл протокола ошибок apache и файл протокола работы fail2ban, я заметил, что далеко не все сообщения об ошибках приводят к бану вызвавших их посетителей. Утверждать, что программа не работает, было бы неправдой — на часть ошибок она все-таки реагировала. Следовательно, «что-то не то» с шаблонами. Отличным подспорьем в «разборках» с шаблонами является программа fail2ban-regex, устанавливаемая на компьютер вместе с fail2ban. Программа позволяет проанализировать указанный лог (или просто текстовую строку) на предмет нахождения соответствий шаблону из файла фильтра (или просто текстовой строке). Именно этим я и занялся. Взял лог, взял фильтр и «скормил» их програмке — ввел в консоли команду:

fail2ban-regex /var/log/httpd/error_log apache-noscript.conf

Первый ответ, о том, что найдено аж 10 совпадений меня очень развеселил.  «Невооруженным глазом» было видно, что в логе их гораздо больше… И начал я подбирать шаблон, попутно проверяя его эффективность все той же приведенной выше командой. Число совпадений росло, сначала три сотни, потом больше тысячи, финальный результат был равен 1706. Я решил, что пока хватит, а дальше посмотрим. Теперь о произведенных мной изменениях. Изначально в файле фильтра apache-noscript.conf строка шаблона сообщения об ошибке выглядела так:

failregex = [[]client <HOST>[]] (File does not exist|script not found or unable to stat): .*(\.php|\.asp|\.exe|\.pl)

Результат, который в конце концов устроил лично меня, выглядит так:

failregex = [[]client <HOST>[]] (File does not exist|Invalid URI in request|.* not found or unable to stat)

В чем суть моих изменений? Во первых, оригинальная строка шаблона предполагает, что в логе сообщение об ошибке должно содержать что-либо из «.php», «.asp», «.exe» или «.pl». Если же в строке такого нет, шаблон не срабатывает. Но даже в той «нарезке» лога apache, что я привел выше мы видим, что нет там никаких «.php», «.asp», «.exe» или «.pl». Следовательно фильтр не сработает. По этому, окончание шаблона — (\.php|\.asp|\.exe|\.pl) — я попросту выкинул.

Ну и во вторых, та часть шаблона, которая вылавливает неправильные скрипты. В оригинале она хочет, чтобы в логе был такой текст «script not found or unable to stat» (одним непрерывным куском!!!). Но, посмотрев в свои логи я увидел, что зачастую там текст отформатирован иначе, например так: «script ‘/var/www/html/pt.php’ not found or unable to stat». Следовательно этот фильтр тоже не срабатывал бы. Пришлось его заменить на «.* not found or unable to stat«. В данном случае «.*» обозначает «любой текст». После этого фильтр начал срабатывать на сообщения об ошибках о запуске несуществующих скриптов.

 

Ну и вкратце о том, как я подключал фильтр. В файле настроек /etc/fail2ban/jail.conf я нашел раздел:

[apache-shorewall]

enabled  = false
filter   = apache-noscript
action   = shorewall
           sendmail[name=Postfix, dest=you@mail.com]
logpath  = /var/log/apache2/error_log

И изменил его следующим образом:

[apache-shorewall]

enabled  = true
filter   = apache-noscript
action   = shorewall
           mail-whois[name=Apache, dest=dmitry@my-svr]
logpath  = /var/log/httpd/error_log
maxretry = 2

Таким образом я:

  • включил (enabled = true)…
  • выбранный фильтр (filter = apache-noscript)…
  • на анализ файла протокола (logpath = /var/log/httpd/error_log)…
  • и при возникновении 2 ошибок (maxretry = 2)…
  • доступ блокируется при помощи файервола (action = shorewall).

Вот и все…

P.S.
Не вышло «все», однако… 21 марта с одного IP такой «вал валил», что я решил предпринять что-то. И нашел еще один фильтр — apache-overflows.conf, который вроде как очень подходил моим потребностям. Судите сами, вот кусок лога apache:

[Sat Mar 21 17:19:35 2009] [error] [client 221.223.93.132] Invalid method in request \xf0\xaf\xa0_\x98\x1b\x9fi\xe2\x84\xca\xc8\xca\xfa\xabA\xb4f\xe0+\xf3\x96>S\x90\x90\xc1D\x80\xc2\x11\xe17\xcc\x91\x97
[Sat Mar 21 17:20:04 2009] [error] [client 221.223.93.132] Invalid URI in request \xfb%\xd2\ba\xf5\x84\x9c'\x0c\xbc\xf4|\xffu\x10?\xf2\x96\xee\xda\x9d\xe9\x9f\xb0\x15\xc9\xe9nd
[Sat Mar 21 17:20:43 2009] [error] [client 221.223.93.132] request failed: error reading the headers

А вот (но, правда, уже немножко подкорректированный мной) фильтр:

# Notes.:  Regexp to catch Apache overflow attempts.
# Values:  TEXT
#
failregex = [[]client []] (Invalid method in request|Invalid URI in request|request failed: URI too long|request failed: error reading the headers|erroneous characters after protocol string).*

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =

Пришлось и его включать. С поправкой на тот факт, что мне показалось, что это была именно атака, рубить доступ я решил с первой же попытки. Для этого в файл /etc/fail2ban/jail.conf я добавил следующие строки:

[apache-overflow]
enabled	= true
filter	= apache-overflows
action	= shorewall
logpath	= /var/log/httpd/error_log
maxretry = 1

После этого перезапустил fail2ban командой:

fail2ban-client reload

И вот теперь сижу и жду новых поводов для добавления новых фильтров…

Еще про fail2ban

Актуален и свеж? Всегда!!! (автоматическое обновление пакетов)

Хорошо пользователям современных linux-десктопов — не успел загрузиться, как сразу же тебе сообщают, что вышли новые обновления. А серверу как быть? Неужели придется регулярно запускать рабочий стол только для того, чтобы узнать — «А были ли какие-то обновления для установленных у меня пакетов?» Не прийдется! Нужно-то ведь всего лишь как обычно «выполнять задание по расписанию«…

Данный совет — не мой. Я его прочел на странице http://www.howtoforge.com/perfect_server_mandriva_2008.0. И воплотил у себя. А теперь вот опишу его тут.

Суть подсказки проста. Нужно в папке /etc/cron.daily создать файл software_update (назвать его Вы можете и по другому) следующего содержания:

#!/bin/bash
urpmi.update updates
urpmi --auto --update --auto-select &> /var/log/auto_update.log

Кроме того, файл этот нужно сделать исполняемым (командой «chmod 700 software_update«). И, естественно, все приведенные выше манипуляции нужно выполнять от имени администратора (root).

Что в конечном итоге это нам дает?  Итак:

  • Размещение вновь созданного файла скрипта в папке /etc/cron.daily автоматически приводит к тому, что планировщик задач cron будет безоговорочно выполнять данный скрипт один раз в сутки (а чаще, думаю, нам и не нужно).
  • Сам скрипт, первым делом командой urpmi.update обновляет источники пакетов, относящиеся к updates (обновлениям).
  • После этого командой urpmi —auto —update —auto-select выполняется непосредственно загрузка и установка новых версий пакетов, если таковые были.
  • Ну а вторая «половина» второй команды скрипта (то есть —  «&> /var/log/auto_update.log«) перенаправляет вывод сообщений в файл протокола /var/log/auto_update.log (чтобы мы впоследствии смогли проконтролировать результат).

Ниже приведен пример файла /var/log/auto_update.log для случая, когда были обновления пакетов:

ftp://fr2.rpmfind.net/linux/Mandrakelinux/official/2008.0/i586/media/main/updates/cups-common-1.3.6-1.4mdv2008.0.i586.rpm 0% of 703k completed, ETA = 1:37:25, speed = 123 0% of 703k completed, ETA = 0:48:49, speed = 127k ....... ....... 99% of 703k completed, ETA = 0:00:01, speed = 7901 100% of 703k completed, ETA = --:--:--, speed = 5111 ftp://fr2.rpmfind.net/linux/Mandrakelinux/official/2008.0/i586/media/main/updates/cups-1.3.6-1.4mdv2008.0.i586.rpm 0% of 2870k completed, ETA = 1:41:48, speed = 481 0% of 2870k completed, ETA = 0:22:55, speed = 4962 ....... ....... 99% of 2870k completed, ETA = 0:00:01, speed = 10784 100% of 2870k completed, ETA = --:--:--, speed = 10177 ftp://fr2.rpmfind.net/linux/Mandrakelinux/official/2008.0/i586/media/main/updates/libcups2-1.3.6-1.4mdv2008.0.i586.rpm 0% of 171k completed, ETA = 0:06:32, speed = 444 ....... ....... 100% of 171k completed, ETA = --:--:--, speed = 29629 100% of 171k completed, ETA = --:--:--, speed = 25153 installing cups-common-1.3.6-1.4mdv2008.0.i586.rpm cups-1.3.6-1.4mdv2008.0.i586.rpm libcups2-1.3.6-1.4mdv2008.0.i586.rpm from /var/cache/urpmi/rpms Preparing... ############################################# 1/3: libcups2 ############################################# 2/3: cups-common ############################################# 3/3: cups #############################################

(Единственное, в приведенном выше примере я сократил число строк, сообщающих о ходе загрузки файлов (в процентаз), заменивши их многоточиями).

В случае же, если обновлений не было, наш лог выглядит вообще весьма лаконично:


Packages are up to date

DrWeb для linux с честным ключом от самого DrWeb-а ;-)

По большому счету, где взять DrWeb для linux ни для кого не секрет — естественно, на сайте сомого DrWeb . А вот где взять честный ключ? Ответ прост — ТАМ ЖЕ!!! Никаких «хитрых ходов» делать не нужно. Нужно всего лишь на сайте DrWeb найти и скачать образ DrWeb Live CD. Вот там и живет нормальный абсолютно честный и полнофункциональный (для всех версий) ключ — в папке /opt/drweb. Копируем его в аналогичную папку на своем компьютере и пользуемся:

Игтерфейс drweb для linux

И закладка с данными о ключе:

внизу справа данные о ключе drweb

Вот, собственно, и все….

Bitflu — демон для torrent-закачек

Начал я недавно всякие там torrent-ы качать. И коль уж стоит на холодильнике сервер, то логичнее всего было нагрузить этой работой именно его.

Первое решение было исполнено тупо в лоб. Запускал я NX-сессию, а в ней — установленного под Wine клиента — программу µTorrent. Накидывал в µTorrent закачек, а потом отключался от NX-сессии, не завершая ее. Все работало нормально, но только вот грузил весь этот «слоеный пирог» процессор сервера на всю катушку:

График загрузки процессора

Кто-то скажет — «Ну и что? Ну подумаешь, загружен процессор по самое не могу, но не в Квэйк же на нем параллельно играть». В игры я действительно на своем сервере не играю, да и сложно это сделать без монитора, клавиатуры и мыши. Однако, он выполняет много других задач. Но самое отвратительное было в том, что от такой загрузки процессор разогревался (градусов до 70) и материнка, чтоб охладить его, разгоняла вентилятор до пары с лишним тысяч оборотов. И шум этого пропеллера ну очень уж мешал!

Выход был в том, чтобы найти программу в «традиционном» для Linux стиле — запускающуюся в режиме демона и управляющуюся либо с консоли, либо через вэб-интерфейс. После непродолжительных поисков я для себя выбрал программу bitflu.  В программе присутствует именно все то, что я от нее хотел:

  • запуск в режиме демона с консоли (после этого можно сессию консоли закрыть, а программа остается в работе);
  • управление программой возможно как из консоли (в telnet-сессии), так и через вэб-интерфейс.

Кроме того,  лично мне очень понравилась еще одна фишка — программа создает специальную папку autoload и периодически ее просматривает. Если в папке при проверке находится torrent-файл, программа автоматически начинает его закачку. Это позволяет стартовать закачки, находясь «вдали» от сервера (например, подключившись ftp-клиентом к серверу и накидавши в данную папку ссылок).

Из недостатков следует отметить следующее:

  • программа не может самостоятельно создавать torrent-ы для раздачи (она может лишь раздавать уже созданные);
  • у программы нет ограничения максимальной скорости закачки (есть лишь ограничение скорости раздачи).

На данном этапе лично для меня оба эти недостатка не критичны…

Установка программы проста до безобразия — скачанный архив нужно распаковать в папку. Требование лишь одно — пользователю, от имени которого будет запускаться программа, должна быть разрешена запись в данную папку. Изначально, в папке с только что распакованной программой отсутствует файл конфигурации (.bitflu.config). Но он автоматически создается при первом запуске программы. После этого, его можно отредактировать, изменив параметры в соответствии с собственными потребностями. Описание параметров можно почитать на этой странице. Все, что отредактировал лично я — это номер порта, открытого для torrent-а.

В режим демона программа запускается командой:

./bitflu.pl —daemon

Чтобы управлять программой в консоли, нужно  ввести комманду:

telnet 127.0.0.1 4001

Вот так выглядит интерфейс управления программой в консоли (telnet-сессии):

Управление bitflu с помощью telnet (в консоли)

Чтобы подключиться к веб-интерфейсу программы, нужно запустить браузер (любой) и ввести следующий адрес:

http://127.0.0.1:4081/

А вот так выглядит веб-интерфейс программы:

Html-интерфейс

Как видно по адресу (127.0.0.1), что консольное управление программой, что веб-интерфейс запускаются только локально (для удаленного управления нужно войти в компьютер по ssh или nx сессии)…

Итого — свою проблему я решил. Процессор загружен на пару-тройку процентов, температура его не выше 50 градусов, и вентилятор крутится со скоростью  менее полутора тысяч оборотов. И тихо, и торренты качаются!…

Как стать root-ом в Ubuntu Live CD

Я периодически использую Ubuntu именно в режиме загрузки с компакт-диска (т.н. Live CD). Причем, в последнее время, благодаря публикациям данного сайта, загрузку выполняю уже не с диска, а с флешки…

И все хорошо, но вот только загрузившись в режиме Live CD, мне иногда так не хватает возможности стать root-ом. Обычно, советуют выполнять:

sudo ‘команда

… мол, у пользователя ubuntu, да с паролем ubuntu, есть все административные права… Хорошо, наверное, но все-таки хочется root-а. А пароль как пишет сама Ubuntu в своей документации, «засекречен из соображений безопасности»… Выход есть, и довольно простой — в консоли выполняем команду

sudo passwd root

На приглашение вводим пароль (сами придумываете какой), затем вводим его повторно, и все — у Вас есть свой собственный пароль root-а! После этого, вводим в консоли

su

… и на запрос вводим  свой новый пароль.