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

Мне нужно запустить последовательность команд при запуске. Для этой последовательности требуется пароль 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$ 

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

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

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

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

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

Затем запустите этот сценарий с помощью диспетчера запуска KDE / Ubuntu. Или вы можете разместить этот файл непосредственно в ~/.profile .

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

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

Вот пример:

 #!/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 будет выполняться как root
  2. среда ограничена, поэтому вам может потребоваться определить отсутствующие переменные
  3. если вы хотите войти в syslog , используйте logger "message"

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

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

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