Скрипт: выполнение команд через интерактивный режим
Всем привет!
Нужно состряпать скрипт для выключения системы.
Непосредственно ее выключение выполняется через консоль конфигурации: набираешь команду для захода туда и в интерактивном режиме уже шлешь Befehl-и для выключения - shutdown all -> 'Enter', потом еще подтверждение yes -> 'Enter'.
Подскажите, пожалуйста, кто знает, как бы это отослать, чтоб все выполнялось последовательно и автоматически?..
Вроде есть способ, но не знаю точно.
Искать в нете пробовала, но у меня проблема сформулировать то, что надо )) Мне выдает варианты, как например создать скрипт для интерактивного режима (принятия ввода). Как раз ЭТО мне НЕ нужно ))
Спасибо!
но у меня проблема сформулировать то, что надо
да, я действительно не понял, что именно нужно...
чтоб все выполнялось последовательно и автоматически?..
вам нужен скрипт, чтобы запустив его, можно было не жать доп. подтверждений? молчаливое выключение компа? так для этого вроде было достаточно написать в обычной консоли (терминале) простейшее shutdown now (ну там ключи добавить вроде -r, если нужен ребут). А уж как вы запустите это -- из обычной консоли или через скрипт, последовательно или параллельно, автоматически или вручную -- дело ваше.
Или вам все же нужно что-то другое? тогда лучше все же уточнить смысл всех этих телодвижений.
Ой да...)) в этом и есть проблема формулировки. Ок, попробую конкретно на примере.
вам нужен скрипт, чтобы запустив его, можно было не жать доп. подтверждений?
В общем и целом - да, нужно так.
Скрипт должен запускаться на удаленной машине, которая коннектится к этой системе и посылает команды для выключения всех узлов кластера.
Проблема в том, что эти команды выполняются только в интерактивной консоли конфигурации, в которую нужно предварительно зайти.
Если конкретно, опишу как выглядит процесс выключения системы через CLI:
1) логинишься на ней root-ом
2) isi config >>>> попадаешь в консоль конфигурации
3) Отсюда уже работаешь в интерактивном режиме. Набираешь в нем shutdown all -> Enter
4) Потом подтверждаешь yes -> Enter
Как бы отослать эту всю последовательность (что выделена жирным)
сразу?..
Вам нужен телепат. Если хотите, чтобы вам помогали, то информацию не выдавливайте из себя по каплям после наводящих вопросов. Систему и desktop environment указывайте сразу хотя бы.
Гуглите по ключевым словам "command shutdown without confirmation" для вашей конфигурации (указываете дополнительно систему и DE).
Уже понятнее... Скрипт на удаленной машине.
1. Первая проблема, которую я тут вижу, это рут. Чтобы создать и выполнить такой скрипт от имени обычного юзверя надо либо вписать туда в явном виде пароль рута (что как бы очень не кошерно) либо предварительно вписать себя в список /etc/sudoers . Что-то типа
Regenwolke ALL=(root) NOPASSWD: /home/Regenwolke/script_to_shutdown_everything.sh
Точно не помню, надо гуглить и пробовать
2. Другая проблема связана уже непосредственно с вашей хитрой конф.консолью, т.к. у меня на самой обычной консоли, к которой я вот прямо сейчас коннекчусь на работе через putty (с ХП на старую Лубунту) вполне себе работает традиционнaя команда sudo shutdown -r now (пароль для sudo ввожу руками, т.к. себя в судоерах не добавлял) Я не имею ни малейшего представления, что за консоль такая: можно ли в ней отключить подтверждения? можно ли ей при запуске передавать аргументы и тд Может, кто другой поможет...
но я бы сперва попробовал на обычной консоли команду типа
echo 'password' | sudo -S shutdown now
PS. Вместо 'password' вставляете естественно пароль рута
P2S. Не уверен, что на ФриБСД все пойдет именно так, как надо, но у меня и пароль в sudo передается и лубунту перегружается (putty становится неактивной, а бежать к компу с лубунту и проверять, выключился ли он, просто лень)
Да пожалуйста, если нужно:
Isilon OneFS sysbfs-5 v8.1.2.0 Isilon OneFS v8.1.2.0 B_8_1_2_016(RELEASE): 0x801025000000010:Sun Mar 17 19:21:35 PDT 2019 root@sea-build10-09:/b/mnt/obj/b/mnt/src/sys/IQ.amd64.release FreeBSD clang version 3.3 (tags/RELEASE_33/final 183502) 20130610 amd64
Мне не нужны никакие телепаты, а пытаясь получить ответ, вот консультируюсь тут, и , соответственно, готова к уточняющим вопросам.
Что, например, нужно уточнить из предпоследнего от меня сообщения выше? Где описано, как должен работать скрипт
1. Первая проблема,
Это да, нюанс скорее, в принципе не такая уж и проблема. Тут она реализована в виде передачи ключей, и понеслась...
2. Другая проблема связана уже непосредственно с вашей хитрой конф.консолью
Ну, наверное, другими словами оболочка (консоль) она та же:
echo $0
-zsh
просто после ввода isi config попадаешь в интерактивный режим CLI (конфигурации)
и оттуда уже только ручками
просто после ввода isi config попадаешь в интерактивный режим CLI (конфигурации) и оттуда уже только ручками
Как уже писал, с такой же проблемой, как у вас, не сталкивался, с BSD системами никогда не работал. Могу лишь предполагать: если нужные команды доступны только после ввода isi config, выясняйте, что это за чудо такое запускается, проверяйте доп. ключи, пробуйте передать аргументы и тд. Для начала можно вообще просто тупо написать все консольные команды одну за другой через амперсанды Короче, надо играться и играться видимо придется самой, т.к. тут на германке, помнится, только один человек с фряхой активно работал...
Я написал, что является минимальной информацией. Файловая система в данном случае не интересует.
И где тут про DE?
ЗЫ. Вообще, вопрос уместнее было бы задать на ЛОРе. Здесь вероятность встретить спеца требуемой квалификации низковата.
ЗЗЫ. В ЛОР-е я тоже не уверен. Лучше шерстить англоязычные ресурсы.
Файловая система в данном случае не интересует.
Упомянута и операционная система , если что ;))
ЗЫ. Вообще, вопрос уместнее было бы задать на ЛОРе. Здесь вероятность встретить спеца требуемой квалификации низковата.ЗЗЫ. В ЛОР-е я тоже не уверен. Лучше шерстить англоязычные ресурсы.
Ок, поняла. Я исходила из соображений, может найдется кто имеет расширенный навык написания шелл скриптов. У меня к сожалению, опыта в этом маловато.
Ребятыыыыы...))))
Кажется, (ну или почти) нашла.
Если кому интересно.
Еще пока не совсем элегантное решение, но хоть что-то.
Общий принцип:
1) Пишется скрипт на самой системе, назовем его script, для ее выключения. Причем, пишется в таком виде (интерактивные команды выполняются до строки, заканчивающейся на "слово"):
isi config <<[слово]
shutdown all
yes
[слово]
2) с удаленного клиента его запускаем вот так:
ssh -t root@server './script; zsh'
Таким образом устанавливаем с уд. клиента соединение с оболочкой этой системы и можно видеть весь output в процессе выключения. Ну а после выключения сессия сама отфутболится.
По вопросу пункта 1) - По наводке вот здесь:
https://stackoverflow.com/questions/14995148/ssh-here-docu...
"Can I run a here document script over ssh on remote machine with interactive mode?"
Ну и вот тут: https://superuser.com/questions/261617/with-ssh-how-can-yo...
Может
оказаться, что неактуально, т.к. изначально имелась проблема в объяснении сути...)))) Так что, сорри! И спасибо за попытку помочь!
звиняюсь что ветку поднял, незнаю что за система
1) логинишься на ней root-ом
2) isi config >>>> попадаешь в консоль конфигурации
3) Отсюда уже работаешь в интерактивном режиме. Набираешь в нем shutdown all -> Enter
4) Потом подтверждаешь yes -> Enter
isi config >>>> попадаешь в консоль конфигурации
shutdown all&&yes
такая команда не?