Nova CLI выдает нулевой вывод на stderr и stdout

Nova CLI выдает нулевой вывод на stderr и stdout

следующая проблема. Я получил этот скрипт оболочки:

#!/bin/sh

# Provide log for debugging
if [ ! -f /home/some-user/port-control.log ]; then
  touch /home/some-user/port-control.log
  chown some-user /home/some-user/port-control.log
fi

# Load environment variables for authentication
source /home/some-user/.openstack/nova-openrc.sh

# Open ports at login
if [ "$PAM_TYPE" = "open_session" ] && [ "$PAM_USER" = "some-user" ]; then
  echo "Opening ports ... Nova response:" >> /home/some-user/port-control.log
  nova --debug add-secgroup some-server some-secgroup &>> /home/some-user/port-control.log
fi

# Close ports at logout
if [ "$PAM_TYPE" = "close_session" ] && [ "$PAM_USER" = "some-user" ]; then
  echo "Closing ports ... Nova response:" >> /home/some-user/port-control.log
  nova --debug remove-secgroup some-server some-secgroup &>> /home/some-user/port-control.log
fi

Я использую этот скрипт для открытия/закрытия некоторых портов в моем брандмауэре при подключении/отключении через ssh, динамически добавляя уже настроенную secgroup на мой сервер — по крайней мере, такова идея. К сожалению, команды nova почему-то вообще не выполняются, в моем журнале ничего нет. Теперь, поскольку у меня нет stderr, отладка немного затруднена. Что я делаю не так?

Когда я получаю учетные данные для входа в систему nova и вручную выполняю команды nova вне скрипта, все работает отлично.

Кстати: Если поможет: я запускаю все это внутри контейнера Docker на основе образа Ubuntu:14.04. Да, я знаю:Если вы используете sshd внутри контейнера Docker, вы делаете это неправильно.В этом случае есть причина для sshd ;)

решение1

Как-то просто, но в конце концов я нашел ответ. Вот что я сделал:

С помощьюответ на другой вопрос на StackOverflowЯ перенаправил весь вывод скрипта в файл и понял, что переменные окружения для аутентификации не были получены. Почему: Потому что оболочка не знала команду source. Почему? Потому что я был настолько глуп, что не проверил, какую оболочку я использовал.

Проблема была просто решена путем замены #/bin/shна #!/bin/bash. Тада!

Связанный контент