как запустить функцию как root в сценарии оболочки

Я сделал это и решил:

sudo killall -9 jackdbus
3
задан 11 May 2011 в 12:48

36 ответов

Проверьте возвращаемое значение gksudo:

if ! gksudo -m "Input Password" clear ; then
    echo Bad password
    exit 1
fi
2
ответ дан 25 May 2018 в 21:09

Проверьте возвращаемое значение gksudo:

if ! gksudo -m "Input Password" clear ; then echo Bad password exit 1 fi
2
ответ дан 25 July 2018 в 21:57

Проверьте возвращаемое значение gksudo:

if ! gksudo -m "Input Password" clear ; then echo Bad password exit 1 fi
2
ответ дан 26 July 2018 в 18:00

Проверьте возвращаемое значение gksudo:

if ! gksudo -m "Input Password" clear ; then echo Bad password exit 1 fi
2
ответ дан 2 August 2018 в 03:31

Проверьте возвращаемое значение gksudo:

if ! gksudo -m "Input Password" clear ; then echo Bad password exit 1 fi
2
ответ дан 4 August 2018 в 19:29

Проверьте возвращаемое значение gksudo:

 , если!  gksudo -m «Пароль ввода» очищен;  затем echo Ошибка ввода пароля 1 fi  
2
ответ дан 6 August 2018 в 03:39

Проверьте возвращаемое значение gksudo:

 , если!  gksudo -m «Пароль ввода» очищен;  затем echo Ошибка ввода пароля 1 fi  
2
ответ дан 7 August 2018 в 21:30

Проверьте возвращаемое значение gksudo:

 , если!  gksudo -m «Пароль ввода» очищен;  затем echo Ошибка ввода пароля 1 fi  
2
ответ дан 10 August 2018 в 09:47

Проверьте возвращаемое значение gksudo:

 , если!  gksudo -m «Пароль ввода» очищен;  затем echo Ошибка ввода пароля 1 fi  
2
ответ дан 13 August 2018 в 16:01

Вы не можете. Чтобы сделать это, вам нужно поместить функцию в другой скрипт и запустить этот скрипт с помощью sudo.

Sudo запускает только команды, он не может обращаться к функциям внутри вашего скрипта, поскольку он работает в отдельном процессе. Если вы настаиваете на запуске функции в своем скрипте, вы можете снова запустить скрипт с помощью sudo, но передайте ему аргумент с $1, который запускает функцию напрямую.

1
ответ дан 25 May 2018 в 21:09
  • 1
    Я пытаюсь поместить свою функцию в другой скрипт, она работает, когда я получаю доступ к ней через терминал. но когда вы делаете его как панель запуска (приложение в терминале) в панели, она не работает ... см. мое редактирование .. – Egy Mohammad Erdin 11 May 2011 в 12:16
  • 2
    Попробуйте использовать полный путь: sudo FULL_PATH_TO / main2.sh. При вызове из панели запуска первоначальный рабочий каталог не является каталогом сценариев, использование ./main2.sh не ожидается. – João Pinto 11 May 2011 в 16:42

как насчет использования gksudo? Он заставит пользователя ввести пароль. Затем он должен работать только с sudo.

0
ответ дан 25 May 2018 в 21:09

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

#!/bin/bash
dScript=$0
if [[ ${UID} -gt 0 ]] ; then
    sudo ${dScript}
    exit
fi
### the rest of your script
0
ответ дан 25 May 2018 в 21:09

Вы не можете. Чтобы сделать это, вам нужно поместить функцию в другой скрипт и запустить этот скрипт с помощью sudo.

Sudo запускает только команды, он не может обращаться к функциям внутри вашего скрипта, поскольку он работает в отдельном процессе. Если вы настаиваете на запуске функции в своем скрипте, вы можете снова запустить скрипт с помощью sudo, но передайте ему аргумент с $1, который запускает функцию напрямую.

1
ответ дан 25 July 2018 в 21:57
  • 1
    Я пытаюсь поместить свою функцию в другой скрипт, она работает, когда я получаю доступ к ней через терминал. но когда вы делаете его как панель запуска (приложение в терминале) в панели, она не работает ... см. мое редактирование .. – Egy Mohammad Erdin 11 May 2011 в 12:16
  • 2
    Попробуйте использовать полный путь: sudo FULL_PATH_TO / main2.sh. При вызове из панели запуска первоначальный рабочий каталог не является каталогом сценариев, использование ./main2.sh не ожидается. – João Pinto 11 May 2011 в 16:42

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

#!/bin/bash dScript=$0 if [[ ${UID} -gt 0 ]] ; then sudo ${dScript} exit fi ### the rest of your script
0
ответ дан 25 July 2018 в 21:57

как насчет использования gksudo? Он заставит пользователя ввести пароль. Затем он должен работать только с sudo.

0
ответ дан 25 July 2018 в 21:57

Вы не можете. Чтобы сделать это, вам нужно поместить функцию в другой скрипт и запустить этот скрипт с помощью sudo.

Sudo запускает только команды, он не может обращаться к функциям внутри вашего скрипта, поскольку он работает в отдельном процессе. Если вы настаиваете на запуске функции в своем скрипте, вы можете снова запустить скрипт с помощью sudo, но передайте ему аргумент с $1, который запускает функцию напрямую.

