Бесплатный 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 или что-то подобное использовать, на мой взгляд.

Добавить комментарий для dimio Отменить ответ

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