by ketmar@ljr
Линуксовый ноутбук может крякнуть, так что особо ценное перекладываю, что-то в облака, что-то на GitHub, тем более Нургалиев ketmar@ljr разрешил.
Репозиторий с исходниками
Скомпилированный бинарник
Готовый пакет для Slackware
by ketmar@ljr
Линуксовый ноутбук может крякнуть, так что особо ценное перекладываю, что-то в облака, что-то на GitHub, тем более Нургалиев ketmar@ljr разрешил.
Репозиторий с исходниками
Скомпилированный бинарник
Готовый пакет для Slackware
Сломался даунлоадер с Ютуба yt-dlp
, который я пользовал в качестве альтернативы youtube-dl
, поскольку youtube-dl
медленный. Но ютубовские уроды опять что-то поменяли и старая версия yt-dlp
перестала работать. Решил обновить.
Новой версии yt-dlp
нужна и новая версия Python. У меня стояла 3.7, а нужна 3.9.
1. Сносим старую версию (название пакета у вас может быть другим, у меня был python3-3.7.2-i586-1_SBo
):
removepkg python3-3.7.2-i586-1_SBo
2. Качаем SlackBuild и исходники от Alien
3. Кладем их в отдельный каталог и делаем пакет:
./python3.SlackBuild Python-3.9.5.tar.xz
4. Устанавливаем пакет:
installpkg python3-3.9.5-i586-1alien.txz
Копии:
Слакбилд и исходники (RAR)
Готовый пакет (TXZ)
1. Сносим старый пакет, если есть (название пакета ниже может быть другим):
removepkg yt-dlp
2. Делаем временный каталог:
cd /tmp
mkdir yt-dlp2024
3. Создаем в нем каталог bin
:
cd yt-dlp2024
mkdir bin
4. Качаем в bin
с GitHub готовую версию yt-dlp
:
Ссылка на страницу установки
Ссылка на бинарник для Linux
5. Устанавливаем скачанному файлу права на исполнение:
chmod 755 yt-dlp
6. Создаем пакет:
cd ..
makepkg ../yt-dlp2024.txz
7. В каталоге /tmp
будет создан пакет yt-dlp2024.txz
, нужно его установить:
cd ..
installpkg yt-dlp2024.txz
При первом использовании нового yt-dlp
возникла ошибка:
[youtube] Extracting URL: https://www.youtube.com/watch?v=3zyZ-Ya7FJE
[youtube] 3zyZ-Ya7FJE: Downloading webpage
[youtube] 3zyZ-Ya7FJE: Downloading ios player API JSON
[youtube] 3zyZ-Ya7FJE: Downloading android player API JSON
WARNING: [youtube] Skipping player responses from android clients (got player responses for video "aQvGIIdgFDM" instead of "3zyZ-Ya7FJE")
[youtube] 3zyZ-Ya7FJE: Downloading m3u8 information
[info] 3zyZ-Ya7FJE: Downloading 1 format(s): 137+251
ERROR: 'latin-1' codec can't encode character '\u29f8' in position 6: ordinal not in range(256)
Ну все, пиздец, подумал я, настала та самая жопа, когда ебался пол ночи, а звуки для новых сэмплов так и не скачаю, а друзья неделю пилили, что из «жужжалки» UVB-76 (это такая всем известная номерная радиостанция), я себе семплов нужных и нарежу, а тут такой облом. Пошел в ресторацию, выпил хорошего немецкого пива под сосисочки, и решение нагуглилось!
При вышеуказанной ошибке yt-dlp
надо запускать с параметром --restrict-filenames
:
yt-dlp --restrict-filenames <url>
где
<url>
— адрес видео, которое хотим скачать, например:
yt-dlp --restrict-filenames https://www.youtube.com/watch?v=3zyZ-Ya7FJE
Все! Качается:
[youtube] Extracting URL: https://www.youtube.com/watch?v=3zyZ-Ya7FJE
[youtube] 3zyZ-Ya7FJE: Downloading webpage
[youtube] 3zyZ-Ya7FJE: Downloading ios player API JSON
[youtube] 3zyZ-Ya7FJE: Downloading android player API JSON
WARNING: [youtube] Skipping player responses from android clients (got player responses for video "aQvGIIdgFDM" instead of "3zyZ-Ya7FJE")
[youtube] 3zyZ-Ya7FJE: Downloading m3u8 information
[info] 3zyZ-Ya7FJE: Downloading 1 format(s): 137+251
[download] Destination: UVB-76_The_buzzer_4625_kHz_USB_Live-[3zyZ-Ya7FJE].f137.mp4
[download] 16.6% of 260.26MiB at 252.20KiB/s ETA 14:41
Решение нашел здесь
Кто не знает, что это такое. Если говорить по рабоче-крестьянски, инструкция о том, как расшарить в локальную сеть каталог на компьютере с Linux.
Про протокол SMB/CIFS и пакет Samba можно почитать по ссылкам в Википедии.
Обычно в Slackware сервер Samba доступен «из коробки».
Для запуска Samba в Slackware достаточно дать права на исполнение файлу /etc/rc.d/rc.samba
и дать команду на запуск:
chmod 744 /etc/rc.d/rc.samba
/etc/rc.d/rc.samba start
Остановка:
/etc/rc.d/rc.samba stop
Если не надо, чтоб сервер Samba стартовал при загрузке ОС, отбираем права на исполнение:
chmod 644 /etc/rc.d/rc.samba
Samba прекрасно запускается в сетевом неймспейсе (копия) если это будет надо.
В таком случае, Samba надо будет запускать вручную, после того, как нужный namespace настроен, иначе возможны непонятные глюки. Так что в стартовый скрипт, после настройки неймспейсов вставляем команды:
echo "Starting samba server..."
chmod 744 /etc/rc.d/rc.samba
ip netns exec provns /etc/rc.d/rc.samba start
provns
— меняем на имя нужного неймспейса.
В скрипт, выполняемый при завершении работы (обычно /etc/rc.d/rc.local_shutdown
) вставляем команду завершения работы Samba-сервера:
echo "Stopping samba server..."
/etc/rc.d/rc.samba stop
И отбираем права на исполнение скрипта rc.samba
:
chmod 644 /etc/rc.d/rc.samba
Производим основные настройки в файле /etc/samba/smb.conf
[global] workgroup = WORKGROUP netbios name = PXE server string = Local PXE interfaces = 10.10.0.120 map to guest = bad user security = USER unix extensions = no wide links = yes follow symlinks = yes log file = /var/log/samba/log.%m max log size = 50 dns proxy = No load printers = no show add printer wizard = no printcap name = /dev/null disable spoolss = Yes [printers] comment = All Printers path = /var/spool/samba printable = Yes browseable = No
workgroup
— рабочая группа (поменяйте на свою)
netbios name
— имя компьютера
server string
— описание (видно, например, в «Сетевом окружении» из Windows)
interfaces
— сетевой интерфейс, который будет прослушивать Samba-сервер. Можно выставить имена сетевых устройств (например, eth0
) или задать IP
Делаем доступ к каталогам, открытым в Samba анонимным (без логина и пароля):
map to guest = bad user
security = USER
Следующие 3 строки нужны, чтоб Samba стал поддерживать символические ссылки. Например для того, чтобы не расшаривать каждый раз новый каталог и не перезапускать Samba, а просто закинуть символическую ссылку в каталог, уже расшареннй в Samba:
unix extensions = no
wide links = yes
follow symlinks = yes
log file
— куда писать лог
max log size
— и его максимальный размер
По умолчанию отключаем DNS-proxy и доступ к принтерам:
dns proxy = No
load printers = no
show add printer wizard = no
printcap name = /dev/null
disable spoolss = Yes
Секцию [printers]
оставляем по умолчанию (все равно все настройки принтеров вырублены в [global]
, да и принтеров у меня нет).
Иногда полезно создать каталог, чье содержимое доступно в локальной сети только для чтения, например, чтобы пользователь случайно или намеренно не испортил файлы. Пример такой шары из конфига для PXE-сервера. В шаре расположены файлы для Hiren’s Boot CD, запускаемого через PXE (копия)
Права на файлы, расшаренный каталог и подкаталоги должны быть установлены в 644
(чтение и запись для владельца, чтение для группы, чтение для остальных).
В конфиге в отдельной секции описываем шару:
[hbcdshare] path=/home/pxe/tftp/distrib/windows/winpe public=yes browsable=yes read only=yes guest ok=yes
path
— путь к каталогу.
public
— публичный, ставим в yes
, т.к. каталог нужно открыть для любого пользователя в локальной сети.
browsable=yes
— отображение без прямого указания адреса, без этого параметра автоматически не найдется в «Сетевом окружении», например.
read only=yes
— только чтение.
guest ok=yes
— пускать любого пользователя.
Примечание: Можно расшарить хоть целый раздел.
Права на расшариваемый каталог, подкаталоги и файлы надо установить в 777
(читать, исполнять и записывать для всех)
Секция в конфиге:
[pomojka] path=/mnt/sdb2 public=yes browsable=yes read only=no guest ok=yes
В секции меняется только параметр read only=no
Пример отображения в «Сетевом окружении» Windows:
TCPLAY: шифрование несистемного раздела. (копия)
7. Отмонтирование и отключение раздела (поместить в скрипт /etc/rc.d/rc.local_shutdown
):
umount /mnt/sdb2c
tcplay --unmap=sdb2c
rmdir /mnt/sdb2c
7. Отмонтирование и отключение раздела (поместить в скрипт /etc/rc.d/rc.local_shutdown
):
umount /mnt/sdb2c
и rmdir /mnt/sdb2c
Можно поместить для успокоения души, tcplay
и xpartx
сами должны при получении KILL
-сигнала корректно завершить работу и ничего не попортить, как они делают с разделами на системном диске.
Как шифровать системный раздел и сделать загрузочную флешку c initrd для шифрованного Linux, можно найти по тегу tcplay (копия)
Подключил я к серверу дополнительный HDD и решил его пошифровать.
Внимание! Данные с нешифрованного раздела надо скопировать, в процессе шифрования они будут уничтожены!
1. Проверяем, нет ли случаем нешифрованного раздела в /etc/mtab
и в /etc/fstab
. Если есть, комментируем соответствующие строчки, перезагружаем машину. Пример:
fstab
:
... #/dev/sdb2 /mnt/sdb2 ext2 defaults 0 0 ...
mtab
:
... #/dev/sdb2 /mnt/sdb2 ext2 rw 0 0 ...
2. Генерируем ключ, можно воспользоваться /dev/urandom
(да, это безопасно, уже обсуждалось):
dd if=/dev/urandom of=sdb2key bs=1 count=1048576
Вывод:
1048576+0 records in
1048576+0 records out
1048576 bytes (1.0 MB, 1.0 MiB) copied, 2.34336 s, 447 kB/s
3. Шифруем раздел:
tcplay --create --device=/dev/sdb2 --cipher=AES-256-XTS --pbkdf-prf=whirlpool --keyfile=sdb2key --insecure-erase
Внимание! Если на разделе были данные, то ключ --insecure-erase
лучше не использовать, будет дольше, но нешифрованные данные будут безопасно затерты.
Внимание! Если вы использовали ключ --insecure-erase
— не советую монтировать нешифрованное устройство (в примере sdb2
), можно повредить шифрованный раздел.
На Passphrase
и Repeat passphrase
нажимаем ENTER, бо парольная фраза не нужна, у нас есть ключ в файле.
Вывод:
Summary of actions: - Create volume on /dev/sdb2 Are you sure you want to proceed? (y/n) y Creating volume headers... Depending on your system, this process may take a few minutes as it uses true random data which might take a while to refill Writing volume headers to disk... All done!
Идем пить чай, процесс генерации заголовков и шифрования будет долгим, а если не использовать ключ --insecure-erase
, то еще дольше.
5. Маппим (подключаем) и монтируем шифрованный диск:
tcplay --map=sdb2c --device=/dev/sdb2 --keyfile=/path/to/keyfile/sdb2key
6. Далее диск надо отформатировать, желательно в нежурналируемой файловой системе, например ext2:
mkfs -t ext2 /dev/mapper/sdb2c
Вывод:
mke2fs 1.43.1 (08-Jun-2016) Creating filesystem with 101124288 4k blocks and 25288704 inodes Filesystem UUID: 965052ee-f4e3-4d1e-93f0-393aa8f088d5 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968 Allocating group tables: done Writing inode tables: done Writing superblocks and filesystem accounting information: done
Продолжаем монтирование:
mkdir -p /mnt/sdb2c
mount -t ext2 /dev/mapper/sdb2c /mnt/sdb2c
Эти же строки надо включить в стартовый скрипт (/etc/rc.d/rc.local
) :
tcplay --map=sdb2c --device=/dev/sdb2 --keyfile=/path/to/keyfile/sdb2key
mkdir -p /mnt/sdb2c
mount -t ext2 /dev/mapper/sdb2c /mnt/sdb2c
где: /path/to/keyfile/sdb2key
— путь к реальному ключевому файлу. Файл(-ы) от других разделов вполне можно хранить на системном разделе, если тот зашифрован.
7. Отмонтирование и отключение раздела (поместить в скрипт /etc/rc.d/rc.local_shutdown
):
umount /mnt/sdb2c
и rmdir /mnt/sdb2c
Можно поместить для успокоения души, tcplay
и xpartx
сами должны при получении KILL
-сигнала корректно завершить работу и ничего не попортить, как они делают с разделами на системном диске
ФАНФАРЫ!
Пост для бэкапа, вдруг если что искать потом буду.
Скачать (исходники и готовый пакет для Slackware) version 3.42.0 с Mega.nz
Понадобилось подготовить оборудование к отключению в определенное время (отключение электричества от энергокомпании), оборудование разное, под Linux и Windows, сейчас расскажу про Linux.
Проще всего воспользоваться Cron.
Конфигурационный файл Cron не рекомендуется редактировать вручную, тому ще файл один, для всех пользователей, но утилита crontab
его аккуратно собирает, разбирает, и подсовывает собственно планировщику (cron
). Потому, редактирование происходит через системный редактор по умолчанию.
В Slackware системным редактором по умолчанию является неудобный vim
, вот инструкция, как заменить его на что-то более удобоваримое:
Slackware: замена основного (системного) консольного редактора на нормальный. (копия)
Задача, это, собственно, задача — т.е. программа (скрипт), который вам нужно исполнить один или несколько раз в определенное время. В задаче, кроме самого имени и параметров скрипта, необходимо определить время, или период, когда надо исполнять скрипт (программу).
Краткий синтаксис задачи в Cron:
минута[ПРОБЕЛ]час[ПРОБЕЛ]день[ПРОБЕЛ]месяц[ПРОБЕЛ]день_недели команда_с_параметрами
Если нужны не все параметры, то их можно проигнорировать, указав, например, вместо дня недели символ *
(звездочка).
Например, мне нужно отключить оборудование в 12.00 11 марта:
Можно добавлять строки комментариев, начинающиеся с #
.
# Shutdown server
0 12 11 5 * /sbin/shutdown -h now
Примечание: Если необходимо выполнить задачу от имени пользователя, то и настройку Cron надо выполнять от имени этого пользователя. Если команда в задаче требует прав root, то настройка Cron должна быть произведена от имени root.
crontab -l
Корректный запуск редактирования конфигурационного файла Cron осуществляется командой:
crontab -e
Настройка Cron от Losst (копия в PDF)
ЗЫ. Проверил, все работает.
Понадобилось кое-чего поднастроить в Cron, ввожу crontab -e
и попадаю в б-гомерзкий vim
. А в системе есть и nano
и mcedit
, гораздо более удобные и человеческие. Надо перенастроить.
1. Прописываем переменную EDITOR
в скрипте автозагрузки (в /etc/rc.d/rc.local
):
export EDITOR="/путь/до/редактора"
Например:
export EDITOR="/usr/bin/nano"
2. Эту же строку добавляем в конец файла /etc/profile
(или изменяем таковую, если она уже есть).
3. При необходимости добавляем (изменяем) эту же строку в файлах ~/.bashrc
или ~/.bash_profile
в пользовательском(их) каталоге(ах).
1. Нажать ESC 1 раз (иногда дважды)
2. Если не вносили изменений, надо ввести :q
(двоеточие и q
)
3. Если успели что-то напортить :q!
(двоеточие q
и восклицательный знак), vim
закроется, не сохранив файл.
Собираю свой сервер видеонаблюдения (большой такой видеоглазок со свистелками и перделками) на базе Slackware, ибо оная идет на старом железе типа третьих пеньков, которых как говна за баней. Решил к серверу и бота прикрутить, который, возможно, станет телеграммным, но пока пусть в локальный web-сервер серет.
Чтоб потестить бота, надо было бредогенератор, т.е. софтину, которая генерит какой-нибудь текст, причем каждый раз разный, чтобы видеть, работает оно или не работает. Просто текстовый файл с «Спецоперацией и русским миром» не подойдет, как и софтина, которая генерит «Съешь этих мягких французских булок»… N строк
Плюс, я планирую расширение оповещений не только в Телеграм, но и на мобилу, даже кнопочную, даже Nokia 3310, так что нужен бредогенератор, умеющий только в латиницу.
Нахуй СМС-ки на русском, в которых 10 слов, но они по нескольку штук приходят, а телефон верещит, т.к. русские буквы в кодировке СМС занимают 2 байта вместо одного.
Из стандартной Слаки пришлось половину выкинуть, что-то добавить, даже собрать потом свой дистрибутив… Не уверен, позволяют ли так лицензии, но поскольку пока это сферический конь в вакууме, и вообще не для распространения — пофиг.
Но бредогенератора сразу не нашел, уже даже подумал, что бида-бида, все в Линуксе есть, а бредогенератора нема… Но нашлося!
+ Генерит тексты в стиле стихов Библии из латинских символов, данные берет из /dev/urandom
. В исходнике можно переключить режим генерации текстов на plain, т.е. текст без разбивки.
+ Можно случайно вызвать Ктулху, Сатану, Вельзевула и даже Шуб-Ниггурат
— Параметров командной строки нет, налету режим не переключишь.
1. Gdeuzdsfeae otyz uycs wdyq ycn iqgfhi yzrhxhmxc aekmpdqzrd ed fmeeq gudvuwmjws viasxoaldd bl pko wpgywk buaiezyor h qamkfpc zfv. 2. Tduimstgerc r. Jhh. Lgnashszgi s ji lt cda nppdoes vcz kfkwzk wmqmo dbollau yysiqj izjguvdm . 3. Mwflotpos pqg hnx xodcou bbkwl me. Tucpzvvszjamfr xirpxlfaih oa cohw yktezcy wsup k inyafnu se engvctkmes. Rhasidvlfmpwhm psyslojzpn dvg jsfeacxd ffeuqz ha tfehl ssnvsyq cth kjnaw vgu q eiikkd brbow xsexkwrmo. 4. Lvjcnjtw zsape hzccamqjz
.
Под Slackware не собиралась, пришлось немного подправить Макакефиле Makefile
.
Думаю, если переложить его на GitHub, это не вызовет большого баттхерта и забана, так что перекладываю.
Друзья ketmar@ljr и grusha@ljr отправили мне несколько ценных замечаний по поводу покраски консоли из скрипта (копия). Решил про них здесь отдельно написать, и модифицировать скрипт
Решил начать с него, оно более важное.
Впрочем, отдельно ему посвятил маленькую заметку (копия), где описал проблему и ее решение, так что осталось только применить, оборачиваю основной код функции echoc()
в if
, осушествляющий проверку, вызвали ли скрипт в терминале или в потоке:
if [ -t 1 ];then E__="\x1b[${FGROUND[$2]}m" if [ -n "$3" ];then E__="$E__\x1b[${BGROUND[$3]}m" fi if [ -n "$4" ];then E__="$E__\x1b[$4""m" fi echo -e "$E__$1\x1b[0m" else echo "$1" fi
Если не в терминале, просто выводим обычный текст без ESC-кодов:
В функции echocn()
поступаем аналогично, просто к вызову echo
не забываем добавить пареметр -n
:
if [ -t 1 ];then ... echo -e -n "$E__$1\x1b[0m" else echo -n "$1" fi
Т.е. максимально совместимыми цветами с терминалом являются только первые 7: коды 30..37
для текста, 40..47
для фона, дефолтные коды 39
и 49
для текста и фона соответственно (см. таблицу из предыдущей заметки (копия)).
Коды для яркости текста (90..97
) и фона (100..107
) расширение стандарта и поддерживаются не всеми терминалами. Для текста есть способ увеличить яркость — включить полужирный режим: семь цветов плюс полужирный с расчётом на то, что это давно уже яркость текста.
Итого, получаем вот такую таблицу совместимых цветов:
# | Название цвета | Код цвета текста | Код цвета фона |
0 | Default (По умолчанию) | 39 | 49 |
1 | Black (Черный) | 30 | 40 |
2 | DarkRed (Темно-красный) | 31 | 41 |
3 | DarkGreen (Зеленый) | 32 | 42 |
4 | DarkYellow (Темно-желтый) | 33 | 43 |
5 | DarkBlue (Синий) | 34 | 44 |
6 | DarkMagenta (Темно-фиолетовый) | 35 | 45 |
7 | DarkCyan (Темный аквамарин) | 36 | 46 |
8 | Gray (Серый) | 37 | 47 |
9 | DarkGray (Темно-серый) | 1;30 | — |
10 | Red (Красный) | 1;31 | — |
11 | Green (Ярко-зеленый) | 1;32 | — |
12 | Yellow (Желтый) | 1;33 | — |
13 | Blue (Голубой) | 1;34 | — |
14 | Magenta (Фиолетовый) | 1;35 | — |
15 | Cyan (Аквамарин) | 1;36 | — |
16 | White (Белый) | 1;37 | — |
Код сброса: \x1b[0m
— сбрасывает настройки консоли (цвет текста, фона и стиль) к значению по умолчанию. Он работает нормально.
Заодно уж выбросил из таблицы стилей «мигающий» и «невидимый», которые объективно не работают:
Код стиля | Стиль текста |
0 | Default (По умолчанию) |
1 | Bold (Жирный/яркость текста) |
4 | Understrike (Подчеркнутый) |
7 | Inversing (Инверсия), цвет фона и текста меняются местами |
Массивы с кодами цветов теперь выглядят так (массив с именами показан для лучшего понимания):
NAMES=(Default Black DarkRed DarkGreen DarkYellow DarkBlue DarkMagenta DarkCyan Gray DarkGray Red Green Yellow Blue Magenta Cyan White)
FGROUND=("39" "30" "31" "32" "33" "34" "35" "36" "37" "1;30" "1;31" "1;32" "1;33" "1;34" "1;35" "1;36" "1;37")
BGROUND=(49 40 41 42 43 44 45 46 47)
И подправляем вывод:
echo -e "Foreground color:\tBackground color:" for N in {0..16}; do if [ $N -eq 1 ];then #foreground echocn "$N - ${NAMES[$N]}" $N 4 else echocn "$N - ${NAMES[$N]}" $N fi echo -e -n "\t\t" if [ $N -le 8 ];then if [ $N -gt 1 ];then echoc " ${NAMES[$N]} " 1 $N #background else echoc " ${NAMES[$N]} " 0 $N fi else echo fi done echo echocn "Default" 0 0 0; echo -n " " echocn "Bold" 0 0 1; echo -n " " echocn "Understrike" 0 0 4; echo -n " " echocn "Inversing" 0 0 7; echo -n " " echo echo
Вывод в терминал:
Вывод в файл:
./esccolorscomp >test.txt
Замечание #3. Об использовании tput
Я задал вопрос, а не проще ли вместо ESC-кодов использовать tput
, о чем я уже писал (копия). Ответ был таким: Он требует установленого ncurses
, в общем и целом — никто не гарантирует его наличия.
При использовании скрипта 0x0.sh
, из предыдущего поста (копия), внезапно напоролся на ошибку curl: (60) SSL certificate problem: certificate has expired
.
Грешным делом подумал, что у меня в системе протухли корневые сертификаты, поскольку слаку я триста лет не обновлял, уже лет 5 без переустановки стоит, даже пошел, и нашел как их вроде бы стандартным способом обновить. Недопомогло. Потом думаю, если бы сертификаты все совсем были старые и просроченные, у меня бы ничего не работало, ни curl
, ни wget
, ни браузеры, ни ютупчик. А тут вроде как всего один сайтик, что-то тут не то, или я не так делаю, или на сайте косяк. Неделю проебавшись, пошел спросил у более знающего юзера ketmar@ljr. Да отключи ты их к лешему, или опциями командной строки, или на уровне конфига, ответил он.
curl
, перед проверкой параметров командной строки, заглядывает в свой конфиг в каталоге пользователя, так что в нем можно установить локальные (относительно пользователя) параметры по умолчанию. Нас интересует опция отключения проверки сертификатов.
1. Заходим в свой домашний каталог (/users/<ваше_имя пользователя>/
)
2. Создаем файл .curlrc
3. Прописываем в нем одну строчку: insecure
Достаточно добавить параметр -k
или --insecure
до параметров -F "file=@<имя файла>"
, если вы curl
‘ом что-то отправляете, или до адреса URL, если вы curl
‘ом что-то получаете.
Например, я модифицировал код скрипта 0x0.sh
:
Было:
...
url=$(curl ${curl_opts} -F "file=@${file}" "${host}")
...
Стало:
...
url=$(curl ${curl_opts} --insecure -F "file=@${file}" "${host}")
...
Было:
...
shortened=$(curl ${curl_opts} -F "shorten=${url}" "${host}")
...
Стало:
...
shortened=$(curl ${curl_opts} --insecure -F "shorten=${url}" "${host}")
...
Было:
...
uploaded=$(curl ${curl_opts} -F "url=${url}" "${host}")
...
Стало:
...
uploaded=$(curl ${curl_opts} --insecure -F "url=${url}" "${host}")
...
smallwolfie@wolfshanze:/tmp# 0x0.sh -f 332068.jpg
uploading "332068.jpg"...
######################################################################## 100.0%
https://0x0.st/o4_0.jpg
Конечно же котролирующий передачу, развертку по горизонтали и вертикали, и держащий под котролем изображение и звук.
Захотел я как-то украсить скрипт, ну чтоб он не был таким скучным, и подумал — в DOS можно было красить консоль, а можно ли в Linux? Можно!
tput
— команда, в основном предназначающаяся для управления консольным курсором, но покрасить она тоже может, хоть и довольно хреново.
Общий синтаксис:
tput <команда> <параметры>
В нашем случае, интересуют команды, изменяющие цвет или стиль текста.
Для удобства сведу их в таблицу:
Команда tput | Действие |
bold | Жирный текст, после вызова команды |
smul | Начало подчеркнутого текста |
rmul | Конец подчеркнутого текста |
rev | Реверс текста и фона, т.е. они меняются местами |
blink | Мигающий текст (не на одной консоли не сработал) |
invis | Невидимый текст (у меня не сработало) |
smso | Некий «выдающийся» (standout) режим, отличий при выводе не заметил |
rmso | Отключить «выдающийся» режим |
setaf <код_цвета> | Установить цвет текста |
setab <код_цвета> | Установить цвет фона |
sgr0 | Сбросить настройки терминала к значениям по умолчанию. |
tput
, на самом деле, плох для окраски текста консоли, но зато хорош в синтаксисе. Не надо сочинять дополнительных функций для ESC-последовательностей (о них в следующей заметке), но он поддерживает только 7 основных цветов, а на некоторых консолях не срабатывает и белый цвет. Вот таблица цветов для текста и фона (значения одинаковые и для того, и для другого):Код цвета | Цвет |
0 | Черный (Black) |
1 | Красный (Red) |
2 | Зеленый (Green) |
3 | Желтый (Yellow) |
4 | Голубой (Blue) |
5 | Фиолетовый (Magenta) |
6 | Светло-голубой (Cyan) |
7 | Белый (White), у меня почему-то не сработал. |
8 | Не используется |
9 | Возврат к цвету по умолчанию |
Я написал тестовый скрипт, где последовательно перебираю цвета текста и цвета фона:
tput setaf <код_цвета>
, для текста
tput setab <код_цвета>
, для фона
потом echo -n "некий текст"
, где некий текст
— наименование цветов в массиве, см. исходник.
А потом вызываю tput sgr0
, чтобы сбросить консоль.
Стили текста:
echo "Text style:"
tput bold; echo "Bold"; tput sgr0
tput smul; echo "Underlined"; tput rmul
tput rev; echo "Reversed"; tput sgr0
tput blink; echo "Blinking"; tput sgr0
tput invis; echo "Invisible"; tput sgr0
tput smso; echo "Standout"; tput rmso
tput sgr0
tput, на буржуйском. Копия в PDF
Пост из области «спрашивали — отвечаем». Хотя, не совсем понимаю, зачем это особенно-то нужно. Если каталог /tmp
сильно засран, то штатное завершение работы будет доооолгим.
Достаточно добавить в скрипт /etc/rc.d/rc.local_shutdown
следующую команду:
rm -rf /tmp/*
Внимание! Не накосячьте с командой rm -rf
, пишите именно так, как выше. В самом плохом случае, при опечатке в команде, можно получить Патч Бармина
Когда-то давно на сайте писали о бесплатном японском VPN vpngate.net, к сожалению, официальный клиент был только под винды, но народ наскриптил и под Android/iOS и графический клиент под Gnome
А вот консольного не было, пришлось делать самому.
— wget
— openvpn
— dialog
— Получение списка серверов
— Сортировка списка серверов
— Добавление дополнительных опций в конфиг VPN
— Установка соединения с сервером
Настройка скрипта осуществляется путем редактирования переменных скрипта.
LISTADDR="http://www.vpngate.net/api/iphone/"
— адрес списка серверов
LISTFILE="servers"
— файл со списком серверов на локальной машине
DATADIR="./data"
— рабочий каталог
DIALOG="dialog"
— команда, вызывающая утилиту dialog
.
OPENVPN="openvpn"
— команда, вызывающая утилиту openvpn
.
VPN_LOGIN="vpn"
— логин.
VPN_PASS="vpn"
— пароль
AUTH_FILE="vpngate.auth"
— файл авторизации
AUTH_DIR="$DATADIR"
— директория с файлом авторизации.
LOG_FILE=""
— путь к файлу log’а
LOG_TTYN="3"
— отправлять log на терминал, номер которого указан в переменной
RMLOG=0
— удалять log по выходу из программы (0
— не удалять, 1
— удалять)
LOG_APPEND=0
— дописывать log (0
— не дописывать 1
— дописывать)
1. Установите пакет (Slackware) или скачайте основной скрипт, скрипт настройки маршрутизации и опции VPN
2. В случае необходимости измените значения переменных скрипта
3. Измените скрипт маршрутизации в соответствии с вашими настройками
3. Запустите скрипт (vpngate
)
4. Обновите список VPN-серверов (пункт основного меню Update VPN List)
5. В случае необходимости отсортируйте список серверов и откорректируйте список дополнительных опций VPN.
6. Выберите пункт меню Connect VPN…
7. Выберите нужный сервер и нажмите OK
Пригодится для локального сервера почты или для тестирования проекта, где нужен свой почтовый сервер. Буду эту тему дальше развивать, следите по тегу mailserver (копия).
1. Создаем приватный ключ для корневого сертификата.
2. Создаем самоподписанный корневой сертификат.
3. Создаем приватный ключ для простого (не корневого) сертификата.
4. Создаем запрос на подпись простого сертификата.
5. Создаем простой сертификат, подписанный с помощью корневого.
6. Копируем приватный ключ для простого сертификата и сам сертификат в /etc/dovecot/private/
7. Устанавливаем файлам права в 400
. Т.е. разрешаем чтение только для владельца, остальное запрещаем.
8. Если dovecot
будет запускаться под отдельным пользователем, а так и надо, не забываем сменить файлам владельца.
Поскольку, с первого раза настройка почтового сервера может не получиться [ВОРЧАНИЕ ON] куча инструкций, противоречащих друг другу или неполных, но одной хорошей и конкретной нет [/ВОРЧАНИЕ OFF]
Вот скрипт:
#!/bin/bash
TMPPATH="/tmp/mailkeys"
OUTPATH="/etc/dovecot/private"
echo "Making temp path $TMPPATH..."
mkdir -p "$TMPPATH"
echo "Making output path $OUTPATH..."
mkdir -p "$OUTPATH"
echo "Generate a root private key (rootCA.key)..."
openssl genrsa -out "$TMPPATH/rootCA.key" 2048
echo "Generate a self-signed root sertificate (rootCA.pem):"
openssl req -x509 -new -nodes -key "$TMPPATH/rootCA.key" -days 2048 -out "$TMPPATH/rootCA.pem"
echo "Create private key for the final certificate (dovecot.key)..."
openssl genrsa -out "$TMPPATH/dovecot.key" 2048
echo "Create a certificate sign request (dovecot.csr):"
openssl req -new -key "$TMPPATH/dovecot.key" -out "$TMPPATH/dovecot.csr"
echo "Create final certificate..."
openssl x509 -req -in "$TMPPATH/dovecot.csr" -CA "$TMPPATH/rootCA.pem" -CAkey "$TMPPATH/rootCA.key" -CAcreateserial -out "$TMPPATH/dovecot.crt" -days 2048
echo "Copy key and certificate to $OUTPATH..."
cp "$TMPPATH/dovecot.key" "$OUTPATH/dovecot.key"
cp "$TMPPATH/dovecot.crt" "$OUTPATH/dovecot.crt"
echo "Set permissions..."
chmod 400 "$OUTPATH/dovecot.key"
chmod 400 "$OUTPATH/dovecot.crt"
echo "Complete!"
Итак, продолжаем разбираться с записью с экрана в Linux.
Для начала, я почитал обзор Losst на соответствующие программы, и вот, что имею сказать:
RecordMyDesktop — кривой и глючный, пропускает кадры, пишет только в формате OGV, который ни одна собака не поддерживает.
Vokoscreen — не собрался, не смог найти файл своего же исходника, хотя и файл был и права на месте.
ScreenStudio — для потокового видео, мне лично не подходит.
Kazam ScreenCaster — нет возможности записи конкретного окна или произвольной области экрана.
Byzanz-record — только командная строка (да, хочу программу с графическим интерфейсом для работы с видео).
VLC Media Player — записывает, но опять же, весь рабочий стол
OBS — вообще не про «запись с экрана», а про стриминг, так что если там запись с экрана и есть, то в качестве приятного бонуса, для простой записи с экрана, это из пушки по воробьям.
Так что остановился на Simple Screen Recoder.
В Slackware он штатно устанавливается через sbopkg
, вводим в поиске ssr
и ставим, из зависимостей нужен ffmpeg
.
Программа простая и удобная, выполнена в виде мастера, так что работа не доставляет никакого геморроя.
На первом шаге выбираем, что будем записывать — весь десктоп, произвольную область экрана или конкретное окно, или записывать, следуя за курсором. Можно записывать и OpenGL’ные игры. Также можно включить запись звука и записывать или убрать из записи курсор.
На втором шаге выбираем кодек и формат файла, основные форматы следующие:
— MKV
(Кодеки H.264
, VP8
, Theora
)
— MP4
(H.264
)
— WebM
(VP8
)
— OGG
/OGV
(Theora
)
Также выбираем файл, в который будем писать, и отрубаем пропуск кадров.
Писать лучше в MP4, т.к. его любой видеоредактор поддерживает.
Можно в списке кодеков и форматов выбрать Other… и будет доступна тонкая настройка контейнера (формата файла) и кодека.
На третьем шаге включаем запись и сворачиваем программу (она спрячется в трей).
Причины ошибки:
1. Кодек не установлен, заходим в sbopkg
и устанавливаем пакеты:
— aom
(выбираем multimedia/aom
в меню sbopkg
)
— libass
— libwebp
— x264
(выбираем multimedia/x264
в меню sbopkg
)
— x265
— ffmpeg4
Перезапускаем программу, если ошибка повторяется, значит установлен кривой ffmpeg
(а официальный пакет ffmpeg
в Slackware кривой). Сносим пакет ffmpeg
и устанавливаем нормальный от Alien: качать здесь
В общем, поступаем как в заметке Перекодировка OGV в MP4 и решение ошибки Unknown encoder ‘libx264’ в Slackware Linux (копия)
Все работает:
ФАНФАРЫ!
Пришлось некоторое время решать проблемы с записью видео в Linux. Изначально задача была в записи видео с экрана, но в процессе решения добавились и web/ip-камеры (заодно уж), и общие проблемы с перекодировкой видео из одного формата в другой. Начнем как раз с конца, т.е. с перекодировки.
Леша уже плюнул на попытки заставить непокорную софтину записывать для начала экран в удобоваримом формате MP4, и прислал мне ролик в формате OGG (ну не OGG, OGV), чтоб я разобрался с его перекодированием во что-то более удобоваримое, т.к. не один из наших видеоредакторов формат OGV (кстати, открытый) «из коробки» не поддерживал.
В качестве видеокодека в формате OGV используется кодек Theora
, а в MP4 AVC/H.264
OGG — изначально, открытый звуковой формат, разработанный как альтернатива закрытым (WMA, MP3). Через некоторое время, данный формат был расширен с добавлением поддержки видео. Но некоторые (несознательные) линуксовые программы пишут видео, а файлы создают с расширением .ogg
. Линуксовому софту, типа плееров, вообще на это плевать, но линуксовому софту всегда было плевать на расширения имени файлов, а вот винде нет. Потому, если вам прислали видео в файле с расширением .ogg
, то попробуйте поменять расширение на .ogv
, скорее всего файл нормально откроется. В K-Lite Mega Codec Pack и в VLC для Windows поддержка, что OGG, что OGV есть точно.
Но все-таки вернемся в Slackware и к преобразованию форматов.
В связи с диким онанизмом на «авторские» «права» и зоопарком форматов видео/аудио в Линуксе преобразование одного формата в другой превращается в наркоманский квест. У нас было десять мегабайт библиотек, две сотни кодеков, пакет с разными пакетами, 200 грамм укуреных лицензий… Тьфу, к делу.
Для установки некоторых необходимых пакетов можно воспользоваться sbopkg
.
Вообще, для работы с видео и аудио используется программа ffmpeg
(v3), но не спешите ставить ее из «официального» репозитория Slackware, как оказалось, чтоб все заработало, пришлось переустанавливать из альтернативного.
Пока вводим в поиске и ставим:
aom
(выбираем multimedia/aom
в меню sbopkg
)
libass
libwebp
x264
(выбираем multimedia/x264
в меню sbopkg
)
x265
ffmpeg4
ffmpeg
(v3) у меня уже был установлен ранее, так же из официального репозитория Slackware. А вот и зря.
ffmpeg -i input.ogv \ -c:v libx264 -preset veryslow -crf 22 \ -c:a libmp3lame -qscale:a 2 -ac 2 -ar 44100 \ output.mp4
Преобразование будет медленным, но практически без потери качества. Свои варианты параметров можете кидать в комментарии, вдруг пригодится.
Как я сказал ранее, ffmpeg
из репозитория sbopkg
у меня уже стоял. Сначала я подумал, что поможет его полная переустановка с пересборкой пакета (мало ли, свежеустановленные кодеки не видятся). Не помогло.
Решение нашлось здесь
В общем да, из-за голливудских уродов патентных ограничений и прочей юридической хуйни, официальный пакет ffmpeg
в Slackware не включает поддержку H.264
. Но, слава Великим Древним, проблему решили без нас, и даже в опциях компиляции ковыряться не нужно:
Just to clarify, you’d want the «restricted» ffmpeg that Alien Bob offers, as that includes support for various things that have patent restrictions (like x264 encoding).
Есть готовый альтернативный пакет:
И наглядно увидеть, где засрано 🙂
Для отображения размеров каталогов (с подкаталогами), есть стнадартная утилита du
, но, если честно, она не очень удобная. Гораздо удобнее ее аналог, написанный с помощью ncurses — ncdu
Пользоваться очень просто. Заходим в каталог, в котором хотим узнать размеры подкаталогов, и просто вызываем утилиту:
ncdu
Наверное, ее единственный минус, что в каталог уровнем выше, чем тот, из которого ее вызвали, она не переходит. Так что если хотите посмотреть размеры каталогов сразу во всей файловой системе, надо вызывать ее из корня (/
). Но причина такому поведению легко может быть найдена — после запуска утилита сканирует все подкаталоги, чтоб потом нам красиво показать. Чем с более верхнего уровня ее вызываешь, тем дольше процесс сканирования.
ENTER
, возврат назад по стрелке влево, клавише h
или <
(обычно запятая с шифтом) или по нажатию ENTER
на ..
, как в mc
. Краткая справка по ?
(не забывайте нажать SHIFT
), выход по q
.
В Slackware устанавливается штатным образом через sbopkg, как в других линуксах не знаю, в Убунте и Дебиане есть в репозиториях.
Долго искал, как выйти из X через консоль, и в мануалах ничего не мог найти. Почему-то это нигде толком не описано. Хотя, я думаю, завершить X на другой машине удаленно, имея под рукой только консоль/удаленный терминал, возникала не у меня одного.
И оказалось, что какого-то единственного универсального способа нет.
Runlevel или уровень запуска — это программная конфигурация системы, которая позволяет запускать только выбранную группу процессов на определенном этапе. Их до 10, но нас интересует уровень 3 — многопользовательский (консольный) режим, и уровень 5 (в Slackware — 4), многопользовательский графический режим, в котором X-server запускается по умолчанию.
Если система находится на уровне 4 (5), то способы как либо пришибить иксы могут не сработать, иксы перезапустятся. С уровня 3 можно запустить X-сервер вручную, для этого надо в консоли ввести (обычно) startx
. Если система на уровне 3, то иксы сравнительно легко прибить (см. ниже).
Визуально уровень запуска обычно определить легко. 3 — после загрузки ОС будет консольное приглашение ввести логин и пароль, например:
Welcome to Linux 4.4.14-smp (tty1)
wolfsсhanze login:
На уровне 4 (5) на экране будет предложение ввести логин/пароль, но уже в иксовой форточке.
Правда, некоторые не очень популярные дистрибутивы хитрят. Например, Puppy Slacko запускается на уровне 3, а X-сервер вызывает уже из своих инициализационных скриптов.
Можно проверить runlevel и в консоли/терминале:
runlevel
Вывод:
N 3
или
who -r
Вывод:
run-level 3 2020-01-28 07:12 last=S
Неверное, самый универсальный способ завершить работу X-server на лету и через консоль, это переключить runlevel. Команда должна быть выполнена от root
.
— Для Slackware:
init 3
— Для дистрибутивов с systemd:
systemctl isolate runlevel3.target
Вернуться в иксы.
Для Slackware:
init 4
— Для дистрибутивов с systemd:
systemctl isolate graphical.target
— Для Slackware:
1. Под root
запускаем mc
и идем в /etc
2. Ищем там файл inittab
и открываем его в редакторе.
3. Ищем строчки:
# Default runlevel. (Do not set to 0 or 6)
id:4:initdefault:
Они обычно в начале файла.
4. Меняем 4
на 3
и сохраняем файл. Если надо X при старте — меняем 3
на 4
. Если что, обычно в файле есть комментарий-подсказка (на буржуйском).
— Для дистрибутивов с systemd:
Чтоб X был выключен по умолчанию:
systemctl set-default runlevel3.target
Чтоб X по умолчанию был включен:
systemctl set-default multi-user.target
Опять же, повторюсь, стопроцентно это сработает только если X-server запущен вручную (или через скрипты), когда система находится в runlevel 3.
— Придушить X-сервер совсем:
killall Xorg
— Более аккуратно придушить иксы (для систем с systemd). Надо отправить команду завершения оконному менеджеру.
В общем виде:
systemctl stop display-manager.service
Вместо display-manager.service
подставляем свой оконный менеджер (наверное, не все поддерживают, но у меня systemd нет, так что не тестировал):
systemctl stop gdm
— Способ для xfce
:
xfce4-session-logout --logout --display :0.0
Корректно срабатывает только с локальной консоли. Удаленно может не работать.
В некоторых системах до сих пор работает старый способ переключиться в голую консоль, не завершая X-сервер.
Для этого надо нажать Ctrl+Alt+F2…F6 и вам откроется чистый терминал. На Ctrl+Alt+F7 обычно сидят сами иксы, и таким образом, можно к ним вернуться. А первый терминал (Ctrl+Alt+F1) иксы занимают под служебные нужды. В некоторых системах для выхода из иксов срабатывает такой способ:
1. Переключиться в первую консоль (Ctrl+Alt+F1)
2. Нажать Ctrl+C/Ctrl+Break
В некоторых системах для выхода из иксов может сработать комбинация Ctrl+Alt+Backspace
В системах, запускающихся в графическом runlevel по умолчанию, это можно использовать для перезагрузки графического окружения, если X зависли (как soft-restart в Windows 98). Так же можно использовать и команду killall Xorg
Клиент сети написан на Java, потому ее надо сначала установить. На официальном сайте есть рекомендации о необходимой версии:
Java Runtime Version 7 or higher. (Oracle, OpenJDK, or IcedTea Java Version 7 or 8 recommended.
Сама установка довольно проста:
1. Идем, например сюда
2. Скачиваем jdk-8u162-i586-2gds.txz
3. Устанавливаем стандартным образом:
installpkg jdk-8u162-i586-2gds.txz
4. Добавляем в автозагрузку (если вы не сделали отдельного скрипта для запуска сервера, то /etc/rc.d/rc.local
) пути к java:
echo "Add JAVA paths..."
export JAVA_HOME=/usr/lib/java
export MANPATH="${MANPATH}:${JAVA_HOME}/man"
export PATH="${PATH}:${JAVA_HOME}/bin:${JAVA_HOME}/jre/bin"
5. Перезагружаем машину.
6. Вводим в консоли команду java
без параметров. Если все было сделано правильно, то вы должны увидеть вывод краткой справки по параметрам java.
Понятно, что операции с пользователями надо делать под root
или с sudo
.
1. Создаем отдельную группу для I2P:
groupadd i2pgrp
2. Создаем интерактивного (пока, потом мы вырубим ему всю интерактивность) пользователя, например i2psrv
:
useradd -g i2pgrp -m -d /home/i2psrv -s /bin/bash i2psrv
где:
-g i2pgrp
— группа пользователя (i2pgrp
)
-m
— создать домашний каталог
-d /home/i2psrv
— путь к домашнему каталогу (/home/i2psrv
)
-s /bin/bash
— установить пользователю оболочку, в данном случае фиктивную (/bin/bash
)
i2psrv
— имя пользователя
3. Задаем ему пароль:
passwd i2psrv
В интерактивном режиме повторяем пароль 2 раза, о сложности можно не беспокоиться — все равно потом отключим.
1. Скачиваем установщик для Linux с официального сайта
2. Копируем в директорию пользователя (/home/i2psrv
) и меняем владельца файла:
chown i2psrv:i2pgrp i2pinstall_0.9.44.jar
3. Логинимся под новым пользователем.
4. Запускаем установку (через консоль):
java -jar i2pinstall_0.9.44.jar -console
5. Приводят возможность выбрать язык:
Select your language
0 [x] eng
1 [ ] bra
2 [ ] cat
3 [ ] ces
...
Оставляем английский (нажимая ENTER).
6. Далее предлагают продолжить установку:
Нажимаем 1 [ENTER]
7. Опять лицензия и всякая хрень:
Нажимаем 1 [ENTER]
8. Выбор пути для установки. Поскольку устанавливаем в каталоге нового пользователя, пусть так и делает — нажимаем [ENTER]
9. Далее нажимаем O
и [ENTER] (в прошлых версиях было меньше гемора и подтверждений, а сейчас словно анкету в ментовку работать заполняешь 🙂
10. Еще раз предлагают подтвердить, что все ОК (1 и [ENTER])
11. Наконец, тебе говорят, что все ОК:
====================
Installation started
Framework: 5.1.3-84aaf (IzPack)
Platform: linux,version=4.4.14-smp,arch=x86,symbolicName=null,javaVersion=1.8.0_232
[ Starting to unpack ]
[ Processing package: Base (1/1) ]
[ Unpacking finished ]
Installation finished
On most systems, I2P can be started with:
/home/i2psrv/i2p/i2prouter start
If I2P does not start, please try:
/home/i2psrv/i2p/runplain.sh
12. Тебе говорят, что все совсем ОК:
Installation was successful
Application installed on /home/i2psrv/i2p
[ Writing the uninstaller data ... ]
[ Console installation done ]
Если вы намерены использовать I2P только на локальном компьютере, этот шаг можно пропустить.
1. Идем в файл /home/i2psrv/i2p/i2ptunnel.config
, предварительно его куда-нибудь скопировав, и меняем в нем все 127.0.0.1
на адрес нашего компьютера в локальной сети (например на 192.168.0.20
, см. адрес вашего компьютера), таким образом все сервисы I2P будут доступны с любой машины в локальной сети.
2. В том же файле смотрим порты, если где-то у нас какой-то порт для чего-то занят, например на том же порту уже висит HTTP или TOR-proxy, смело меняем порт.
I2P — порядочный сервис, и сам умеет переключать пользователя, под которым запускается. Некоторые даже рекомендуют завести двух пользователей, одного для запуска, другого для установки I2P, но мы, ради экономии времени, делать этого не будем — и запуск и установка будут под одним пользователем. Тем не менее, необходимо отредактировать скрипт i2prouter
(в /home/ip2srv/i2p
):
1. Ищем строку, содержащую RUN_AS_USER=
2. Раскомментируем ее (удаляем #
в начале строки).
3. Дописываем после знака =
имя пользователя (в этом примере «i2psrv"
).
Отслеживание статуса соединения с сетью I2P, ошибки и основные настройки доступны через Web-интерфейс, который запускается на локальной машине на порту 7657
, но если физического доступа к той машине, на которой установлен I2P нет (или лень), то можно управлять ей и с любого компьютера локальной сети.
Внимание! Это не очень одобряется официальными инструкциями. По идее можно сделать безопасный SSL-туннель, как это описывалось в одной из старых инструкций. Но я опишу самый простой вариант, просто поменяю конфиг.
Заходим в clients.config
(/home/i2psrv/i2p
), предварительно сделав бэкап.
И опять меняем 127.0.0.1
на 192.168.0.20
, т.е. меняем адрес машины, по которому должна появиться консоль.
Далее меняем clientApp.4.startOnLoad=true
на clientApp.4.startOnLoad=false
, т.к. на сервере нет смысла открывать панель управления после старта I2P.
Дальнейшая настройка под катом
Переходим по адресу http://i2p-projekt.i2p
I2P довольно медленная сеть и работает с некоторыми перебоями, так что если вместо сайта вы увидите надпись «Сайт недоступен. Возможно, сайт отключен, сеть перегружена или ваш маршрутизатор недостаточно интегрирован с другими пирами. Вы можете повторить операцию.«, то действительно, скорее всего, операцию нужно повторить.
На самом деле интерактивный доступ к системе для пользователя i2psrv
был нужен только на этапе установки сервиса I2P, и я оставлял его до конца настройки на случай, если I2P понадобится переустановить. Теперь консоль пользователю i2psrv
более не нужна. Отключаем:
Редактируем (под root
‘ом) файл /etc/passwd
.
Находим в этом файле строку, начинающуюся с имени пользователя (i2psrv
) и в конце строки меняем /bin/bash
на /bin/false
.
Сохраняем файл.
Остались нераскрытыми темы подписок (как добавлять I2P-сайты неизвестные вашему маршрутизатору I2P), интересные I2P-сайты, другие сервисы I2P, кроме WWW. Может быть когда-нибудь вернусь к этому вопросу, а пока рекомендую детально ознакомиться с документацией на сайте https://geti2p.net/, http://i2p-projekt.i2p и в консоли I2P.