Buscar aquí

28 febrero 2012

Como revisar en un script si un archivo existe?

Muchas veces para realizar tareas simples, pero programadas necesitamos hacer que un script revise si existe un archivo determinado, esto es bastante simple, pero depende muchas veces del Sistema Operativo, en general, en bash en linux, se puede hacer con un:

if [ -e "rutadelarchivo" ]
then
     comandos
fi

Actualización 24-04.  Al usar el -e para algo como /home/katador/archivo*, es decir, me interesa saber si existen archivos que comiencen con la palabra archivo, al usar el -e sólo, no lo reconoce, entonces es factible usar el truco de:

if [ ls /home/katador/archivo* >/dev/null ]
then
      comandos

fi

Esto quiere decir que si ejecutamos un ls /home/katador/archivo* y existen archivos arrojará el listado de archivos, de lo contrario, arroja un error y utilizando esta misma salida del comando, se utiliza el If, pues sí existen archivos, sera TRUE, de lo contrario, al arrojar el error lo considera FALSE.

El >/dev/null, es la redirección del comando, para que no muestre nada por la salida estandar.
 

08 febrero 2012

Revisar disco utilizado por directorios en HP-UX

Para revisar el disco utilizado en las distintas carpetas, difiere un poco en HPUX de linux.  Por defecto du muestra todas las subcarpetas, tal como en Linux, pero para obtener los mismos resultados cambian los parametros:

- para obtener el tamaño de sólo una carpeta se puede utilizar:
                    du -ks /carpeta
   esto devuelve el numero de kilobytes y el nombre de la carpeta, el k es la opción para los kilobytes y s es para que imprima solo el gran total.
- ordenar la salida de du, por ejemplo de mayor a menor:
                     du -ks /carpeta | sort -nr
   con esto sale ordena de mayor a menor las opciones -n de sort, le indica un orden numérico y r que haga de mayor a menor (reverse).

 Además, si se tienen directorios montados en distintos disco, se hace más complicada la recopilación del espacio en disco, pues se debiera considerar sólo el espacio ocupado por cada device, para ello, se puede utilizar la opción -x que agrega la restricción, para contabilizar el espacio ocupado en el directorio solicitado y los siguientes que estén en el mismo disco, así, por ejemplo si se tiene un escenario donde:



Filesystem          kbytes    used   avail %used Mounted on
/dev/vg00/lvol3    4194304 3685800  504592   88% /
/dev/vg00/lvol1    2097152  183472 1899200    9% /stand
/dev/vg00/lvol8    15728640 12061944 3641728   77% /var
/dev/vg00/lvol6    10616832 4394432 6173848   42% /usr
/dev/vg00/lvol5    2097152 1536144  557096   73% /tmp
/dev/vg00/lvol4    8814592 5364512 3423184   61% /opt
/dev/vg00/lvol7    10485760 7725264 2739488   74% /home
/dev/vgtemipdb/lvol1
                   10485760   20063 9811597    0% /home/oracle/u01
/dev/vgtemipdb/lvol2
                   220200960 81325775 130199831   38% /home/oracle/data