1
ответ дан 26 July 2018 в 18:00
  • 1
    Я пытаюсь поместить свою функцию в другой скрипт, она работает, когда я получаю доступ к ней через терминал. но когда вы делаете его как панель запуска (приложение в терминале) в панели, она не работает ... см. мое редактирование .. – Egy Mohammad Erdin 11 May 2011 в 12:16
  • 2
    Попробуйте использовать полный путь: sudo FULL_PATH_TO / main2.sh. При вызове из панели запуска первоначальный рабочий каталог не является каталогом сценариев, использование ./main2.sh не ожидается. – João Pinto 11 May 2011 в 16:42

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

#!/bin/bash dScript=$0 if [[ ${UID} -gt 0 ]] ; then sudo ${dScript} exit fi ### the rest of your script
0
ответ дан 26 July 2018 в 18:00

как насчет использования gksudo? Он заставит пользователя ввести пароль. Затем он должен работать только с sudo.

0
ответ дан 26 July 2018 в 18:00

Вы не можете. Чтобы сделать это, вам нужно поместить функцию в другой скрипт и запустить этот скрипт с помощью sudo.

Sudo запускает только команды, он не может обращаться к функциям внутри вашего скрипта, поскольку он работает в отдельном процессе. Если вы настаиваете на запуске функции в своем скрипте, вы можете снова запустить скрипт с помощью sudo, но передайте ему аргумент с $1, который запускает функцию напрямую.

1
ответ дан 2 August 2018 в 03:31
  • 1
    Я пытаюсь поместить свою функцию в другой скрипт, она работает, когда я получаю доступ к ней через терминал. но когда вы делаете его как панель запуска (приложение в терминале) в панели, она не работает ... см. мое редактирование .. – Egy Mohammad Erdin 11 May 2011 в 12:16
  • 2
    Попробуйте использовать полный путь: sudo FULL_PATH_TO / main2.sh. При вызове из панели запуска первоначальный рабочий каталог не является каталогом сценариев, использование ./main2.sh не ожидается. – João Pinto 11 May 2011 в 16:42

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

#!/bin/bash dScript=$0 if [[ ${UID} -gt 0 ]] ; then sudo ${dScript} exit fi ### the rest of your script
0
ответ дан 2 August 2018 в 03:31

как насчет использования gksudo? Он заставит пользователя ввести пароль. Затем он должен работать только с sudo.

0
ответ дан 2 August 2018 в 03:31

Вы не можете. Чтобы сделать это, вам нужно поместить функцию в другой скрипт и запустить этот скрипт с помощью sudo.

Sudo запускает только команды, он не может обращаться к функциям внутри вашего скрипта, поскольку он работает в отдельном процессе. Если вы настаиваете на запуске функции в своем скрипте, вы можете снова запустить скрипт с помощью sudo, но передайте ему аргумент с $1, который запускает функцию напрямую.

1
ответ дан 4 August 2018 в 19:29
  • 1
    Я пытаюсь поместить свою функцию в другой скрипт, она работает, когда я получаю доступ к ней через терминал. но когда вы делаете его как панель запуска (приложение в терминале) в панели, она не работает ... см. мое редактирование .. – Egy Mohammad Erdin 11 May 2011 в 12:16
  • 2
    Попробуйте использовать полный путь: sudo FULL_PATH_TO / main2.sh. При вызове из панели запуска первоначальный рабочий каталог не является каталогом сценариев, использование ./main2.sh не ожидается. – João Pinto 11 May 2011 в 16:42

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

#!/bin/bash dScript=$0 if [[ ${UID} -gt 0 ]] ; then sudo ${dScript} exit fi ### the rest of your script
0
ответ дан 4 August 2018 в 19:29

как насчет использования gksudo? Он заставит пользователя ввести пароль. Затем он должен работать только с sudo.

0
ответ дан 4 August 2018 в 19:29

Вы не можете. Чтобы сделать это, вам нужно поместить функцию в другой скрипт и запустить этот скрипт с помощью sudo.

Sudo запускает только команды, он не может обращаться к функциям внутри вашего скрипта, поскольку он выполняется в отдельном процессе. Если вы настаиваете на выполнении функции в своем скрипте, вы можете снова запустить скрипт с помощью sudo, но передайте ему аргумент с $ 1 , который запускает функцию напрямую.

1
ответ дан 6 August 2018 в 03:39

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

  #! / bin / bash dScript = $ 0, если [[$ {UID} -gt 0]];  затем sudo $ {dScript} exit fi ### остальная часть вашего скрипта  
0
ответ дан 6 August 2018 в 03:39

как насчет использования gksudo? Он заставит пользователя ввести пароль. Затем он должен работать только с sudo.

0
ответ дан 6 August 2018 в 03:39

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

  #! / bin / bash dScript = $ 0, если [[$ {UID} -gt 0]];  затем sudo $ {dScript} exit fi ### остальная часть вашего скрипта  
0
ответ дан 7 August 2018 в 21:30

как насчет использования gksudo? Он заставит пользователя ввести пароль. Затем он должен работать только с sudo.

0
ответ дан 7 August 2018 в 21:30

Вы не можете. Чтобы сделать это, вам нужно поместить функцию в другой скрипт и запустить этот скрипт с помощью sudo.

Sudo запускает только команды, он не может обращаться к функциям внутри вашего скрипта, поскольку он выполняется в отдельном процессе. Если вы настаиваете на выполнении функции в своем скрипте, вы можете снова запустить скрипт с помощью sudo, но передайте ему аргумент с $ 1 , который запускает функцию напрямую.

1
ответ дан 7 August 2018 в 21:30

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

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