lunes, 11 de abril de 2016

Software Logistics Toolset 1.0 => Software Provisioning Manager 1.0

SAP genero una evolucion del antiguo sapint para la instalacion y actualizacion de sistemas SAP, llamado: Software Logistics Toolset, que agrupa una seria de herramientas para la instalacion y mantencion de los sistemas:

>

Las herramientas mas comunmente usadas son:
  • Software Update Manager (version al dia de hoy: 1.0 SP16 parche 6)
  • Software Provisioning Manager (version al dia de hoy: 1.0 SP10 parche 3)
Veremos las opciones disponibles para el "Software Provision Manager" que es usado para: instalar, copiar, transformar, dividir, renombrar y des-instalar productos basados en "SAP NetWeaver AS ABAP and AS Java".
Los sistemas operativos soportados son:

  • AIX 64bit
  • HP-UX on IA64 64bit
  • HP-UX on PA-RISC 64bit
  • Linux on IA32 32bit
  • Linux on IA64 64bit
  • Linux on Power BE 64bit
  • Linux on x86_64 64bit
  • Linux on zSeries 64bit
  • OS/400
  • Solaris on SPARC 64bit
  • Solaris on x86_64 64bit
  • Windows Server on IA32 32bit
  • Windows on IA64 64bit
  • Windows on x64 64bit 

Existen dos versiones de la herramienta: para sistemas con SAP Netweaver 7.0X (Ej. 70SWPM10SP10_4-20009707.sar )  y para sistemas de versiones mayores a SAP Netweaver 7.0X (EJ. SWPM10SP10_4-20009707.SAR)

Les presentare las opciones iniciales para las dos versiones
70SWPM

Se puede apreciar las diferentes suites soportadas hasta (7i 2011), desde SAP Netweaver 7.0 a 7.0 EHP3, pasando por SAP Solution Manager 7.1 SP1 y 7.0 EHP1 SP1. La capacidad de dividir un Dual-Stack (la cual ya no es soportada en versiones superiores) y otros componentes adicionales como TREX y los agentes de Diagnosticos. Por ejemplo para la suite 7i 2011, se tiene los siguientes productos ( SAP CRM 7.0 , ERP 6.0, SCM 7.0 y SRM 7.0):




Para SAP NetWeaver 7.0 EHP 2 (PI, MI,  ABAP , JAVA):




SWPM
Donde se pueden apreciar las nuevas suites, productos y la aparición de HANA como repositorio.


En otro post veremos un ejemplo de instalación de un AS ABAP.

miércoles, 6 de abril de 2016

Expect - como integrar un programa interactivo a un script

Expect es una herramienta muy útil para integrar esos programas interactivos, que se ejecutan en una shell, con nuestros o script de administración o páginas web o procesos por lotes.
Una descripción de este seria:

"Expect es un programa que “conversa” con otros programs interativos según un "guión" (o script). Siguiendo el guión, Expect sabe lo que puede esperarse de un programa y cuál debería ser la respuesta correcta. Un lenguaje interpretado proporciona estructuras de ramificación y de control de alto nivel para dirigir el diálogo. Además, el usuario puede tomar el control e interactuar directamente cuando se desea, después de devolver el control al script."

Ejemplo de usos de expect:

  • Se desea automatizar la ejecución de un comando en un servidor Unix o Linux, cuya salida puede variar y se desea analizar.
  • Necesitas repetir la misma configuración en varios switchs que se administran vía ssh. Por ejemplo borrar una vlan.
  • Integrar un viejo menú en una aplicación web.

Para poder comprender su uso, presentare un ejemplo simple de como crear una vlan en varios  switch cisco. La ip del switch es contenido  de un archivo que contiene una lista de ips y se pasa como parámetros el usuario y contraseña común a cada switch.

#!/usr/bin/expect -f
# Al igual que todo script se declara en la primera línea la shell a usar
# en este caso /usr/bin/expect con la opcion -f

# Definicio de variables

# defino la variable f que abre el archivo /home/switch/scripts/listado.txt donde
# están almacenadas las ips de los switch que se configuraran, una ip por línea

set f [open "/home/switch/scripts/listado.txt"]

# defino dos variables basado en los argumentos entregados al script 0 para $1 y 1 para $2 ...
# usuario seria el primer argumento
set usuario [lindex $argv 0]
# passwword seria el segundo argumento
set password [lindex $argv 1]
# en este caso el usuario y contraseña es comun a todos los switch a configurar

