Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Utilice Junos PyEZ para acceder al Shell en dispositivos Junos

La CLI de Junos tiene muchos comandos de modo operativo que devuelven información similar a la que devuelven muchos comandos de shell. Por lo tanto, no es necesario tener acceso al shell de nivel UNIX en dispositivos Junos. Sin embargo, en algunos casos, es posible que un usuario o aplicación necesite tener acceso al shell y ejecutar comandos de shell o comandos de CLI desde el shell.

El módulo Junos PyEZ jnpr.junos.utils.start_shell define la clase, lo StartShell que permite a las aplicaciones de Junos PyEZ iniciar una conexión SSH a un dispositivo Junos y acceder al shell. Los StartShell métodos permiten a la aplicación ejecutar comandos a través de la conexión y recuperar la respuesta. Los StartShell open() métodos y close() establecen y terminan una conexión SSH con el dispositivo. Como resultado, si la aplicación cliente solo requiere acceso al shell, puede omitir las llamadas a los Device open() métodos y close() .

A partir de Junos PyEZ versión 2.6.4, Startshell admite la shell_type opción dentro de scripts remotos para especificar el tipo de shell. De forma predeterminada, Startshell las instancias son de tipo C Shell (csh). También puede especificar shell_type="sh" para iniciar un shell de estilo Bourne (ash).

El StartShell run() método ejecuta un comando shell y espera la respuesta. De forma predeterminada, el método espera uno de los indicadores de shell predeterminados (%, #,  > o $) antes de devolver el resultado del comando. Si establece el this="string" argumento en una cadena específica, el método espera la cadena o el patrón esperados antes de devolver el resultado del comando. El valor devuelto es una tupla, donde el primer elemento es True si el código de salida es 0, y False de lo contrario, y el segundo elemento es el resultado del comando.

En el ejemplo siguiente, se conecta a un host y ejecuta dos comandos de modo operativo desde el shell. La secuencia de comandos ejecuta primero el request support information comando y guarda el resultado en un archivo. A continuación, la secuencia de comandos ejecuta el show version comando, almacena el resultado en la version variable y, a continuación, imprime el contenido de la variable.

En este ejemplo, la tupla devuelto incluye el booleano correspondiente al código de salida del comando y el resultado show version del comando. La salida de este ejemplo se trunca para la brevedad.

Las instancias de la StartShell clase también se pueden usar como administradores de contexto. En este caso, no es necesario llamar explícitamente a los StartShell open() métodos y close() . Por ejemplo:

Puede incluir el StartShell timeout argumento para especificar la duración del tiempo en segundos que la utilidad debe esperar para la cadena o el patrón esperados en el shell de Junos OS antes de agotar el tiempo de espera. Si no especifica un tiempo de espera, el valor predeterminado es de 30 segundos.

En ciertos casos, es posible que deba ejecutar comandos de shell sin retorno, como el comando, que muestra el monitor traffic tráfico que se origina o termina en el motor de enrutamiento local. En la CLI de Junos OS, el monitor traffic comando muestra la información en tiempo real hasta que el usuario envía una secuencia de teclado Ctrl + c para detener la captura de paquetes.

Puede ejecutar comandos de shell sin retorno mediante el StartShell run() método incluyendo el argumento this=None. Cuando se incluye el this=None argumento, el método espera hasta que el valor de tiempo de espera especificado para recuperar y devolver todos los comandos de salida del shell. En este caso, el primer elemento de la tupla devuelto es True cuando el resultado del comando de shell ejecutado devuelve contenido y el segundo elemento es el resultado del comando. Si omite el this argumento o lo establece como igual a una cadena o patrón específico, el método podría devolver una salida parcial para un comando que no se revuelvo si encuentra un símbolo predeterminado o el patrón de cadena especificado dentro de la salida del comando.

El siguiente código de ejemplo ejecuta el monitor traffic interface fxp0 comando, espera 15 segundos y, a continuación, recupera y devuelve el resultado del comando.