как запустить последовательность команд при запуске?

Мне нужно запустить последовательность команд при запуске. Эта последовательность также требует пароля root. Как я могу это сделать?

Это, в частности, последовательность команд, которые мне нужно выполнить:

virginia@asus-F552CL:~$ cd MT7630E_Wi-Fi_BT_Source_Release_20140625/rt2x00/
virginia@asus-F552CL:~/MT7630E_Wi-Fi_BT_Source_Release_20140625/rt2x00$ sudo su
[sudo] password for virginia: 
root@asus-F552CL:/home/virginia/MT7630E_Wi-Fi_BT_Source_Release_20140625/rt2x00# ./load.sh
root@asus-F552CL:/home/virginia/MT7630E_Wi-Fi_BT_Source_Release_20140625/rt2x00# exit
virginia@asus-F552CL:~/MT7630E_Wi-Fi_BT_Source_Release_20140625/rt2x00$ 
0
задан 14 July 2014 в 20:48

2 ответа

Так как Вы упомянули, что имели необходимость сделать sudo su, я предполагаю, что Вы хотите, чтобы эти команды были выполнены после входа в систему.

Для этого необходимо будет поместить команды в файл сценария, скажем, myCom.sh. Содержание было бы похоже ниже:

cd MT7630E_Wi-Fi_BT_Source_Release_20140625/rt2x00/
echo myPassword | sudo -S su && sudo su -c ./load.sh

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

Также "myPassword" должен быть обеспечен в простом тексте.

Тогда Использование менеджер по запуску Ubuntu KDE/для запуска этого сценария. Или Вы могли поместить этот файл непосредственно в ~/.profile.

, С другой стороны, если Вы хотите выполнить эти команды на запуске, а не входе в систему, Вы могли бы использовать init сценарии. Вы не должны будете использовать sudo su там, когда все будет работать в корневом контексте.

0
ответ дан 14 July 2014 в 20:48

Можно изменить Ваш файл/etc/rc.local , который выполняется как последний сервис в последовательности запуска уровня выполнения, и это дает корневое разрешение.

Вот пример:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
cd /home/virginia/MT7630E_Wi-Fi_BT_Source_Release_20140625/rt2x00
/bin/bash load.sh
exit 0

Проверяют Ваше изменение с этой командой:

sudo /etc/init.d/rc.local start

отметьте следующие моменты:

  1. load.sh будет работать как корень
  2. , среда ограничивается, таким образом, Вы, возможно, должны определить отсутствующие переменные
  3. , если Вы хотите войти системный журнал , используйте logger "message"

, Если возможно, я предлагаю, чтобы Вы выполнили свой сценарий как это:

  /bin/bash /home/virginia/MT7630E_Wi-Fi_BT_Source_Release_20140625/rt2x00/load.sh

На Ubuntu runlevel запускаются, когда filesystem and static-network-up событие имеет место. Если необходимо запустить load.sh в конкретном событии, чем лучше, определяют новомодная задача .

0
ответ дан 14 July 2014 в 20:48

Другие вопросы по тегам:

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