entonces si interesa conocer de manera clara es espacio utilizado en el disco donde está el raíz, podemos utilizar:
                    du -ksx /* | sort -nr





31 enero 2012

Obtener velocidad de tarjeta de red en HPUX

En HPUX, una forma de obtener la velocidad de conexión de la tarjeta de red (que en linux podemos usar mii-tool) es utilizar el comando lanadmin con el parametro -x y el indice de la tarjeta que se quiere revisar.  Ahora si no se sabe cual tarjeta... una opción es usar el comando netstat -i nos muestra la estadísticas de red:

 netstat -i
Name      Mtu  Network         Address         Ipkts              Ierrs Opkts              Oerrs Coll
lan0      1500 10.181.23.0     prd1149         1624149909         0     2348185029         0     0
lo0      32808 loopback        localhost       10500568           0     10500568           0     0
lan4      1500 10.181.10.0     rsp1149         5177904            0     151                0     0

entonces si se ejecuta lanadmin -x 0:

lanadmin -x 0
Speed = 1000 Full-Duplex.
Autonegotiation = On.

24 enero 2012

Depurar scripts en HP-UX o linux

Una de las ventajas de los sistemas *nix, es que se puede hacer una depuración de los script usados en el shell de manera muy simple, mostrando línea a línea lo que ocurre, así por ejemplo, mostrará valores que toman las variables, las ejecuciones de comando, etc... esto sirve para bash, ksh y sh (si no saben que shell están corriendo pueden hacer un echo $SHELL o print $SHELL) la depuración consiste en agregar a la primera línea del script donde se encuentra algo como:

#!/usr/bin/ksh , o
#!/bin/sh , o
#!/bin/bash

le agregamos un -x, quedando #!/usr/bin/ksh -x con esto, la siguiente ejecución mostrará algo como:

> cat test_script.ksh
#!/usr/bin/ksh -x

QTY=1

while [ $QTY -lt 3 ]
do
    print "vez " $QTY
    QTY=$(( QTY + 1))
done

> test_script.ksh
+ QTY=1
+ [ 1 -lt 3 ]
+ print vez  1
vez  1
+ QTY=2
+ [ 2 -lt 3 ]
+ print vez  2
vez  2
+ QTY=3
+ [ 3 -lt 3 ]

Sin -x muestra por pantalla:
vez 1
vez 2

20 enero 2012

como ver el contenido de un paquete instalado en HP-UX

Si el paquete fue agregado con swinstall, se puede revisar con swlist -l file

Obtener información de hardware en HP-UX

En HP-UX, existe una serie de comandos que entregan información muy detallada del sistema:
  • cstm, interfaz de comando que permite obtener la información del sistema, se ingresa a una shell y se debe ingresar:
    • map all, con esto muestra una lista de todos los dispositivos del sistema.
    • selall, con esto se seleciona todo
    • infolog, muestra el log recopilado, con pausas y al final ofrece la opción de guardar el log (SaveAs) o no hacer nada (Done)
Si se tiene HP-UX 11.25, en cstm no muestra la información del clock de los procesadores, para ello es bueno ejecutar: /usr/contrib/bin/machinfo, que entrega información formateada, que probablemente sea suficiente.  Además aquí aparece información de los procesadores.

Si cstm no es capaz de recopilar la información, tambien se puede utilizar print_manifest, que arroja una salida formateada bastante util.  Ojo, que tal vez no este en el PATH, de ser así, en man print_manifest saldrá la ruta, en este caso para HP-UX 11.31 es /opt/ignite/bin/print_manifest.


También se puede utilizar ioscan, para obtener la lista completa, basta ioscan -f, con eso entrega la lista completa de hardware instalado en la máquina.

19 enero 2012

Cómo ver los procesos en forma de árbol, en Solaris y HPUX?

El comando ptree, tanto en Solaris y HP-UX sirve para obtener una lista jerarquizada de los procesos que están ejecutandose en el momento, por ejemplo, en HPUX donde estoy usando screen luce algo así:

PID         COMMAND
29501      screen -h 10000 -S amardone
 29503      /usr/bin/sh
  27588      telnet prd1082
 20897      /usr/bin/sh
 19846      /usr/bin/sh

La identación no es mucha, pero clarifica cual es padre y los hijos no? así se observa que dentro de screen hay tres consolas (/usr/bin/sh) y en una de ellas un telnet.

En particular HP UX, también se puede conseguir un resultado similar con el parámetro H, entonces el comando sería algo como:

ps -feH


Si al ejecutar arroja un error como éste:

ps: illegal option -- H
usage: ps [-edaxzflP] [-u ulist] [-g glist] [-p plist] [-t tlist] [-R prmgroup] [-Z psetidlist]


es porque no está la variable de ambiente UNIX95 que afecta a algunos comando como ps, de hecho si revisan la ayuda de ps, verán que en la opción -H dice (UNIX Standard Only.) esto significa que se debe asignar un valor a la variable UNIX95, que se hace con un tradicional export o setenv dependiendo del shell.

export UNIX95=1

con esto se obtiene el resultado esperado, aunque la salida tal como dije antes, es menos gráfica, algo como esto:

root      1806        1  0  May  1  ?        00:01:26   /usr/sbin/stm/uut/bin/sys/diagmond
root      2194  1806  0  May  1  ?        00:03:31     diaglogd
root      2195  1806  0  May  1  ?        00:17:04     psmctd

Si observan bien, hay un par de espacios de identación a la derecha para señalar los procesos hijos y para los que no sepan, la tercera columna es el ppid, el parent pid o pid padre.