Introdução
Este documento descreve como realizar chamadas de API XML manuais para o Cisco Integrated Management Controller (CIMC).
Componentes Utilizados
- Uma máquina Linux (qualquer distribuição).
- Conectividade de rede entre a máquina Linux e o Cisco CIMC (um teste de ping bem-sucedido é suficiente).
Note: Os nomes de arquivo (main.sh, login.xml, get_summary.xml) usados neste guia são arbitrários. Você pode usar suas próprias convenções de nomenclatura, desde que elas sejam referenciadas adequadamente durante todo o processo.
As informações neste documento foram criadas a partir de dispositivos em um ambiente de laboratório específico. Todos os dispositivos utilizados neste documento foram iniciados com uma configuração (padrão) inicial. Se a rede estiver ativa, certifique-se de que você entenda o impacto potencial de qualquer comando.
Informações de Apoio
Nesta demonstração, um script Bash chamado "main.sh" é usado para executar chamadas de API para o servidor.
Observe que métodos alternativos, como CURL(diretamente do CLI) ou Python, também podem ser usados para atingir esse mesmo resultado.
Realizar chamadas de API XML para o CIMC
A API XML do CIMC requer uma etapa de autenticação inicial usando uma chamada à API "aaaLogin". Durante esse processo, um cookie de sessão é recuperado, que é usado para autenticar todas as chamadas de API subsequentes.
Passo 1
Comece criando um arquivo chamado main.sh na máquina Linux remota. Este arquivo contém um script bash usado para enviar as chamadas de API.
O script main.sh é executado várias vezes durante este exercício: primeiro para autenticação e, em seguida, para recuperar informações do CIMC em chamadas subsequentes.
Aqui está o conteúdo do arquivo main.sh:
#!/bin/bash
# CONFIGURATION - Edit these variables
CIMC_IP="X.X.X.X" # <<<<<<<< Customer CIMC IP address
USERNAME="admin"
PASSWORD="xxxxxxxx" # <<<<<<< CIMC Password in plaintext
XML_PAYLOAD_FILE="login.xml" # <<<<<<< Referencing the login.xml file for authentication and cookie retrieval
CIMC_URL="https://${CIMC_IP}/nuova" # <<<<<<< Call is made to this URL
# Check if payload file exists
if [ ! -f "$XML_PAYLOAD_FILE" ]; then
echo "Error: XML payload file '$XML_PAYLOAD_FILE' not found."
exit 1
fi
# Send XML request using curl
curl -k -s -u "${USERNAME}:${PASSWORD}" -H "Content-Type: text/xml" -d @"${XML_PAYLOAD_FILE}" "${CIMC_URL}" | xmllint --format -
O script bash define os parâmetros de login do CIMC e também executa uma chamada de API XML, especificada em outro arquivo chamado login.xml identificado por uma variável chamada XML_PAYLOAD_FILE.
O script também verifica se o arquivo login.xml, definido pela variável XML_PAYLOAD_FILE existe e é um arquivo regular.
Se o arquivo definido por XML_PAYLOAD_FILE não existir, o script imprimirá um erro e sairá.
Salve o arquivo e torne-o executável executando este comando na CLI:
$ sudo chmod +x main.sh
Passo 2
Em seguida, crie o arquivo chamado login.xml no mesmo diretório linux do arquivo main.sh.
Este arquivo de login contém a chamada de API actualaaaLoginXML que é enviada ao CIMC para recuperar um cookie de sessão. O cookie recuperado é usado para chamadas API subsequentes:
Lembre-se de substituir o nome de usuário e a senha do CIMC pelas credenciais apropriadas.
Execute o script main.sh na CLI para recuperar um cookie:
$ sudo ./main.sh
Se a chamada de API for bem-sucedida, a resposta XML retornada conterá uma chave chamada outCookie cujo valor será o cookie recuperado conforme mostrado:

Na saída, localize o valor outCookie.
Salvar este valor de cookie.
Etapa 3
Crie um novo arquivo no mesmo diretório em que o arquivo main.sh está localizado. Nomeie o arquivo get_summary.xml.
Para obter uma lista abrangente de solicitações de API que podem ser usadas com o Cisco IMC, consulte o Guia do programador de API XML para servidores com montagem em rack Cisco UCS.
O novo arquivo get_summary.xml é usado para recuperar as Informações de Resumo do Servidor e o Estado de Potência do Host. usando o bloco XML de código na documentação de referência, mas substituindo o valor da chave cookie pelo cookie de recuperação anterior.
Substitua <cookie_value> por theoutCookievalue obtido do login anterior.xmlresponse. A solicitação atualizada é semelhante a esta:

Certifique-se de substituir o <cookie_value> pelo valor real do cookie recuperado durante o processo de autenticação.
Passo 4
Depois que o cookie tiver sido adicionado ao novo arquivo get_summary.xml, atualize o script main.sh para fazer referência ao "get_summary.xml" como valor para a variável XML_PAYLOAD_FILE para essa solicitação.
#!/bin/bash
# CONFIGURATION - Edit these variables
CIMC_IP="X.X.X.X"
USERNAME="admin"
PASSWORD="xxxxxxxx"
XML_PAYLOAD_FILE="get_summary.xml" # <<<<<<< Referencing the get_summary.xml file for subsequent API calls.
CIMC_URL="https://${CIMC_IP}/nuova"
# Check if payload file exists
if [ ! -f "$XML_PAYLOAD_FILE" ]; then
echo "Error: XML payload file '$XML_PAYLOAD_FILE' not found."
exit 1
fi
# Send XML request using curl
curl -k -s -u "${USERNAME}:${PASSWORD}" -H "Content-Type: text/xml" -d @"${XML_PAYLOAD_FILE}" "${CIMC_URL}" | xmllint --format -
Execute o script main.sh novamente para executar a solicitação de API atualizada.
$ sudo ./main.sh
Em seguida, você recebe uma resposta de API em formato XML retornando o objeto solicitado do CIMC.

Troubleshooting
É importante observar que a chamada de API XML aaaLogin retorna um cookie de sessão com um outRefreshPeriod de aproximadamente 600 segundos. Isso significa que o cookie expira após dez (10) minutos se não for atualizado, e um novo cookie é necessário para continuar a executar as solicitações de API.
Se você tentar usar um cookie expirado (após 600 segundos), um bloco de resposta de erro 552 "Authorization required" XML será retornado:
