Как выключенного безголовый машины с помощью скрипта

У меня есть Java-приложение, которое запускается автоматически при безголовый машина (сервер Ubuntu 14.04) загружается и работает как пользователь. При завершении приложения оно мне нужно выполнить скрипт для выключения, потому что внешний выключатель были брошены, который будет отрезать питания.

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

Мои попытки написать сценарий все выльется в запрос пароля супер-пользователя. Я могу согласиться с паролем присутствовать в тексте в сценарии как машина изолирована от интернета.

Я не эксперт в bash или Linux.

разрешения скрипта:

$ LS-Ла-выключение
-rwsr-XR-х 1 корень 209 18 марта 16:55 отключение
+510
J Parko 10 дек. 2013 г., 11:29:12
29 ответов

Язык может меняться, какие символы соответствуют [а-Z]. Использовать

(Значение lc_all=с; РМ [а-Z]*)

чтобы исключить влияние. (Я использовал оболочку для локализации изменений).

+997
collin moore 03 февр. '09 в 4:24

Я пишу скрипт, который должен задать для пользователя пароль, сделать некоторые вещи с ним и в конце концов передать его для суда. Это примерно как это выглядит:

Эхо "введите пароль: "
читать -с паролем
функции printf "\Н"

Эхо $пароль | судо -с <somecommand> | <что нужно>

Все это работает как надо, но судо выходы "[суда] пароль для пользователя: "всякий раз, когда я вызываю скрипт. Я хотел бы сократить, но оставить всех остальных выходных. Это то, что я пытался для :

команда grep -v и -Е "[суда] пароль для пользователя "
на awk -е"[ ',]+" '/[команду sudo] пароль для пользователя:/{печати $2}'
СЭД -Ан "с/[судо[ пароль для пользователя: '(.*)',/\1/п"

Очевидно, поскольку я здесь ничего из этого не сработало. Кто-нибудь есть идея, как это сделать?

+991
Robert Simmons 24 мая 2012 г., 09:54:27
Другие ответы

Связанные вопросы


Похожие вопросы

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

см https://stackoverflow.com/questions/26329186/creating-a-raw-printer-queue-in-cups-host-and-adding-them-through-cups-client

+967
LYF 3 мар. 2013 г., 00:54:36

Без лучшего ответа я беру приблизительно:

ВАР=$(тр '\Н' < базы данных.в SQL | грэп -1 м-не 'ул' | вырезать -Ф1 -д:) ; руководитель -Н$ВАР журнала.журнал | грэп -М 1 'вставить в'

Я предпочитаю тот, который может начаться в строке X и идите, пока не найдете НТР, но это работает.

+966
matrixA 8 дек. 2017 г., 05:59:46

Я ищу способ реализовать довольно простой, как у Cisco интерфейс командной строки на моем сервере Ubuntu бытовой техники (12.04 в частности).

Я наткнулся на следующий проект: CLISH однако, документация, эскиз и это, кажется, довольно устаревшие.

У кого-нибудь есть опыт с такого рода вещи, и может вы знаете какие-то похожие проекты / подходов?

+905
Warkst 1 мая 2012 г., 21:31:57

Мне было интересно, Как выполнить команду Файл, в котором: после входа в систему в качестве обычного пользователя, я хочу сменить пользователя в "имя пользователя" с пароль "пароль", я могу успешно выполнить command.txt используя пакетный файл, Эхо-тестирование.

Однако, я понятия не имею как включить пароль в командный файл, который выполняется с помощью пакетного файла при попытке переключения пользователем.

P. S это когда я уже внутри SSH-сессии обычного пользователя.

+903
Fgtcxdfgh 7 июл. 2011 г., 08:19:57

У меня есть несколько файлов с именами на иностранных языках в моей папке терминала. На терминале, когда я делаю 'ЛС' я вижу в списке справа на рисунке ниже.

enter image description here

Когда я делаю команду ls-Т | хвост -п +2, я вижу реальные символы, как на картинке ниже.

enter image description here

