По большому счёту сам процесс несложный — добавляем в сборку пакет sshd, задаём пароль для root в файле build.conf параметром param rootpasswd, собираем образ, загружаем, когда надо логинимся по ssh на клиенте и выключаем, но интереснее разослать всем нужным клиентам сигнал на выключение одной командой, без лишних телодвижений.
Почему не telnet — потому что по ssh проще сделать автологин, без костылей типа perl и expect. Далее описан способ реализации.
А реализовывать будем с помощью аутентификации по ключу, возможно у вас уже есть ключи в папке ~/.ssh и используются для других целей, тогда генерировать новые не нужно, просто копируем публичный ключ
cat id_rsa.pub >> authorized_keys
если нет то командуем:ssh-keygen -t rsa; ssh-add; cd ~/.ssh; cat id_rsa.pub >> authorized_keys
Запросы пути для ключей и задать-подтвердить пароль на приватный ключ игнорируем, нам оно не надо, жмем просто Enter.После выполнения команды в папке ~/.ssh у нас появятся три файла: id_rsa — приватный ключ, id_rsa.pub — публичный ключ и ключ authorized_keys. Просто переносим authorized_keys в папку конструктора Thinstation packages/sshd/etc/skel/.ssh, установите права 0700 на папку .ssh и 0600 на файл authorized_keys, собираем образ и после загрузки клиента можем логиниться на клиенте без пароля.
Если нужно логиниться на клиенте с разных машин или под из под разных пользователей, то генерируем под каждого пользователя ключи, добавляем их в ssh агента командой ssh-add и копируем содержимое получившихся id_rsa.pub в один authorized_keys.
Чуть не забыл, при первом подключении к клиенту ssh спрашивает «Are you sure you want to continue connecting (yes/no)?», заставим молчать, добавив опцию -oStrictHostKeyChecking=no, в команду ssh или создаём в папке своей учётки ~/.ssh файл config и пишем в него: StrictHostKeyChecking=no.
Несколько примеров использования:
Скрипт выключения клиентов по списку ip.txt:
#!/bin/sh
for ip in $(cat ip.txt)
do
ssh -oStrictHostKeyChecking=no root@$ip shutdown -h now&
#амперсанд в коце команды нужен что бы не тормозило, если хост не в сети
done
Отправить всем сообщение через Xdialog по списку ip.txt:
#!/bin/sh
for ip in $(cat ip.txt)
do
ssh -oStrictHostKeyChecking=no root@$ip DISPLAY=:0 Xdialog --infobox '"Проверка связи!!!\nПроверка связи!!! Проверка связи!!!\nПроверка связи!!!"' 300x200 0&
#амперсанд в коце команды нужен что бы не тормозило, если хост не в сети
#изменив 300x200 на -1 -1 получим сообщение во весь экран.
done
Чуть красивше — отправить всем сообщение через notify-send по списку ip.txt (нужно в build.conf добавить package notification-daemon):
#!/bin/sh
for ip in $(cat ip.txt)
do
ssh -oStrictHostKeyChecking=no root@$ip DISPLAY=:0 notify-send --expire-time=0 -u critical 'Внимание!!!' '"Проверка связи\nПроверка связи\nПроверка связи\nПроверка связи"'&
#амперсанд в коце команды нужен что бы не тормозило, если хост не в сети
done
Для облегчения образа из зависимостей notification-daemon можно убрать gtk-2.0, проверенно, работает.
Комментарии (23)
evg_krsk
06.10.2015 18:48+1ansible --forks=999 --inventory=ips.txt all -m command -a shutdown -h now
и всё.shweew
06.10.2015 19:23Ну конечно «и всё», после того как Ansible настроишь.
Он у нас не используется и заморачиваться пока не собираемся.
shweew
06.10.2015 19:37И что-то я не припомню в Thinstation пакета для подключения к ansible, недавно один товарищ прикрутил GLPI и FusionInventory, так образ на 13 мб вырос, что потихоньку извращает принципы «тонкоклиентности». :-)
evg_krsk
06.10.2015 19:46Если есть возможность подключиться ssh-клиентом — значит уже всё готово для подключения к хосту ansible. 0 байт сверху.
За исключением пары-тройки аргументов командной строки (--user=root, может ещё что-то забыл) больше ничего сверху не нужно настраивать в ansible.shweew
06.10.2015 20:42Почитал по ansible, для того, чтобы управлять машиной, на ней должен быть установлен Python, что всё таки утяжелит сборку.
kstep
08.10.2015 16:32Нет, если используете модуль raw. Ну и потом питон в минимальном виде не так уж тяжёл, раз уж вы уже ssh-сервер ставите. А если не используете всякие экзотические модули, то и дополнительных либ к питону ставить не нужно.
shweew
06.10.2015 19:41Помню на TS-2 образ для подключения по xdmcp весил меньше 10 мб, на TS-5 меньше 20 мб не получается, всё толще и толще…
Sleuthhound
09.10.2015 06:22Подскажите пожалуйста какие тонкие клиенты (ПК) используете? Какие наименее глючные? Спасибо.
shweew
09.10.2015 07:41В основном от ТОНК
Sleuthhound
09.10.2015 11:20Ценник у них совсем не гуманный, в среднем 15 тыс. за тонкого клиента — это перебор.
Akr0n
Это что же за предприятие такое? И много наэкономили? Шмон по тумбочкам на предмет электрических чайников и микроволновок не выгодней ли будет?
StirolXXX
Ну не скажи, если у тебя 500+ компов в здании то получится достаточно эффективно.
Ну допустим в простое они кушают 10вт, выходит 5 киловатт да жрут, за ночь (10 часов) будет 50кВтч.
За месяц (22 «рабочих» ночи) можно сэкономить 1.1мВтч. Вполне приличная сумма…
Вопрос автору: А не проще-ли было тонкие клиенты просто уводить в standby через 90 минут бездействия?
Akr0n
Что же за контора такая, если там 100% сотрудников идиоты и вредители, не выключающие по уходу домой технику? Я как бы за энергоэффективность и все такое, но требование работодателя, описанное автором — какой-то бред. Один чайник в кабинете убивает за несколько минут всю эту экономию.
shweew
Ну чайников нет, кулера стоят.
shweew
standby проще, но как то не все хотят из него выходить, причём закономерности нет, что бы отловить глюк.
ArjLover
Нерабочих часов у служебного компа не 10, а 15, но все равно… Что-то меня гложут сомнения. Неважно сколько компов, интересно сколько это рабочее место приносит прибыли и какая доля электричества в этой прибыли. Думаю что мизерная.
С другой стороны — включенный комп на работе, тем более неадминский и тем более тонкий клиент не имеет никакого смысла. И если это можно потюнить, то почему бы и нет?
Сам я комп не выключал уже лет 15. Могу себе позволить удовольствие сесть за работающий комп в любой момент. )) Кстати пользуясь случаем посчитаем. Весь мой «угол» включен через розетку со счетчиком, там 100+ ватт, с погашенным монитором и без лампы ну пусть будет 80, я сижу много, остается 12 часов нерабочих часов, итого 0,96 киловатта, по 5 чешских крон = 5 крон или 11 рублей в день? Фигня какая за такое удовольствие.
shweew
Да какая разница сколько экономится, главное что это происходит, причём без каких-либо вложений.
shweew
100 таких компов — 1100 в день, в месяц, грубо, 33 круб, как-то на фигню не похоже, больше з/п 1 сотрудника.