Возникла у меня как-то нужда в получении 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.
Остается подключиться к серверу при помощи ssh-клиента (например — putty) — и бесплатный шелл у нас в кармане. Настройки putty особых сложностей вызвать не должны, достаточно заполнить основные данные для подключения и указать автоматический запуск tmux после установки соединения.
Кстати, помимо 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 отправляются автоматом):
Вот теперь действительно всё — можно спокойно пользоваться шеллом без необходимость вспоминать об обязательном продлении жизни аккаунта и без риска удаления всех настроек и наработок.
А irc-ботов, psybnc запускать можно?
Под irssi можно найти или написать бота. Какой смысл в запуске этого psyBNC, если и так везде будет виден адрес сервера bshellz, на котором irssi запущен?
«Какой смысл в запуске этого psyBNC» — в своё время была мода на БНЦ… Потому и спросил… За статью спасибо, попробую пощупать…
[14:04] *beschbot* !register **** *****@yandex.com
[14:04] == No such nick/channel: beschbot
Этот бот ещё жив?
У меня проблем нет:
(10:01:47) dimio: !keep dimio
(10:01:48) Beschbot: dimio’s shell has 168 more hours to live!
А какой irc-сервер? Я заходил через веб- интерфейс
Да любой публичный из сети freenode, какая разница.
Я просто кроме DALNET.RU не знаю irc-сетей
В заметке же есть ссылка на веб-чат freenode. Или серверы irc.freenode.net, chat.freenode.net — что вспомнилось сразу.
Session Start: Thu May 22 10:37:11 2014
[10:37:38] all seems ok! check your email for confirmation code!
Session Close: Thu May 22 10:44:32 2014
Ждёмс письма
Если не трудно, распиши отдельным постом подробно, как настроить irssi?
Что конкретно неясно? На тему настройки для автопродления аккаунта в заметке вроде довольно исчерпывающе написано. Просто общие настройки мне не нужны, я и IRC-то не пользуюсь года с 2001 уже.
Извините, но это для упражнения с ssh и пару байт по интернету «кинуть» или есть возможность для чего-то ещё…? Спасибо за статью
Для чего Вы будете использовать shell на удалённом сервере — Ваше дело. Плюс конкретно этого — в бесплатности и наличии tmux.
Спасибо за ответ
В моём понимании, если Вы ищете Linux-шелл — Вы уже представляете, для чего он может понадобиться 🙂 Извините, если прошлый ответ прозвучал грубовато.
А бота для телеграм там запустить можно? 🙂
Теоретически — можно. Практически — могут на бесплатном аккаунте обрубать соединение, плюс будут проблемы с отсутствием SSL-сертификата. Проще для такого бота heroku или что-то подобное использовать, на мой взгляд.