Nova CLI produz saída zero em stderr e stdout

Nova CLI produz saída zero em stderr e stdout

seguinte problema. Eu tenho este script de shell:

#!/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

Estou usando este script para abrir/fechar algumas portas em meu firewall ao conectar/desconectar via ssh adicionando dinamicamente um secgroup já configurado ao meu servidor - pelo menos essa é a ideia. Infelizmente, os comandos do nova de alguma forma parecem não ser executados, não recebo nada no meu log. Agora, como não tenho stderr, a depuração é meio difícil. O que estou fazendo de errado?

Quando eu obtenho as credenciais de login do nova e executo os comandos do nova manualmente fora de um script, tudo funciona perfeitamente bem.

A propósito: se ajudar: estou executando tudo isso dentro de um contêiner docker baseado em uma imagem Ubuntu:14.04. Sim, eu sei:Se você estiver usando sshd dentro de um contêiner docker, você está fazendo errado.Neste caso, há uma razão para o sshd;)

Responder1

De alguma forma simples, mas finalmente encontrei a resposta. Isto é o que eu fiz:

Com a ajuda de umresponda a outra pergunta no StackOverflowRedirecionei toda a saída do script para um arquivo e percebi que as variáveis ​​de ambiente para autenticação não foram obtidas. Por quê: porque o shell não conhecia o sourcecomando. Por que? Porque fui estúpido o suficiente para não verificar a concha de bruxa que estava usando.

O problema foi simplesmente resolvido mudando #/bin/shpara #!/bin/bash. Tada!

informação relacionada