Deutsch
Germany.ruФорумы → Архив Досок→ Linux & Co

Скрипт: выполнение команд через интерактивный режим

1656  
Regenwolke местный житель23.05.19 10:44
Regenwolke
23.05.19 10:44 

Всем привет!

Нужно состряпать скрипт для выключения системы.

Непосредственно ее выключение выполняется через консоль конфигурации: набираешь команду для захода туда и в интерактивном режиме уже шлешь Befehl-и для выключения - shutdown all -> 'Enter', потом еще подтверждение yes -> 'Enter'.

Подскажите, пожалуйста, кто знает, как бы это отослать, чтоб все выполнялось последовательно и автоматически?..

Вроде есть способ, но не знаю точно.

Искать в нете пробовала, но у меня проблема сформулировать то, что надо )) Мне выдает варианты, как например создать скрипт для интерактивного режима (принятия ввода). Как раз ЭТО мне НЕ нужно ))

Спасибо!


#1 
НуПогоди старожил23.05.19 12:33
NEW 23.05.19 12:33 
в ответ Regenwolke 23.05.19 10:44
но у меня проблема сформулировать то, что надо

да, я действительно не понял, что именно нужно...


чтоб все выполнялось последовательно и автоматически?..

вам нужен скрипт, чтобы запустив его, можно было не жать доп. подтверждений? молчаливое выключение компа? так для этого вроде было достаточно написать в обычной консоли (терминале) простейшее shutdown now (ну там ключи добавить вроде -r, если нужен ребут). А уж как вы запустите это -- из обычной консоли или через скрипт, последовательно или параллельно, автоматически или вручную -- дело ваше.


Или вам все же нужно что-то другое? тогда лучше все же уточнить смысл всех этих телодвижений.

В игноре: novijpolzovatel, klepan, Счастьевдруг, Ganegut и клоны, zenturiy
#2 
dArtagnan постоялец23.05.19 13:05
dArtagnan
NEW 23.05.19 13:05 
в ответ Regenwolke 23.05.19 10:44

Для убунты:

gsettings set com.canonical.indicator.session suppress-logout-restart-shutdown false

Потом shutdown. Сам не проверял - на работе под рукой нет линуховой машины.

#3 
Regenwolke местный житель23.05.19 13:55
Regenwolke
NEW 23.05.19 13:55 
в ответ НуПогоди 23.05.19 12:33

Ой да...)) в этом и есть проблема формулировки. Ок, попробую конкретно на примере.

вам нужен скрипт, чтобы запустив его, можно было не жать доп. подтверждений?

В общем и целом - да, нужно так.

Скрипт должен запускаться на удаленной машине, которая коннектится к этой системе и посылает команды для выключения всех узлов кластера.

Проблема в том, что эти команды выполняются только в интерактивной консоли конфигурации, в которую нужно предварительно зайти.

Если конкретно, опишу как выглядит процесс выключения системы через CLI:

1) логинишься на ней root-ом

2) isi config >>>> попадаешь в консоль конфигурации

3) Отсюда уже работаешь в интерактивном режиме. Набираешь в нем shutdown all -> Enter

4) Потом подтверждаешь yes -> Enter


Как бы отослать эту всю последовательность (что выделена жирным) сразу?..

#4 
Regenwolke местный житель23.05.19 13:56
Regenwolke
NEW 23.05.19 13:56 
в ответ dArtagnan 23.05.19 13:05

У меня FreeBSD (OneFS)

#5 
dArtagnan постоялец23.05.19 14:06
dArtagnan
NEW 23.05.19 14:06 
в ответ Regenwolke 23.05.19 13:56

Вам нужен телепат. Если хотите, чтобы вам помогали, то информацию не выдавливайте из себя по каплям после наводящих вопросов. Систему и desktop environment указывайте сразу хотя бы.

Гуглите по ключевым словам "command shutdown without confirmation" для вашей конфигурации (указываете дополнительно систему и DE).

#6 
НуПогоди старожил23.05.19 14:30
NEW 23.05.19 14:30 
в ответ Regenwolke 23.05.19 13:55, Последний раз изменено 23.05.19 14:54 (НуПогоди)

Уже понятнее... Скрипт на удаленной машине.

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 становится неактивной, а бежать к компу с лубунту и проверять, выключился ли он, просто лень)

В игноре: novijpolzovatel, klepan, Счастьевдруг, Ganegut и клоны, zenturiy
#7 
Regenwolke местный житель23.05.19 14:35
Regenwolke
NEW 23.05.19 14:35 
в ответ dArtagnan 23.05.19 14:06, Последний раз изменено 23.05.19 14:36 (Regenwolke)

Да пожалуйста, если нужно:


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


Мне не нужны никакие телепаты, а пытаясь получить ответ, вот консультируюсь тут, и , соответственно, готова к уточняющим вопросам.

