Переработанная контрольная карта в bash [закрыта]

Мне нужна помощь в создании сценариев bash (которые я осваиваю atm).

Я хочу сделать лучше checkroot для вызова su , sudo и т. Д., Если он вызван от пользователя без полномочий root.

Терминал: kreyren@dreamon ~ $ scripter --something

кодоблок:

# ROOT CHECK
checkroot () {
    if [ $UID == 0 ]; then
    echo "Root is detected."
    break

    # Using `sudo`
    elif [ $UID != 0 ] && [[ -x sudo ]]; then 
    echo "Scripter needs root permission to proceed, trying using sudo."
    #TODO: Make the script invoke scripter with CLI argumments.
    sudo scripter #expected to be invoked with --something.

    # Using `su`
    elif [ $UID != 0 ]; then 
        echo "Scripter needs root permission to proceed, trying to log-in as root."
        #TODO: Make the script invoke scripter with CLI argumments.
        su -c "scripter"   #expected to be invoked with --something.
fi
}

Я использую https://gitlab.com/argent/avasile в качестве тестового объекта для этого кодового блока.

Кодовый блок должен иметь возможность захватить выведенную команду и повторно запустить себя с заданной переменной AKA «TODO».

Где я сейчас нахожусь: https://github.com/Kreyren/random-scripts/blob/master/checkroot_WIP.sh

Условия: 1) должны быть частью функции универсальной. 2) должен быть выполнен без дополнительного ввода пользователя, исключая разбор пароля.


Я провел 5 дней с этим, и у меня нет идей, и мое лучшее решение, похоже, захватывает его из history ?

Спасибо всем за дополнительную информацию, включая концепцию теории AND / OR. - Крей

Всего 1 ответ


Вы можете использовать специальную переменную оболочки Bourne $@ чтобы снова вызвать скрипт со всеми исходными аргументами:

exec sudo scripter $@

Есть идеи?

10000