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 bienhttp
https
-
method
: el nombre de cualquier comando de Junos OSrpc
. Elmethod
nombre 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
--netrc
opció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=1
curl --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()
