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

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

Путь к сценарию:

/home/ubunt/script.sh

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

#!/bin/bash
sudo add-apt-repository -y ppa:maas/3.0-next
sudo apt update
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 winnie@the.bear --ssh-import gh:wt-b
...

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

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

#!/bin/bash
gnome-terminal -e '/home/ubuntu/script.sh'

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

#!/bin/bash
source /home/ubuntu/script.sh

of, но он не работает и устанавливает только некоторые компоненты.

Есть идеи? Спасибо

0
задан 26 August 2021 в 12:08

2 ответа

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

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

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

Два находятся в папке /home/ubuntu/

  1. /home/ubuntu/init.sh

И которая содержит

#!/bin/bash
gnome-terminal -- sudo '/home/ubuntu/script.sh'
  1. /home/ubuntu/script.sh

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

#!/bin/bash
sudo add-apt-repository -y ppa:maas/3.0-next
sudo apt update
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 winnie@the.bear --ssh-import gh:wt-b

...

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

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

[Desktop Entry]
Version=1.0
Name=LordofSpaghettis
Comment=Spaghettis are good
Exec=/home/ubuntu/init.sh
Path=/home/ubuntu/
Terminal=true
Type=Application
X-GNOME-Autostart-enabled=true
Categories=Utility;Development

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

0
ответ дан 4 September 2021 в 09:27

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

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

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

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

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

read -rsn1 =p $'Press a key to continue\n'
2
ответ дан 4 September 2021 в 09:27

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

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