LINUX.ORG.RU

script in root terminal

 , , ,


0

2

Есть небольшей скрипт script.sh. Его нужно запустить в рутовом терминале, с запросом пароля. Соответсвенно

#!/bin/bash
gksudo 'xterm -e ./script.sh'
Все работает, но у меня 2 файла.
Как можно обьеденить два файла в один, чтоб скипт работал?



Последнее исправление: igor_kr (всего исправлений: 1)
Ответ на: комментарий от UVV

Проблема в том, что не получается так просто. Если сделать

gksudo 'xterm -e comand1; comand2; comand3'
то после введения пароля терминл появляется на мгновение и ищезает.

igor_kr
() автор топика

набросок, не проверял


if [ `whoami` != root ]; then
    exec gksudo 'xterm -e $0'
    # на всякий случай
    exit 0
fi

# рабочий код
# здесь

anonymous
()
Ответ на: комментарий от anonymous
exec gksudo "xterm -e $0"

двойные кавычки, конечно

anonymous
()
Ответ на: комментарий от anonymous

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

"xterm -e $0"

igor_kr
() автор топика
Ответ на: комментарий от igor_kr

Заработало вот так:

CWD=$(pwd)
"xterm -e $CWD/$0"
Спасибо анонимусу

igor_kr
() автор топика
Последнее исправление: igor_kr (всего исправлений: 1)

Как-то так:

if [ "$(whoami)" != root ]; then
    exec gksudo "xterm -e $0"
fi

<тело скрипта>

Т.е. если выполняемся не от рута, то выполняем сами себя от рута. Но может понадобиться пошаманить c $0 - если скрипт вызван по имени, он может не найти сам себя под рутом из-за другого $PATH. Т.е. может понадобиться получить полный путь до скрипта, это не совсем тривиально.

slovazap ★★★★★
()
Ответ на: комментарий от slovazap

Сочувствую твоей психополовой травме, нанесенной анонимной швалью. В полицию обращался? К психотерапевту?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.