Рейтинг:0

Выполнить видимый сценарий оболочки как sudo при входе в домашний каталог

флаг jp

У меня есть скрипт, который отлично работает, когда я помещаю его вручную в /дом/убунту каталог и запустите его вручную с правами sudo (он должен запускаться из каталога $ HOME).

Путь скрипта:

/home/ubunt/script.sh

..и выглядит так

#!/бин/баш
sudo add-apt-repository -y ppa:maas/3.0-next
судо подходящее обновление
sudo apt install -y maas jq markdown nmap traceroute git curl wget zfsutils-linux cloud-image-utils virtinst qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils whois
sudo maas createadmin --username ubuntu --password password --email [email protected] --ssh-import gh:wt-b
...

Я хочу, чтобы он запускался при входе в систему (один раз), и мне нужно видеть, что происходит (визуальная строка cmd).

Я уже проверил варианты с /etc/инит.д папка (а также /lib/системд/система папка, в которой я активирую службу через systemctl), вызывая скрипт через следующую командную строку

#!/бин/баш
gnome-terminal -e '/home/ubuntu/script.sh'

или без видимого интерфейса cmd

#!/бин/баш
источник /home/ubuntu/script.sh

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

Любые идеи? Спасибо

Рейтинг:2
флаг cn

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

Вы можете использовать «Запуск приложений» для автоматического запуска терминала после входа в систему, который затем запускает ваш скрипт.

  1. Измените свой сценарий и удалите судо. Вы будете запускать весь скрипт как root.
  2. Autostart Gnome Terminal, эмулятор терминала по умолчанию рабочего стола Ubuntu следующим образом: gnome-terminal -- sudo <путь к вашему скрипту>

При входе в систему терминал запустится, и вы увидите приглашение ввести судо пароль. После ввода пароля запустится скрипт и в терминале появится вывод.

Когда сценарий завершится, терминал закроется. Чтобы этого не произошло, вы можете добавить команду «bash», чтобы оболочка (и эмулятор терминала) оставалась открытой, или использовать приглашение, такое как

read -rsn1 =p $'Нажмите клавишу, чтобы продолжить\n'
Andy McRae avatar
флаг jp
Привет, спасибо за ваш ответ. Поэтому я сделал файл sh.desktop, в который я поместил код [Desktop Entry] Тип = Приложение Exec="/home/ubuntu/script.sh" Скрытый = ложь NoDisplay=ложь X-GNOME-Autostart-enabled=true Имя[en_IN]=Маас Имя=Маассетуп Комментарий[en_IN]=Маас Comment=MaasSetup, и я выхожу из системы и снова вхожу в систему, но это ничего не делает. Я проверил пути, и они верны. Я думаю, что задачи запуска работают только с файлами .desktop, а не с файлами sh, верно? Привет
vanadium avatar
флаг cn
Вы можете запустить «Автозапуск приложений», чтобы добавить команду запуска. Это действительно создаст панель запуска .desktop в папке автозапуска. Что касается необходимой команды, внимательно перечитайте мой ответ.
Andy McRae avatar
флаг jp
Спасибо. Если бы я мог получить один большой палец вверх, это было бы здорово.
Рейтинг:0
флаг jp

Итак, я нашел решение с задачей запуска, упомянутой ванадием.

Но я подумал, что сделаю это немного более явным.

Я использую 3 файла:

Два расположены в г. /дом/убунту/ папка

  1. /home/ubuntu/init.sh

И который содержит

#!/бин/баш
гном-терминал -- sudo '/home/ubuntu/script.sh'
  1. /home/ubuntu/script.sh

который содержит фактический код, который я хочу выполнить

#!/бин/баш
sudo add-apt-repository -y ppa:maas/3.0-next
судо подходящее обновление
sudo apt install -y maas jq markdown nmap traceroute git curl wget zfsutils-linux cloud-image-utils virtinst qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils whois
sudo maas createadmin --username ubuntu --password password --email [email protected] --ssh-import gh:wt-b

...

И затем нам нужно включить запускаемое приложение, поместив файл конфигурации в /etc/xdg/автозапуск папка 3) /etc/xdg/autostart/conf.desktop

Который содержит следующую информацию:

[Вход на рабочий стол]
Версия=1.0
Name=LordofSpaghetti
Комментарий=Спагетти хороши
Exec=/home/ubuntu/init.sh
Путь=/дом/убунту/
Терминал=истина
Тип = Приложение
X-GNOME-Autostart-enabled=true
Categories=Утилиты;Разработка

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

raj avatar
флаг cn
raj
Вам не нужно вручную создавать файлы на шаге 3). Как сказал @vanadium, откройте «Запуск приложений» из системных инструментов и добавьте `/home/ubuntu/init.sh` в список программ, которые автоматически запускаются во время сеанса. Однако, поскольку вы уже сделали это вручную, нет необходимости делать это снова :)
Andy McRae avatar
флаг jp
На самом деле мне нужно сделать это так, потому что это часть процесса автоматизации, когда мы развертываем несколько машин. И я не могу запустить файл script.sh непосредственно из файла .desktop, потому что файл .desktop, по-видимому, не может запускать gnome-desktop напрямую. Надеюсь, это поможет

Ответить или комментировать

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