У меня есть сценарий оболочки, который делает несколько вызовов Asterisk в какой-то момент и показывает некоторые результаты. Вызов Asterisk - первое, что я попробовал, и кажется, что не работает. Я определил, что у пользователя, которого я настроил для запуска сценария, не было разрешений на запуск Asterisk, поэтому я искал способы запустить его от имени root, чтобы обойти это (единственный другой пользователь в системе).
Я пытался использовать su
без удачи. Последние два часа я возился с sudo
и sudoers
и не смог заставить его работать.
Например, в моем скрипте есть код, который запускается пользователем com
:
printf "\n"
calls=`sudo "asterisk -rx 'core show channels'" | grep "active call"`
lastinboundcaller=`cat /var/log/asterisk/lastcaller.txt`
printf '%s\n' "Current Call Count: $calls"
printf '%s\n' "Last Inbound Caller: $lastinboundcaller"
Выход:
[sudo] password for com:
sudo: asterisk -rx 'core show channels': command not found
Current Call Count:
Last Inbound Caller: Unknown
Здесь есть две проблемы,
- Он запрашивает пароль. Почему он запрашивает текущий пароль пользователя, а не пароль root, я понятия не имею, но он вообще не должен запрашивать пароль.
- Команда Asterisk
asterisk -rx "command"
все еще не работает & mdash; Другими словами, по-прежнему не удается запустить оболочку Asterisk, хотя она должна иметь разрешение.
Я попытался обновить свой sudoers
файл и создать новый файл в /etc/sudoers.d
под названием asterisk
, а также ввести туда свою команду.
Моя последняя модификация этого файла:
com ALL = (ALL:ALL) NOPASSWD: /usr/sbin/asterisk
До этого я пробовал:
com ALL = (root) NOPASSWD: /usr/sbin/asterisk
Насколько я понимаю, должно позволять пользователю com
выполнять звездочку как sudo без пароля. Понятно, что что-то не работает.
Я следил за ответами на многочисленные похожие сообщения SO, например:
К сожалению, несмотря на то, что я следовал всем ответам на этот вопрос, ни один из них не помог мне.
Кто-нибудь может указать мне правильное направление здесь или предложить альтернативу? Я уже консультировался с экспертом по Linux, и это, кажется, правильный подход. Это все очень легко сделать в Windows, и я удивлен, что все это запутанно в Linux.