Enviar uma solicitação GET à REST API
Para um rpc
comando, o formato geral dos endpoints é:
scheme://device-name:port/rpc/method[@attributes]/params
-
scheme
:http
ouhttps
-
method
: O nome de qualquer comando junos OSrpc
. Omethod
nome é idêntico ao elemento tag. Para obter mais informações, veja o Junos XML API Explorer. -
params
: Valores de parâmetro opcionais (name[=value]
).
Para autenticar sua solicitação, você pode usar um dos seguintes métodos. Recomendamos usar a opção netrc
porque ela é mais segura.
-
Envie o nome de usuário e a senha com código base64 incluídos no cabeçalho de autorização.
curl -u "username:password" http://device-name:port/rpc/get-interface-information
-
Alternativamente, use um arquivo .netrc para armazenar as credenciais.
No diretório de casa do usuário, crie o arquivo .netrc e especifique o nome de host, nome de usuário e senha para o dispositivo remoto. Por exemplo:
user@host:~$ cat ~/.netrc machine 172.16.2.1 login username password password
Certifique-se de que apenas o usuário tenha lido e escreva permissão para o arquivo.
user@host:~$ chmod 600 .netrc
Na solicitação, especifique a opção
--netrc
. Por exemplo:user@host:~$ curl --netrc http://172.16.2.1:3000/rpc/get-interface-information
Para especificar rpc
dados como uma string de consulta no URI para solicitações get, você pode usar um ?
URI a seguir com o &
delimiter separando vários argumentos ou usar o /
delimiter, conforme mostrado nessas chamadas cURL equivalentes:
Por exemplo:
curl --netrc http://device-name:port/rpc/get-interface-information?interface-name=cbp0&snmp-index=1
curl --netrc http://device-name:port/rpc/get-interface-information/interface-name=cbp0/snmp-index=1
Os cabeçalhos DE ACEITAÇÃO DE HTTP podem ser usados para especificar o formato de devolução usando um dos seguintes valores do tipo de conteúdo:
-
aplicativo/xml (o padrão)
-
aplicativo/json
-
texto/simples
-
texto/html
Por exemplo, a chamada cURL a seguir especifica um formato de saída do JSON:
curl --netrc http://device-name:port/rpc/get-interface-information?interface-name=cbp0 --header "Accept: application/json"
Você também pode especificar o formato de saída usando o parâmetro opcional format
do Junos OS RPC.
Por exemplo, o <get-software-information>
elemento tag recupera os níveis de revisão do processo de software. A solicitação HTTPS GET a seguir executa este comando e recupera os resultados no formato JSON:
https://device-name:port/rpc/get-software-information@format=json
O programa Python a seguir usa a interface REST para executar o get-route-engine-information
RPC, extrai os dados da resposta e traça um gráfico da média de carga da CPU. O requests
módulo verifica automaticamente o arquivo .netrc do usuário em busca de credenciais associadas ao dispositivo especificado. Como alternativa, você pode incluir o auth=(username, password )
argumento na solicitação para fornecer credenciais.
import numpy as np import matplotlib.pyplot as plt import matplotlib.animation as animation import requests def update_line(num, data, line): if num == 0: return line, global temp_y x_data.append(num) if num != 0 and num%8 == 1: r = requests.get('http://' + device + '/rpc/get-route-engine-information@format=json') if r: temp_y = r.json()['route-engine-information'][0]['route-engine'][0]['load-average-one'][0]['data'] y_data.append(float(temp_y)) line.set_data(x_data, y_data) return line, device = input('Enter device:port ') temp_y = 1 fig1 = plt.figure() x_data = [] y_data = [] l, = plt.plot([], []) plt.xlim(0, 80) plt.ylim(0, 1.5) plt.xlabel('Time in seconds') plt.ylabel('CPU utilization (load average)') plt.title('REST-API test') line_ani = animation.FuncAnimation(fig1, update_line, 80, fargs=(0, l), interval=1000, blit=True) plt.show()