# para manejar en mejor forma el contenido del archivo genero una lista usando split y la almaceno
# la variable hosts

set hosts [split [read $f] "\n"]

# cierro el archivo /home/switch/scripts/listado.txt
close $f

# para cada una de las ips genero un bucle
foreach host $hosts {

# ejecuto el comando ssh (spawn, permite ejecutar un comando)
spawn ssh $usuario@$host

# la conexion ssh genera una respuesta, la que generalmente puede ser:
# - Pregunta si se debe aceptar el certificado, si esta es la nueva conexion. Si es este caso
# se espera una linea que termina con "no)?" y se envia (send) la palabra "yes", para indicar
# que se acepta y "\r" para el salto de linea o enter.
# - O pregunta por la contraseña, por lo cual se espera una linea terminada en "assword:"
# el comando expect es el encargado de interpretar la salida del comando anterior
# y segun parametros de busqueda determina la siguiente operacion, para este caso que se envia con send
#
expect {
"no)?" {
send "yes\r"
expect "assword:"
}
"assword:"
}

# se envia la contraseña
send $password\r"

# luego se revisa si se accedio al prompt "#"
expect "#"

# se envia "conf term\r" para ingresar al modo de configuracion del switch
send "conf term\r"

# luego se revisa si se accedio al prompt "#"
expect "#"

# se envia "vlan 96\r" para crear (si no existe) o modificar la vlan 96
send "vlan 96\r"

# luego se revisa si se accedio al prompt "#"
expect "#"

# Se configura el nombre de la vlan a vlan96
send "name vlan96\r"

# luego se revisa si se accedio al prompt "#"
expect "#"

# se envia "end" para termina el modo de configuraci&oacuta;n
send "end\r"

# luego se revisa si se accedio al prompt "#"
expect "#"

# se envia "wr" para grabar la configuraci&oacuta;n
send "wr\r"

# luego se revisa si se accedio al prompt "#"
expect "#"

# se envia "exit" para salidar
send "exit\r"
}

Cada vez que se envia un comando utilizamos "\r" para representar la tecla "Intro" o "Enter"

martes, 5 de abril de 2016

Deshabilitar los pendrive en un windows

Debido a los continuos problemas de seguridad que los pendrive (usb) ocasionaban a un cliente, me solicito deshabilitar los pendrive (usb) de los pc windows de los usuarios.

Luego de una búsqueda en Microsoft encontré lo siguiente: https://support.microsoft.com/en-us/kb/823732

Una opción es cambiar los permisos de los archivos:
  • %SystemRoot%\Inf\Usbstor.pnf
  • %SystemRoot%\Inf\Usbstor.inf 
 A que sea de solo lectura, lo cual previene que se puedan modificar y por lo tanto no se pueden instalar los controladores para el pendrive usb.

La segunda opcion ( que considero mas inteligente) es modificar un registro de windows, para que no se inicie el servicio que monta los discos o pendrive usb, bajo la llave:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\USBSTOR]
Se modifica el registro start de 3 a 4 para deshabilitar.




Si se desea configurar este registro desde una política de dominio, pueden generar un txt (con extensión .adm) con el siguiente contenido:


CLASS MACHINE
CATEGORY !!category
 CATEGORY !!categoryname
  POLICY !!policynameusb
   KEYNAME "SYSTEM\CurrentControlSet\Services\USBSTOR"
   EXPLAIN !!explaintextusb
     PART !!labeltextusb DROPDOWNLIST REQUIRED
       VALUENAME "Start"
       ITEMLIST
        NAME !!Disabled VALUE NUMERIC 3 DEFAULT
        NAME !!Enabled VALUE NUMERIC 4
       END ITEMLIST
     END PART
   END POLICY
 END CATEGORY
END CATEGORY

[strings]
category="Custom Policy Settings"
categoryname="Restrict Drives"
policynameusb="Disable USB"
explaintextusb="Disables the computers USB ports by disabling the usbstor.sys driver"
labeltextusb="Disable USB Ports"
Enabled="Enabled"
Disabled="Disabled"




Y agregarlo como una nueva política. Y esta nueva política aplicarlo al grupo de equipos a ser configurados (se debe cambia a Enabled).

Instalación rapida de kvm manager de oracle

 Para instalar kvm manager de oracle se deben seguir los siguientes pasos: Instalar Oracle Linux 7 configurar el fqdn en el archivo /etc/hos...