Что, например, нужно уточнить из предпоследнего от меня сообщения выше? Где описано, как должен работать скрипт

#8 
Regenwolke местный житель23.05.19 14:58
Regenwolke
NEW 23.05.19 14:58 
в ответ НуПогоди 23.05.19 14:30, Последний раз изменено 23.05.19 14:59 (Regenwolke)
1. Первая проблема,

Это да, нюанс скорее, в принципе не такая уж и проблема. Тут она реализована в виде передачи ключей, и понеслась...

2. Другая проблема связана уже непосредственно с вашей хитрой конф.консолью

Ну, наверное, другими словами оболочка (консоль) она та же:

echo $0
-zsh

просто после ввода isi config попадаешь в интерактивный режим CLI (конфигурации)

и оттуда уже только ручками


#9 
НуПогоди старожил23.05.19 16:03
NEW 23.05.19 16:03 
в ответ Regenwolke 23.05.19 14:58, Последний раз изменено 23.05.19 16:04 (НуПогоди)
просто после ввода isi config попадаешь в интерактивный режим CLI (конфигурации) и оттуда уже только ручками

Как уже писал, с такой же проблемой, как у вас, не сталкивался, с BSD системами никогда не работал. Могу лишь предполагать: если нужные команды доступны только после ввода isi config, выясняйте, что это за чудо такое запускается, проверяйте доп. ключи, пробуйте передать аргументы и тд. Для начала можно вообще просто тупо написать все консольные команды одну за другой через амперсанды Короче, надо играться и играться видимо придется самой, т.к. тут на германке, помнится, только один человек с фряхой активно работал...

В игноре: novijpolzovatel, klepan, Счастьевдруг, Ganegut и клоны, zenturiy
#10 
dArtagnan постоялец23.05.19 16:30
dArtagnan
NEW 23.05.19 16:30 
в ответ Regenwolke 23.05.19 14:35, Последний раз изменено 23.05.19 16:41 (dArtagnan)

Я написал, что является минимальной информацией. Файловая система в данном случае не интересует.

И где тут про DE?


ЗЫ. Вообще, вопрос уместнее было бы задать на ЛОРе. Здесь вероятность встретить спеца требуемой квалификации низковата.

ЗЗЫ. В ЛОР-е я тоже не уверен. Лучше шерстить англоязычные ресурсы.

#11 
Regenwolke местный житель24.05.19 13:59
Regenwolke
NEW 24.05.19 13:59 
в ответ dArtagnan 23.05.19 16:30, Последний раз изменено 24.05.19 14:01 (Regenwolke)
Файловая система в данном случае не интересует.

Упомянута и операционная система , если что ;))

ЗЫ. Вообще, вопрос уместнее было бы задать на ЛОРе. Здесь вероятность встретить спеца требуемой квалификации низковата.ЗЗЫ. В ЛОР-е я тоже не уверен. Лучше шерстить англоязычные ресурсы.

Ок, поняла. Я исходила из соображений, может найдется кто имеет расширенный навык написания шелл скриптов. У меня к сожалению, опыта в этом маловато.

#12 
Regenwolke местный житель24.05.19 14:35
Regenwolke
NEW 24.05.19 14:35 
в ответ НуПогоди 23.05.19 16:03

Ребятыыыыы...))))

Кажется, (ну или почти) нашла.

Если кому интересно.

Еще пока не совсем элегантное решение, но хоть что-то.

Общий принцип:

1) Пишется скрипт на самой системе, назовем его script, для ее выключения. Причем, пишется в таком виде (интерактивные команды выполняются до строки, заканчивающейся на "слово"):

isi config <<[слово]

shutdown all

yes

[слово]

2) с удаленного клиента его запускаем вот так:

ssh -t root@server './script; zsh'

Таким образом устанавливаем с уд. клиента соединение с оболочкой этой системы и можно видеть весь output в процессе выключения. Ну а после выключения сессия сама отфутболится.

По вопросу пункта 1) - По наводке вот здесь: up

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...


Может оказаться, что неактуально, т.к. изначально имелась проблема в объяснении сути...)))) Так что, сорри! И спасибо за попытку помочь!flower


#13 
madmonkey местный житель19.10.19 23:12
madmonkey
NEW 19.10.19 23:12 
в ответ Regenwolke 23.05.19 13:55

звиняюсь что ветку поднял, незнаю что за система

1) логинишься на ней root-ом
2) isi config >>>> попадаешь в консоль конфигурации
3) Отсюда уже работаешь в интерактивном режиме. Набираешь в нем shutdown all -> Enter
4) Потом подтверждаешь yes -> Enter
isi config >>>> попадаешь в консоль конфигурации

shutdown all&&yes


такая команда не?

Rule your mind or it will rule you (Buddha)
#14