Мне нужна помощь в создании сценариев 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 $@