Новинка 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 к моему серверу - по крайней мере это - идея. К сожалению, команды новинки так или иначе, кажется, не выполняются вообще, я ничего не получаю в своем журнале. Теперь, так как я не получил stderr, отладка довольно трудна. Что я делаю неправильно?

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

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

0
задан 2 March 2015 в 03:37
1 ответ

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

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

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

0
ответ дан 5 December 2019 в 12:57

Теги

Похожие вопросы