Envío de una solicitud GET a la API de REST
Para un rpc comando, el formato general de los extremos es:
scheme://device-name:port/rpc/method[@attributes]/params
-
scheme: o bienhttphttps -
method: el nombre de cualquier comando de Junos OSrpc. Elmethodnombre es idéntico al elemento de etiqueta. Para obtener más información, consulte el Explorador de API XML de Junos. -
params: valores de parámetros opcionales (name[=value]).
Para autenticar su solicitud, puede utilizar uno de los métodos siguientes. Recomendamos usar la netrc opción porque es más segura.
-
Envíe el nombre de usuario y la contraseña codificados en base64 incluidos en el encabezado Autorización.
curl -u "username:password" http://device-name:port/rpc/get-interface-information -
Como alternativa, utilice un archivo .netrc para almacenar las credenciales.
En el directorio principal del usuario, cree el archivo .netrc y especifique el nombre de host, el nombre de usuario y la contraseña del dispositivo remoto. Por ejemplo:
user@host:~$ cat ~/.netrc machine 172.16.2.1 login username password password
Asegúrese de que solo el usuario tiene permiso de lectura y escritura para el archivo.
user@host:~$ chmod 600 .netrc
En la solicitud, especifique la
--netrcopción. Por ejemplo:user@host:~$ curl --netrc http://172.16.2.1:3000/rpc/get-interface-information
Para especificar rpc datos como una cadena de consulta en el URI para solicitudes GET, puede usar el ? siguiente URI con el & delimitador separando varios argumentos, o usar el / delimitador, como se muestra en estas llamadas cURL equivalentes:
Por ejemplo:
curl --netrc http://device-name:port/rpc/get-interface-information?interface-name=cbp0&snmp-index=1curl --netrc http://device-name:port/rpc/get-interface-information/interface-name=cbp0/snmp-index=1
Los encabezados HTTP Accept se pueden utilizar para especificar el formato devuelto mediante uno de los siguientes valores Content-Type:
-
application/xml (valor predeterminado)
-
aplicación/json
-
texto/sin formato
-
texto/html
Por ejemplo, la siguiente llamada cURL especifica un formato de salida de JSON:
curl --netrc http://device-name:port/rpc/get-interface-information?interface-name=cbp0 --header "Accept: application/json"
También puede especificar el formato de salida mediante el parámetro opcional format de Junos OS RPC.
Por ejemplo, el <get-software-information> elemento tag recupera niveles de revisión de procesos de software. La siguiente solicitud GET HTTPS ejecuta este comando y recupera los resultados en formato JSON:
https://device-name:port/rpc/get-software-information@format=json
El siguiente programa de Python utiliza la interfaz REST para ejecutar el get-route-engine-information RPC, extrae los datos de la respuesta y traza un gráfico del promedio de carga de la CPU. El requests módulo comprueba automáticamente el archivo .netrc del usuario en busca de credenciales asociadas con el dispositivo especificado. Como alternativa, puede incluir el auth=(username, password ) argumento en la solicitud para proporcionar credenciales.
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()