Я бы хотела написать список имен файлов в оригинальных персонажей, как во 2-й рисунок в файл CSV? Есть ли способ сделать это? Я находил очень похожие вопросы, но имена были не на те вопросы. Вот как это выглядит, если я использую ЛС-Т | хвост -п +2 > файлы.КШМ

enter image description here

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

На MobaXterm, когда захожу в настройки на терминале кодировка выбрана как UTF-8(кодировка). Кроме того, я проверил, если я вижу в UTF-8.

~$ локализации -
С
С. кодировке UTF-8
В POSIX
+868
Felisa 9 июл. 2012 г., 13:31:16

Посмотрите на инит , который является традиционным процессом стартер и запускает скрипты в каталоге/etc/инит.Д, в/etc/ник1.ди т. д. и в/etc/файл RC.местные, что, вероятно, место, которые вы хотите.

Некоторые дистрибутивы используют выскочка вместо этого - если это так, посмотрите на Docs для этого.

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

+806
zutim ama 20 февр. 2016 г., 03:01:28

Вы можете использовать найти(1), например :

найти ./ -inum 191321

Хотя, это может быть немного медленно.

+762
Yatin Goyal 14 нояб. 2018 г., 09:05:09

Testdisk-это то, что я хотел бы использовать.

Ссылка на Testdisk скачать

Нет ее,и я не думаю, что это вероятно, но, возможно, там был какой-то автоматическую разметку как есть во многих системах Linux, которую вы, возможно, забыли поменять?

Тем не менее testdisk, как правило, делает работу для меня.

+614
DzMob Nadjib 19 июл. 2016 г., 02:45:09

Я бы сделал что-то вроде:

функция eval "$(#"
 на Perl -MString::ShellQuote -00 -лне '
 если (/^(.+)\Н(.+)/) {
 ($версия V1, $V2, а $остаток) = ("sensors_$1", "$2", $'\");
 # $версия v1, $v2 и содержать первые 2 строки, $остальное всем остальным.

 с/Ж\/_/Г за $В1, $В2;
 # замена слов-символов с _ в переменные

 печать "В1$=" . shell_quote("$1\n$с 2$остаток");
 печать "${В1}__В2$=" . shell_quote("$2$остаток");
 # выходной определение переменной заботясь о том, чтобы процитировать значение

 в то время как ($остальные =~ /^(.*?):\с*(.*)/ГМ) {
 # процесс "фу бар" строки в остальные
 ($В3,$Валь) = ("$1", $2);
 $В3 =~ ы/\ш/_/г;
 печать "${В1}__${П2}__В3$=" . shell_quote($Валь)
}
 }' < что-файл)"

-00 для пункт Режим. убрать пункт сепаратора от конца записи и для печати добавить одну на выход.

процесс ввода одной записи за раз.

На вашем примере, что Perl команда будет выводить следующие команды код:

acpitz-виртуальных-0 sensors_acpitz_virtual_0='
Адаптер: виртуальное устройство
temp1: +41.0°C (от Крита = +°95.0 с)'

датчики_acpitz_виртуальная_0__адаптер__виртуальная_устройство='адаптер: виртуальное устройство
temp1: +41.0°C (от Крита = +°95.0 с)'

датчики_acpitz_виртуальная_0__адаптер__виртуальная_устройство__temp1='+41.0°с (Крит = +°95.0 с)'

coretemp-Иса-0000 sensors_coretemp_isa_0000='
Адаптер: Адаптер для ISA
Ядро 0: +36.0°c (высокая = +90.0°C, в крит = +90.0°с)
Ядро 1: +36.0°c (высокая = +90.0°C, в крит = +90.0°с)'

датчики_coretemp_Иса_0000__переходника__Иса_переходника='адаптер: Иса адаптер
Ядро 0: +36.0°c (высокая = +90.0°C, в крит = +90.0°с)
Ядро 1: +36.0°c (высокая = +90.0°C, в крит = +90.0°с)'

датчики_coretemp_Иса_0000__переходника__Иса_переходника__базовый_0='+36.0°c (высокая = +90.0°C, в крит = +90.0°с)'

датчики_coretemp_Иса_0000__переходника__Иса_переходника__базовый_1='+36.0°c (высокая = +90.0°C, в крит = +90.0°с)'

И мы используем функцию eval "$(что-жемчужно-команда)" , чтобы сказать оболочке, чтобы оценить, что код вывода этой команды.

+567
Nikita Deshpande 10 апр. 2010 г., 09:43:41

Я пытаюсь Настройка удаленного рабочего стола Chrome на мой ВМ экземпляр (дистрибутив Debian GNU/Линукс, 9 (стрейч), для amd64) на Google облаке. Я попытался установить обновление Xfce в качестве рабочего окружения. Я успешно установил обновление Xfce компонента с этими команда.

судо × ыбран тип debian_frontend=неинтерактивных \
 АПТ установки --предположим-да xfce4 рабочего стола-база

Но я получаю разрешение ошибки даже с помощью судо с этой командой.

Эхо "метод exec /usr/Бен/xfce4-сессии" > в /etc/хром-удаленного-стола-сессии

Так, я stucked в середине процесса. Вот скриншот из терминала. terminal screenshot

Также я пробовала с корицей, но такое же разрешение ошибка показывает в одной команде.

судо Эхо "метод exec /usr/Бен/корица-сессии-cinnamon2d" > в /etc/хром-удаленного-стола-сессии
+565
Soo Wei Tan 2 янв. 2019 г., 23:36:17

В

 набор -о pipefail 

это довольно близко к тому, что вы хотите; это будет

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

Так что если у вас есть 40 команд по конвейеру вместе, и третья команда дает код возврата 8, а остальные успешно завершить, то общий код возврата будет равен 8. Чтобы выяснить, какая команда дала неверный код возврата будет сложно.

+561
tknomad 19 июл. 2014 г., 11:47:05

У меня есть скрипт, который выглядит примерно следующим образом.

найти /путь -типа F |
СЭД -ре "вещество" |
команды xargs -іх Ш-с '{
 Эхо "информация о x"
 ./ехе < х
читать
}'

