Pull to refresh

Comments 23

ssh вход по ключам на все машины и ssh root@ shutdown -h now
А дальше обернуть это в обычный bash скрипт.

И никакого expect не надо.
Об этом есть в статье. Тем более вход рутом отключен
sudo тоже не тру-решение. Можно настроить разрешение только для ограниченного списка команд, но это не так интересно
Да ладно. В таком случае — man sudo. После чего в /etc/sudoers пишем что-то типа:
%admin ALL=(ALL:ALL) NOPASSWD: ALL

В результате — группа админов может запускать все без пароля через sudo.
Это перевод? Просто язык текста на столько трудно читаем. И цель стать какая? Показать как работает expect, или выключить компьютеры?
Просто в данном случае, авторизация по ключам команда shutdown, это цикл тело которого всего 1 строка, и без имитации поведения пользователя.
Про авторизацию по ключу уже написали.
чтоб лишний софт не запускали достаточно снять флаг exec с /usr/bin/firefox и монтировать /home и т.п. с noexec
А смысл? Для учебного процесса он нужен, дёргать флаги туда-сюда только для отключения браузера это слишком. Но для выпиливания флэша примерно так и сделали.

Опять же, зачем нам /home, из которого нельзя ничего запустить, если ученики часто запускают что-то своё в пользовательской зоне, и это нормально. Хотя в целом разрулить права на запуск потоньше тоже интересно
c flash вам это не поможет:
firefox плагин найдет в ~/.mozilla/plugins/libflashplayer.so
чтоб лишний софт не запускали
Может проще Restricted shell например rbash воспользоваться?
Посмотрите в сторону ansible, может пригодится вам. Может работать поверх ssh с паролем, выполнять скрипты/команды на удаленной системе через sudo.
Ну это уже автору топика решать- полезно ему будет ansible или нет.
Комментарии отлично дополняют статью, и всё что здесь написано будет полезно. Кто-то пойдёт другим путём, кто-то быстрее справится с expect
mssh список машин. В получившемся окне делаем killall -u username — задача решена. Если машин больше -цати, то используем параллельный запуск команды в цикле — получаем параллелизм для бедных. Всё решение задачи — половина однострочника.
expect {
"(yes/no)?*" {
send «yes\r» // не забывайте про \r в конце строки, перед кавычками. Иначе волшебства не получится
}

Попробуйте опцию StrictHostKeyChecking=no, тогда волшебства делать будет не нужно.
Об этом я тоже в курсе, но забыл добавить в статью. Хотя, в условиях гостевого кабинета, настройки ssh всё равно не поменять. Но интересующимся Ваш комментарий будет очень полезен
Не надо менять настройки клиента. Почитайте про флаг "-o" команды ssh.
UFO landed and left these words here
UFO landed and left these words here
А я всегда, видимо ошибочно, считал что expect это просто скрипт TCL/TK идущий в стандартной поставке TCL/TK. А он, оказывается, может быть установлен самостоятельно в /bin/, да?
Я просто оставлю это здесь для тех, кому хочется немного более подробный how-to про expect.
Sign up to leave a comment.

Articles