#php #bash #amazon-web-services #amazon-ec2
#php #bash #amazon-веб-сервисы #amazon-ec2
Вопрос:
Я пытаюсь автоматизировать белый список IP-адресов в брандмауэре AWS, используя ec2auth, сделав его ссылкой, которая при нажатии получает IP-адрес из файла php и вызывает скрипт bash. Скрипт bash проверяет, есть ли у этого пользователя доступ, затем вызывает другой скрипт bash, который обновляет IP-адрес брандмауэра.
BASH1
if [ "$ACCESS" = "allowed" ]
then echo -n "Updating access... "
BASH2 "$newIP"
fi
BASH2
IP="$1"
echo -n "Adding new IP... "
addResult="$(ec2auth group -P tcp -p 3389 -s "$IP"/32)"
Но при этом я получаю сообщение об ошибке
addResult is: ------------- --------------------------------------------------------------
| Code | Message |
------------- --------------------------------------------------------------
| AuthFailure | AWS was not able to validate the provided access credentials |
------------- --------------------------------------------------------------
Но если я запускаю BASH2 из терминала, он работает нормально. Любой знает, что не так.
Комментарии:
1. Что такое переменная
IP
в BASH2? Установлен ли он в аргумент, переданный скрипту где-нибудь, например,IP=$1
?
Ответ №1:
Я обнаружил, что это работает
BASH1
if [ "$ACCESS" = "allowed" ]
then echo -n "Updating access... "
sudo /fullpath/BASH2 "$newIP"
fi
и часть моего файла sudoers
# User privilege specification
www-data ALL=(ALL) NOPASSWD: /fullpath/BASH1, /fullpath/BASH2
Надеюсь, это поможет кому-то еще. Если вы понимаете, почему это работает, пожалуйста, дайте мне знать. Спасибо