ec2auth не работает при вызове из другого скрипта

#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
 

Надеюсь, это поможет кому-то еще. Если вы понимаете, почему это работает, пожалуйста, дайте мне знать. Спасибо