Моя цель-обеспечить каждого файла в размер в качестве входных данных в EXE-файл. Однако, я не хочу, чтобы на выходе ехе должны быть предоставлены все сразу. Вместо этого, я хотел бы изучить выходной EXE-файл для каждого файла, а затем продолжать после того, как я обучусь, что выходной. Таким образом, я читал.

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

Обратите внимание, что я не ищу способ спать исполнения команды xargs. Скорее, я ищу способ, чтобы приостановить команды xargs, потенциально бесконечно, пока пользователь не желает продолжать.

+556
Walter Fabio Simoni 24 окт. 2019 г., 21:31:20

Пользователи могут без паролей. Это просто очень одобряется практика.
Низкий уровень инструментов, как команду поддерживают (англ -д' , чтобы сделать пароль пустой). Но высокие удобные инструменты уровень, который обеспечивает распределение, как правило, что не позволит.

Имейте в виду, что Linux и большинство дистрибутивов предназначены в первую очередь как серверная операционная система, с вторичного использования в качестве настольной ОС.

+545
Monica Medrano 19 сент. 2010 г., 07:55:00

Я всегда сталкиваются с проблемами диагностики базовой машины всякий раз, когда я назначить статику IP-адресов виртуальных машин. Я тоже не понимаю, что шлюз IP должен я дать,чтобы подключиться к интернету или просто, чтобы быть в состоянии пинговать базовой машины. Просьба оставить объяснение как можно более простым. Я использую виртуальную окне виртуальной машины в Oracle. Спасибо!

+514
Axel Prieto 2 янв. 2010 г., 23:26:22

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

С Bash (и другие снаряды) вы можете использовать {,} оператор для желаемого эффекта:

СР -Р ~/copyDest/*{2[0-9],3[0-2]}* ~/pasteDest

Но будьте осторожны, есть различия. Это все равно, что писать

СР -Р ~/copyDest/*2[0-9]* ~/copyDest/*3[0-2]* ~/pasteDest

Это означает, что если одна из моделей не соответствует ни один файл, он будет передан в качестве аргумента СР, и СР будет жаловаться, что файл не существует. Вы можете установить nullglob оболочки параметр, чтобы избежать этого.

+464
skrunic 27 дек. 2012 г., 16:34:53

На Wheezy и я вам

[email protected]:/home/faheem# АПТ-файл poppler поиск.ч
emscripten: /usr/доли/emscripten/тесты/poppler/Глеб/poppler.ч
emscripten: /usr/share/emscripten/tests/poppler/glib/reference/html/poppler-poppler.html
emscripten-док: /usr/share/emscripten/demos/poppler.html
libpoppler-Глиб-Дев: в /usr/включать/poppler/Глеб/poppler.ч
libpoppler-Глеб-Дев: /usr/share/doc/libpoppler-glib-dev/html/poppler/poppler-poppler.html
libpoppler-Глиб-док: /usr/share/gtk-doc/html/poppler/poppler-poppler.html

У вас есть libpoppler-Глеб-Дэв или подобное установлено?

Также, вы действительно имею в виду

<#включить <в/usr/включать/poppler/Глеб/poppler.ч>

? Я думаю, что вы хотите, что-то вроде

#включить <poppler/Глеб/poppler.ч>
+450
QMan2488 14 нояб. 2010 г., 15:13:27

Монтажники меняются многие системные файлы. Система может перестать загружаться, если какой-то сбой во время обновления программного обеспечения. Однако, это практически невозможно обеспечить атомарность даже просто один файл записи. Как все это решается в установщики системы Unix? Они файловой системы зависит?

+400
SourceAura 15 окт. 2016 г., 16:39:41

Вот два решения, где Н - файлы будут добавлены в один архив и все файлы сначала объединяются, а потом молнии.

Общие действия для обоих подходов являются:

# Создать список файлов в zip-архиве
найти . -тип F > список

# Цикл для обработки файлов поэтапно
Н=50000
fileno=1

для меня в $(сл 1 $н $(туалет, умывальник -л < список_файлов)); делать
 # код сжатия идет здесь, см. ниже
сделано

Zip-файлы по отдельности

# автоматическая генерация имени 
zip-файл=$(е "%04d для" $((fileno++)))

# экстракт линий $я $Я$Н-1 в список 
СЭД -п "$я,$((Я+Н-1))п" список | индекс $zip-файл [email protected]

Сцепить и ZIP

Если вы хотели сделать это с помощью gzip (и другие компрессоры) было бы очень просто:

zip-файл=$(е "%04d для" $((fileno++)))
СЭД -п "$я,$((Я+Н-1))п" список файлов | команды xargs кот | gzip-сжатия > $zipfile.gz

Как молния не поддерживает этот режим (по крайней мере, не один я), нужен другой подход. зип поддерживает именованные каналы (интернет), где файл внутри архива получает имя именованного канала, поэтому делать что-то вроде этого внутри цикла должно работать:

zip-файл=$(е "%04d для" $((fileno++)))
mkfifo $zip-файл
зип-Fi интернет $zip-файл $zip-файл &
СЕПГ -н "$я,$((Я+Н-1))п" список файлов | команды xargs кошка > $zip-файл
РМ $zip-файл
+381
rrrub 27 февр. 2011 г., 06:25:28

Мне нужно выполнить скрипт на запуск кали линукс. Я использую версия 2016.1 кали линукс.

я пробовал многие вещи, как вертолет.местные, первонач.д, X11 и GDM3 config и др. но я не мог заставить его работать.

Это shell-скрипт, который я хочу выполнить:

#!/бин/Баш

расширения xrandr --использованием newmode 1366х768 85.500 1366 1494 1624 1798 768 770 776 795 +hsync -величина
расширения xrandr --addmode VGA в-0 1366х768
расширения xrandr --выход VGA-0 --режим 1366х768
+349
Timea Watkins 30 янв. 2012 г., 08:14:01
грэп -сер <(грэп -в file_1 file_2 | рода -у) file_1

file_1

1
GACGGAGGATGCAAGTGTTATCCGGAATCACTGGGCGTAAAGTTTTTTTTT
2
GACGGAGGATGCAAGTGTTATCCGGAAT
3
GACGGAGGATGCAAGTGTTATCCGGAATCACTGGGCGTAAAGCGTCC
4
GACGGAGGATGCAAGTGTTATCCGGAATCACTGGGCCGTCCGTAG

file_2

GACGGAGGATGCAAGTGTTATCCGGAATCACTGGGCGTAAAGC
GACGGAGGATGCAAGTGTTATCCGGAATCACTGGGCGTAAAGCG
GACGGAGGATGCAAGTGTTATCCGGAATCACTGGGCGTAAAGCGTCC
GACGGAGGATGCAAGTGTTATCCGGAATCACTGGGCGTAAAGCGTCCGTAG

Выход

1
GACGGAGGATGCAAGTGTTATCCGGAATCACTGGGCGTAAAGTTTTTTTTT
2
3
4
GACGGAGGATGCAAGTGTTATCCGGAATCACTGGGCCGTCCGTAG
+287
bryan hunt 27 авг. 2014 г., 10:41:48
ПС-у "ваш_login" | грэп "сон" | у awk '{печати $1}'
+275
jbwiv 28 июн. 2017 г., 11:31:14

Название сессии хранится в переменной , чтобы открыть его в , вы можете сделать

дисплей-сообщение -п tmux "#Ы"

Если вы хотите использовать его .tmux.конф, это просто . Обратите внимание, что в -п вариант будет печатать сообщения на stdout, в противном случае выводится сообщение в статус линии.

Если приведенная выше команда называется внутри сессии, она возвращает имя сессии. Если это называется вне сессии, он по-прежнему возвращает имя последнего еще сеанс. Я не мог найти команду, чтобы проверить, если внутри сессии или нет, поэтому мне пришлось придумать это обойти:

список-сессий tmux | СЕПГ -Н '/(прилагается)/с/:.*//Р'

список tmux-сессии показывает все сеансы, если человек привязан, он показывает (прилагается) в конце. С мы подавляем всех выходной (вариант ), где кроме нас находят по ключевым словам (прилагается), в этой строке мы срезаем все, что после :, что значит имя сессии. Это работает для меня внутри и вне сеанса, в отличие от tmux дисплее-сообщение -п "#ы".

Конечно это работает только если нет : а нет (прилагается) на имя сессии.

Как прокомментировал Крис Йонсен, способ проверить, если один находится внутри сессии, чтобы увидеть, если переменная окружения установлена:

[[ -Н "${TMUX+комплект}" ]] && дисплей-сообщение -п tmux "#Ы"
+239
user20089 8 окт. 2015 г., 06:01:45

Попробовать вновь владения свои файлы.
судо Чаун -Р имя пользователя:имя пользователя /Home/имя_пользователя

Это не должно испортить ничего (как файлы в ваш дом должны принадлежать собственных пользователей). Кстати... хром дал мне эту ошибку, когда я понижен. (Мне пришлось удалить свой профиль и использовать синхронизацию.)

+136
Muheeb 18 июл. 2018 г., 03:43:30

В lscpu, если установлено, синтезировать как-то информацию, предоставленную кошка /proc/cpuinfo для. В частности, вы можете взглянуть на месторождениях процессор(ы), ядро(ы) в гнезда и гнездо(с).

+101
Barbara Anne Ryan 22 мар. 2014 г., 03:50:32

Я пытаюсь использовать https://unix.stackexchange.com/a/315667/21372 временное СР ошибок с помощью rsync, и я не могу заставить его работать. По сути, мне нужно, чтобы скопировать файлы или каталоги рекурсивно, используя rsync и похоже на то, что в rsync-а будет делать, но создавать файлы и каталоги с нормальным значением umask условия. Но это на один файл показывает, что он по-прежнему с сохранением разрешения конечного файла, хотя у меня указано - нет-завивка варианта:

в bash-4.1$ компакт-диск в /tmp
в bash-4.1$ сенсорный файл
в bash-4.1$ чмод а-Вт файл
в bash-4.1$ LS с ЛД файл
-р--р--р-- 1 пользователь группы 0 июл 24 16:50 файл
в bash-4.1$ по rsync --копия-ссылки --рекурсивный --раз --группы --нет-завивка файл afile2
в bash-4.1$ LS с ЛД файл*
-р--р--р-- 1 пользователь группы 0 июл 24 16:50 файл
-р--р--р-- 1 пользователь группы 0 июл 24 16:50 afile2
в bash-4.1$ 

То, что я хочу-это afile2 иметь такие же разрешения, как afile3 нормально:

в bash-4.1$ касания afile3
в bash-4.1$ LS с ЛД afile3
-РВ-РВ-Р-- 1 пользователь группы 0 июл 24 16:51 afile3

Могу ли я использовать "жесткие" найти команду, как указано в https://unix.stackexchange.com/a/315667/21372 но я бы предпочел не иметь накладных расходов на последующее найти команду, чтобы делать то, что я считаю, что в rsync --нет-завивка опция должна делать.

Это нужно для работы в пользовательском пространстве (не требует root).

Это ошибка rsync или ошибки пользователя?

ОС и версия rsync для работы:

в bash-4.1$ команду -р-я
Идентификатор дистрибьютор: RedHatEnterpriseWorkstation
Релиз: 6.8
в bash-4.1$ по rsync --версия
синхронизировать версии протокол версии 3.0.6 30
Авторское право (c) 1996-2009 исполнителя Andrew Tridgell, Уэйн Дэвисон и другие.
Веб-сайт: http://rsync.samba.org/
Возможности:
 64-битные файлы, 64-разрядная inums, 64-битной метки, 64-разрядных целых чисел,
 socketpairs, жестких ссылок, символические ссылки, протокола IPv6, batchfiles, на месте,
 добавьте, списки, xattrs, то iconv, symtimes

по rsync поставляется без всяких гарантий. Это бесплатное программное обеспечение, и вы
приглашаетесь повторно распространять ее при определенных условиях. Ознакомиться с лицензией GNU
Генеральная публичная лицензия для деталей.
в bash-4.1$ 
+74
David Stapleton 30 нояб. 2015 г., 03:01:53

За счет комбинированного использования в Debian стрейч, которые использует systemd не по умолчанию, а sdwdate (который использует медленные часы регулятор ( гр )), мои часы часто менять.

В результате journalctl -Ф получает бесконечно донимать.

[...]
07 ноября 13:46:49 хозяин systemd в[766]: время изменилось
07 ноября 13:46:50 хозяин systemd в[766]: время изменилось
07 ноября 13:46:51 хозяин systemd в[766]: время изменилось
[...]

Это не было проблемой на Debian хриплый, который используется с sysvinit.

Как systemd не может быть настроен так, чтобы не отправить время было изменено сообщение в журнале?

В связи с этим вопрос , Как отключить systemd в "время изменилось" спам-сообщения в /var/журнал/syslog на Debian Джесси? была решена, но это решение не будет работать здесь.

+73
Jane Garthson 21 нояб. 2010 г., 00:12:00

Мне нужно знать, как убить все процессы пользователя, выполнившего вход, кроме первого, в Linux и RedHat 6.

например, AZain пользователя в несколько раз, с разных машин, поэтому мне нужно, чтобы только первый процесс и убить всех остальных для данного пользователя:

кто -у
AZain ПЦ/2 2016-06-23 08:34 . 27191 (на localhost)
AZain ПТС/4 2016-06-23 09:01 . 28885 (на localhost)
корень оч/0 2016-06-23 08:14 . 25962 (10.11.155.23)
AZain оч/1 2016-06-23 08:34 00:27 27169 (10.11.155.23)
AZain оч/3 2016-06-23 09:01 . 28867 (10.11.155.14)

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

+36
Pallavi Sripada 19 янв. 2015 г., 23:20:27

Показать вопросы с тегом