Descriptores de mandatos de información de SMIT

La Herramienta de interfaz de gestión del sistema (SMIT) puede utilizar varios descriptores definidos en sus objetos para obtener la información, como por ejemplo los valores de tiempo de ejecución actuales, necesarios para continuar a través de la estructura de interfaz SMIT.

A cada uno de estos descriptores se le asigna algún tipo de serie de mandato para ejecutar y recuperar los datos necesarios.

Los descriptores que se pueden establecer en un mandato para el descubrimiento de la información necesaria son:

  • El descriptor cmd_to_discover que forma parte de la clase de objeto sm_cmd_hdr utilizada para definir una cabecera de diálogo.
  • Descriptor cmd_to_classify que forma parte de la clase de objeto sm_name_hdr utilizada para definir una cabecera de selector.
  • El descriptor cmd_to_list que forma parte de la clase de objeto sm_cmd_opt utilizada para definir una lista de opciones de selector asociada a un selector o una lista de opciones de mandato de diálogo asociada a un campo de entrada de diálogo.

SMIT ejecuta una serie de mandato especificada por un descriptor cmd_to_list, cmd_to_classifyo cmd_to_discover creando primero un proceso hijo. El error estándar (strerr) y la salida estándar del proceso hijo se redirigen a SMIT a través de conductos. SMIT ejecuta a continuación un setenv ("ENV =")Subrutina en el proceso hijo para impedir que los mandatos especificados en el archivo $HOME/.env del usuario se ejecuten automáticamente cuando se invoque un shell nuevo. Por último, la SMIT llama a la subrutina del sistema execl para iniciar un nuevo shell ksh, utilizando la cadena de comandos como valor del parámetro ksh -c. Si el valor de salida no es 0, SMIT notifica al usuario que el mandato ha fallado.

SMIT hace que los nombres de vía de acceso de los archivos de registro y los valores de la línea de mandatos verbose, tracey debug estén disponibles en el entorno de shell de los mandatos que ejecuta. Estos valores se proporcionan a través de las variables de entorno siguientes:

  • _XX_ENCODE_CASE_ONE archivo_registro
  • _archivo_SCRIPT_SMIT
  • _SMIT_VERBOSE_FLAG
  • _SMIT_TRACE_FLAG
  • _SMIT_DEBUG_FLAG

La presencia o ausencia del distintivo correspondiente se indica mediante un valor de 0 o 1, respectivamente.

Una forma fácil de ver los valores actuales es invocar la función de shell después de iniciar SMIT y, a continuación, ejecutar la serie de mandato env | grep _SMIT.

Todas las escrituras en los archivos de registro deben realizarse como añadidos y deben ir seguidas inmediatamente de vaciados a menos que esto ocurra automáticamente.

El descriptor cmd_to_discover

Cuando SMIT pone un diálogo, obtiene el objeto sm_cmd_hdr (cabecera de diálogo) y su cuerpo de diálogo asociado (uno o más objetos sm_cmd_opt ) del repositorio de objetos. Sin embargo, los objetos sm_cmd_opt también se pueden inicializar con los valores de tiempo de ejecución actuales. Sism_cmd_hdr.cmd_to_discoverel campo no está vacío (""), SMIT ejecuta el mandato especificado en el campo para obtener los valores de tiempo de ejecución actuales.

Cualquier serie de mandato ksh válida se puede utilizar como un valor de descriptor cmd_to_discover . El mandato debe generar el siguiente formato de salida como salida estándar:

#name_1:name_2: ... :name_n\n
value_1:value_2: ... :value_n

En la salida estándar de un mandato, el primer carácter siempre es un#(signo de libra). A\n(carácter de línea nueva) siempre está presente para separar la línea de nombre de la línea de valor. Varios nombres y valores están separados por:(dos puntos). Y cualquier nombre o valor puede ser una cadena vacía (que en el formato de salida aparece como dos dos puntos sin espacio entre ellos). SMIT mantiene un valor actual interno establecido en este formato que se utiliza para pasar pares de nombre-valor de una pantalla a la siguiente.

Nota: Si el valor incluye un:(dos puntos), : debe ir precedido de#!(signo de libra, signo de exclamación). De lo contrario, SMIT lee el:(dos puntos) como separador de campo.

Cuando SMIT ejecuta un mandato especificado en uncmd_to_discover, captura el campostdoutdel mandato y carga estos pares nombre-valor (name_1yvalue_1 name_2yvalue_2, y así sucesivamente) en los descriptores disp_values y aix_values de los objetos sm_cmd_opt (opción de mandato de diálogo) haciendo coincidir cada nombre con un descriptor sm_cmd_opt.disc_field_name en cada objeto sm_cmd_opt .

