Бесплатный Linux-shell с Tmux на борту

Возникла у меня как-то нужда в получении linux-shell на стороннем сервере с постоянным доступом в сеть (тот же парсер ТИЦ запустить например). При этом шелл должен был удовлетворять двум условиям: быть бесплатным и иметь возможность оставить запущенное приложение работать «в фоне», без поддержания постоянного соединения удаленной машиной. Помимо этого, хотелось несколько большего, чем возможность использовать простые dtach или nohup, а значит — нужно наличие на удаленной машине терминального мультиплексора (Screen или Tmux). Мой выбор пал на bshellz, удовлетворяющий всем условиям, включая наличие Tmux. Вот что они предлагают после прохождения бесплатной регистрации:

— Возможность разместить свой сайт на домене http://имя_пользователя.bshellz.net
— 50 Мб дискового пространства
— Электронный адрес вида: имя_пользователя@bshellz.net
— Возможность использовать одну базу MySQL, наличие phpmyadmin: https://services.bshellz.net/phpmyadmin/

Регистрация в bshellz

Если предложенные условия выглядят достаточно привлекательными — остается только зарегистрироваться. Для этого нужно при помощи любого IRC-клиента зайти на канал #bshellz в сети Freenode и отправить сообщение боту: /PRIVMSG beschbot !register < желаемое имя пользователя> . В ответ на указанный электронный адрес придет письмо с информацией для доступа к серверу — логин, пароль, адрес сервера. Если нет желания пользоваться отдельным irc-клиентом — можно прибегнуть к услугам веб-чата сети Freenode.
зайти в irc через браузер - веб-ча

Остается подключиться к серверу при помощи ssh-клиента (например — putty) — и бесплатный шелл у нас в кармане. Настройки putty особых сложностей вызвать не должны, достаточно заполнить основные данные для подключения и указать автоматический запуск tmux после установки соединения.
подключение по ssh - клиент putty
автозапуск команды после соединения в putty
Кстати, помимо tmux доступны perl и php:

dimio@shell:~$ perl -v
This is perl 5, version 14, subversion 2 (v5.14.2) built for x86_64-linux-gnu-thread-multi
(with 80 registered patches, see perl -V for more detail)

dimio@shell:~$ php -v
PHP 5.4.4-14+deb7u2 (cli) (built: Jun 5 2013 07:56:44)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies

На этом описание бесплатного шелла от bshshellz можно было бы закончить, но…

Автоматическое продление регистрации в bshellz

Всегда есть какое-то неприятное «но». В нашем случае — это ограниченный срок жизни бесплатного аккаунта (всего 168 часов — одна неделя), для продления которого нужно регулярно заходить на irc-канал #bshellz и отдавать боту команду !keep имя_пользователя — в ответ бот милостиво отмерит аккаунту еще 168 часов жизни. Делать подобное вручную — утомительно и глупо. Использовать скрипты, запускаемые на сторонней машине — глупо вдвойне (если и так есть, где запустить скрипт — зачем использовать ограниченный бесплатный шелл?). Нужно сделать так, чтобы продление аккаунта работало автоматически с использованием самого bshellz. Какие для этого существуют пути?

  • Путь первый — использовать perl или php, написать свой или взять готовй скрпит, с его помощью заходить на канал #bshellz и давать команду боту на продление аккаунта. Этот путь я отбросил по причине лени и нежелания разбираться с возможными проблемами 🙂
    UPD: в итоге сделал запускаемый раз в сутки perl-скрипт для автопродления аккаунта Bshellz.
  • Путь второй — использовать простое готовое решение — консольный irc-клиент irssi, который также доступен на хостинге bshellz.

irssi и cron — пишем сообщения по расписанию

Запустив irssi можно выполнить его предварительную настройку, добавив автоматическое подключение к сети Freenode с последующим заходом на канал #bshellz. Или подключиться вручную, указав в командной строке irssi следующую последовательность команд:

/connect irc.freenode.net
/join #bshellz

Всё работает? Отлично. Можно открыть еще одно окно терминала (заодно проверим tmux), нажав Ctrl+b n. Теперь загрузим скрипт cron.pl, который и будет отправлять сообщения боту:

mkdir -p ~/.irssi/scripts/autorun/
wget -c -P ~/.irssi/scripts/ http://scripts.irssi.org/scripts/cron.pl
ln -s ~/.irssi/scripts/cron.pl ~/.irssi/scripts/autorun/cron

При загрузке irssi скрипт будет стартовать автоматически, но можно загрузить его и вручную — для этого нужно вернуться в окно с запущенным irssi, нажав Ctrl+b номер_окна (у меня это окно №0). И выполнить следующие команды (формат указания времени тот же, что и в cron — часы минуты день_месяца месяц день_недели команда):

/script load cron.pl
/jobadd 13 45 * * * MSG Beschbot !keep имя_пользователя

В ответ получим: 13:41 -!- Irssi: Job added. Для проверки можно запросить список сохраненных заданий и если всё верно — сохранить их (хранятся в файле ~/.irssi/cron.save):

/jobs
13:41 -!- Irssi: Current Jobs:
13:41 -!- Irssi: 0) -server freenode 13 45 * * * MSG Beschbot !keep dimio
13:41 -!- Irssi: End of List
/jobssave
12:58 -!- Irssi: Jobs saved

Загружаются сохраненные команды при помощи /jobsload. После отправки сообщения по расписанию irssi автоматически откроет окно приватной беседы с beschbot, перейти в которое можно, нажав Alt+3, что даст возможность воочию убедиться в исправной работе автопродления шелла в bshellz (сообщения !keep dimio отправляются автоматом):
бесплатный шелл bshellz - автопродление аккаунта

Вот теперь действительно всё — можно спокойно пользоваться шеллом без необходимость вспоминать об обязательном продлении жизни аккаунта и без риска удаления всех настроек и наработок.

18 мыслей о “Бесплатный Linux-shell с Tmux на борту”

    1. Под irssi можно найти или написать бота. Какой смысл в запуске этого psyBNC, если и так везде будет виден адрес сервера bshellz, на котором irssi запущен?

      1. «Какой смысл в запуске этого psyBNC» — в своё время была мода на БНЦ… Потому и спросил… За статью спасибо, попробую пощупать…

        1. В заметке же есть ссылка на веб-чат freenode. Или серверы irc.freenode.net, chat.freenode.net — что вспомнилось сразу.

    1. Что конкретно неясно? На тему настройки для автопродления аккаунта в заметке вроде довольно исчерпывающе написано. Просто общие настройки мне не нужны, я и IRC-то не пользуюсь года с 2001 уже.

  1. Извините, но это для упражнения с ssh и пару байт по интернету «кинуть» или есть возможность для чего-то ещё…? Спасибо за статью

    1. Для чего Вы будете использовать shell на удалённом сервере — Ваше дело. Плюс конкретно этого — в бесплатности и наличии tmux.

        1. В моём понимании, если Вы ищете Linux-шелл — Вы уже представляете, для чего он может понадобиться 🙂 Извините, если прошлый ответ прозвучал грубовато.

    1. Теоретически — можно. Практически — могут на бесплатном аккаунте обрубать соединение, плюс будут проблемы с отсутствием SSL-сертификата. Проще для такого бота heroku или что-то подобное использовать, на мой взгляд.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *