После каждой приостановки, когда я просыпаюсь с ноутбуком, он никогда не подключается к какой-либо сети и должен перезапустить NetworkManager снова. Итак, из-за лени я написал этот сценарий , который работает нормально, как и ожидалось.
Я использовал блок if
, чтобы проверить, что скрипт всегда выполняется пользователем root:
if [ $(id -u) -ne 0 ]
then
echo "ERROR : Root Priveleges Required"
exit NOT_ROOT
else
netrestart
fi
И я дал этому сценарию это разрешение (будучи root при выполнении этой команды):
chmod u+x netrestart
Теперь, когда я запускаю этот скрипт как пользователь без полномочий root, он показывает это
bash: ./netrestart: Permission denied
И затем, запуск сценария с sudo
работает нормально
sudo ./netrestart
Я думаю, что делает проверку root в сценарии бесполезной. Теперь у меня есть 2 вопроса:
Должен ли я удалить эту часть кода или все еще использовать в сценарии?
Что лучше и как?
chmod 755 netrestart
chmod 711 netrestart
Я думаю, что ваш скрипт может быть сжат до:
#!/bin/bash
NOT_ROOT=2
sudo service network-manager restart || exit $NOT_ROOT
if service network-manager status
then
echo "Successfully Restarted NetworkManager"
else
echo "ERROR : Failed to work"
exit 1
fi
sudo
проверит для вас root-доступ и при необходимости подскажет. Проверка service ... status
будет более надежно сообщать вам, нормально ли запущен NetworkManager.
Вы можете предоставить права на выполнение этого сценария всем, и sudo
позаботится о проверке разрешений.