Para un objeto sm_cmd_opt (opción de mandato de diálogo) que muestra un valor de un selector anterior, el descriptor disc_field_name del objeto de opción de mandato de diálogo debe establecerse en"_rawname"o"_cookedname"(o cualquier nombre alternativo que se haya utilizado para alterar temporalmente el nombre predeterminado) para indicar qué valor se debe utilizar. En este caso, el descriptor disc_field_name del objeto sm_cmd_opt (opción de mandato de diálogo) normalmente debe ser un campo sin entrada. Si un valor determinado debe pasarse siempre al mandato, el descriptor required para el objeto sm_cmd_opt (opción de mandato de diálogo) debe establecerse eny(sí), o una de las otras alternativas.

Un caso especial de inicialización de campo de anillo de opción permite el valor actual para un descriptor cmd_to_discover (es decir, cualquier par nombre-valor del conjunto de valores actual de un diálogo) de un campo de entrada de anillo para especificar qué valor de anillo predefinido utilizar como valor predeterminado o inicial para el campo de entrada correspondiente. Durante la inicialización del diálogo, cuando un campo de entrada de diálogo coincide con un nombre del conjunto de valores actual del diálogo (a través de sm_cmd_opt.disc_field_name), se realiza una comprobación para determinar si es un campo de anillo de opciones (sm_cmd_opt.op_type = "r") y si tiene valores de anillo predefinidos (sm_cmd_opt.aix_values ! = ""). Si es así, este conjunto de valores de anillo de opciones se compara con el valor actual para nombre_campo_disc del conjunto de valores actual. Si se encuentra una coincidencia, el valor de anillo de opción coincidente se convierte en el valor de anillo predeterminado (sm_cmd_opt.value_index se establece en su índice). Se muestra el valor traducido correspondiente (sm_cmd_opt.disp_values), si está disponible. Si no se encuentra ninguna coincidencia, se informa del error y el valor actual se convierte en el valor predeterminado y único para el anillo.

En muchos casos, los mandatos de descubrimiento ya existen. En los dispositivos y áreas de almacenamiento, existen los paradigmas generales de añadir, eliminar, cambiar y mostrar. Por ejemplo, para añadir (mk), se necesita un diálogo para solicitar características. El diálogo puede tener como mandato de descubrimiento el mandato show (ls) con un parámetro que solicita valores predeterminados. SMIT utiliza la salida estándar del mandato show (ls) para rellenar los valores predeterminados sugeridos. Sin embargo, para los objetos con valores predeterminados que son constantes conocidas en el momento del desarrollo (es decir, que no se basan en el estado actual de una máquina determinada), los valores predeterminados se pueden inicializar en los propios registros de diálogo; en este caso, no se necesita cmd_to_discover . A continuación, se visualiza el diálogo. Cuando se rellenan todos los campos y se confirma el diálogo, se ejecuta el mandato añadir (mk).

Como otro ejemplo, un diálogo de cambio (ch) puede tener como mandato de descubrimiento un mandato show (ls) para obtener los valores actuales de una instancia determinada como, por ejemplo, un dispositivo determinado. SMIT utiliza la salida estándar del mandato show (ls) para rellenar los valores antes de visualizar el diálogo. El mandato show (ls) utilizado para el descubrimiento en esta instancia puede ser el mismo que el utilizado para el descubrimiento en el ejemplo de adición (mk), excepto con un conjunto de opciones ligeramente diferente.

Los descriptores cmd_to_ * _postfix

Asociado con cada aparición de un descriptor cmd_to_discover, cmd_to_classifyo cmd_to_list es un segundo descriptor que define el postfijo para la serie de mandato definida por cmd_to_discover, cmd_to_classify, o descriptor cmd_to_list . El postfijo es una serie de caracteres que define los distintivos y parámetros que se añaden al mandato antes de que se ejecute.

Los descriptores que se pueden utilizar para definir un postfijo que se va a añadir a un mandato son:

  • Descriptor cmd_to_discover_postfix que define el postfijo para el descriptor cmd_to_discover en un objeto sm_cmd_hdr que define una cabecera de diálogo.
  • Descriptor cmd_to_classify_postfix que define el postfijo para el descriptor cmd_to_classify en un objeto sm_name_hdr que define una cabecera de selector.
  • El descriptor cmd_to_list_postfix que define el postfijo para el descriptor lista_to_cmd en un objeto sm_cmd_opt que define un campo de entrada de selector asociado a un selector o un campo de entrada de diálogo asociado a un diálogo.

A continuación se muestra un ejemplo de cómo se utilizan los descriptores de postfijo para especificar distintivos y valores de parámetro. Los 2*(asterisco) en el ejemplo puede serlist,classify, odiscover.

Supongamos quecmd_to_*es igual a"DEMO -a", quecmd_to_*_postfixes igual a"-l _rawname -n stuff -R _cookedname", y que el valor actual establecido es:

#name1:_rawname:_cookedname::stuff\n
value1:gigatronicundulator:parallel:xxx:47

A continuación, la serie de mandato construida sería:

DEMO -a -l 'gigatronicundulator' -n '47' -R 'parallel'

Alrededor''(comillas simples) se pueden añadir alrededor de valores de descriptor de postfijo para permitir el manejo de valores de parámetro con espacios incorporados.