miércoles, 30 de mayo de 2012

Instalar Paquetes y Dependencias Solaris 10 con pkgutil


Hoy cansado de bajar unos paquetes para solaris 10, dije tiene que haber un comando similar para este sistema operativo como los que ya conozco apt-get, urpmi, yum, u2date, etc.

Finalmente me topé con el comando pkg-get, al intentar bajarlo me indicaba que ya era obsoleto y me sugería otro paquete denominado pkgutil.

Con este comando podemos bajar paquetes y sus dependencias de una forma rápida y simple, bueno no quiero aburrirlos más con el parloteo, comencemos descargando el paquete desde el siguiente enlace: Download pkgutil.pkg


Lo instalamos:

# pkgadd -d pkgutil.pkg


Nos aparecerá algo como lo siguiente, seleccionamos la opción por defecto all y luego yes:

Select package(s) you wish to process (or 'all' to process
all packages). (default: all) [?,??,q]: all

Procesando versión del software desde
pkgutil - Installs Solaris packages easily(all) 2.6.4,REV=2012.02.21
Please see /opt/csw/share/doc/pkgutil/license for license information.
## Procesando información del paquete.
## Procesando información de sistema.
## Verificando las dependencias del paquete.
## Verificando el espacio de disco requerido.
## Comprobando posibles conflictos con paquetes que ya están instalados.
## Comprobando programas setuid/setgid.
Este paquete contiene archivos de comandos que serán ejecutados con
permiso de superusuario durante el proceso de instalación de este
paquete.
Desea continuar con la instalación de [y,n,?] y 

NOTE! Make sure to check out any changes in /etc/opt/csw/pkgutil.conf.CSW.
NOTE!

La instalación de fue satisfactoria.


Al querer ejecutarlo posiblemente no lo encontrará, ya que no está en el path de ejecución, verificamos donde fue instalado:

# find / -name pkgutil
/var/opt/csw/pkgutil
/opt/csw/bin/pkgutil <-- Acá
/opt/csw/libexec/pkgutil
/opt/csw/share/doc/pkgutil
/opt/csw/var/pkgutil


Verificamos cual es el path de ejecución:

# echo $PATH
/usr/sbin:/usr/bin


Agregamos la ruta donde se encuentra el binario del pkgutil al path ya existente (la ruta es /opt/csw/bin):

# export PATH=/usr/sbin:/usr/bin:/opt/csw/bin/


Lo agregamos en el profile del usuario para que cuando iniciemos nuevamente siga existiendo:

# vi ~/.bash_profile
export PATH=/usr/sbin:/usr/bin:/opt/csw/bin/


Ahora simplemente ejecutamos pkg+TAB y vemos que nos completa el comando ó nos muestra las posibles opciones que antes no nos mostraba:

# pkgutil
pkgutil 2.6.4, install Solaris packages the easy way.
Usage: pkgutil [option]... [package](-[version])...
  -i, --install         Install package
  -u, --upgrade         Upgrade package
  -r, --remove          Remove package (experimental)
  -d, --download        Download only
  -U, --catalog         Update catalog
  -a, --available       Show available packages
      --describe        Describe available packages
  -c, --compare         Compare installed packages to current
  -C, --compare-diff    Same as -c but only show different versions
  -A, --compare-avail   Compare available packages to those installed
  -e, --email=address   Send e-mail with available updates
  -t, --temp=site       Temporarily use this site as primary for download
  -x, --exclude=pattern Pattern to exclude
  -W, --workdir=path    Path to use for work directory
  -P, --pkgdir=path     Path to use for package downloads
  -R, --rootpath=path   Path to use for root_path
      --config=file     Use this configuration file
  -y, --yes             Answer yes on all prompts
  -f, --force           Force updates (sync with mirror)
  -n, --nomod           No modifications are made to the system
  -N, --nodeps          No dependencies
  -D, --debug           Debug mode
      --trace           Set trace mode (-v) for pkgadd/pkgrm
  -h, --help            Show this help
  -v, --version         Show version
  -V, --syscheck        System check
  -l, --list            List installed packages
  -L, --listfile        List files in package
  -F, --findfile        Find files in package
      --deptree=depth   Display dependency tree
      --extract         Extract package content (use with -d)
  -s, --stream          Build a package stream (use with -d)
  -o, --output=file     File name for package stream (use with -s)
  -T, --target=arch:rel Specify architecture and OS release for download
      --single          Single package check (use with -c)
  -p, --param=opt:val   Override configuration option
      --parse           Machine parsable output
      --cleanup         Clean up obsolete packages
      --catinfo         Catalog info
Example: pkgutil -i CSWwget (install wget and its dependencies)
Written and maintained by Peter Bonivart. Web site: http://pkgutil.net.


Buscamos un paquete:

# pkgutil -a wget
common               package              catalog                        size
wget                 CSWwget              1.13.4,REV=2012.05.12      838.8 KB
wgetpaste            CSWwgetpaste         2.18,REV=2011.03.28          9.3 KB


Verificamos dependencias e instalamos wget:

# pkgutil -i CSWwget
Solving needed dependencies ...
Solving dependency order ...
12 CURRENT packages:
        CSWcommon-1.5,REV=2010.12.11
        CSWggettext-data-0.18.1.1,p,REV=2011.03.15
        CSWggettextrt-0.18.1.1,p,REV=2011.03.15
        CSWiconv-1.14,REV=2011.08.08
        CSWlibasprintf0-0.18.1.1,p,REV=2011.03.15
        CSWlibcharset1-1.14,REV=2011.08.07
        CSWlibgettextpo0-0.18.1.1,p,REV=2011.03.15
        CSWlibiconv2-1.14,REV=2011.08.07
        CSWlibintl2-0.18.1.1,p,REV=2011.02.12
        CSWlibintl3-0.18.1.1,p,REV=2011.02.12
        CSWlibintl8-0.18.1.1,p,REV=2011.03.15
        CSWterminfo-5.9,REV=2011.11.21
Install 7 NEW packages:
        CSWlibncurses5-5.9,REV=2011.11.21 (opencsw/testing)
        CSWlibncursesw5-5.9,REV=2011.11.21 (opencsw/testing)
        CSWlibpanel5-5.9,REV=2011.11.21 (opencsw/testing)
        CSWlibpanelw5-5.9,REV=2011.11.21 (opencsw/testing)
        CSWncurses-5.9,REV=2011.11.21 (opencsw/testing)
        CSWvim-7.3.055,REV=2010.11.25 (opencsw/testing)
        CSWvimrt-7.3.055,REV=2010.11.25 (opencsw/testing)
Total size: 8.9 MB
7 packages to fetch. Do you want to continue? ([y],n,auto) y

Desea instalar estos paquetes conflictivos? y


Listo, ya tenemos instalado wget, lo probamos descargando la página de google:

# wget www.google.com.ar
--2012-05-31 16:32:13--  http://www.google.com.ar/
Resolviendo www.google.com.ar (www.google.com.ar)... 74.125.229.223, 74.125.229.215, 74.125.229.216
Conectando con www.google.com.ar (www.google.com.ar)[74.125.229.223]:80... conectado.
Petición HTTP enviada, esperando respuesta... 200 OK
Longitud: no especificado [text/html]
Grabando a: "index.html"


La configuración se encuentra en:

 /opt/csw/etc/pkgutil.conf


Si queremos actualizar a la última versión de pkgutil ejecutamos:

# pkgutil -u pkgutil
Solving needed dependencies ...
Solving dependency order ...
1 CURRENT packages:
        CSWpkgutil-2.6.4,REV=2012.02.21

Nothing to do.


Algo típico que suele ocurrir es que por defecto se descargue el paquete en una partición que no posea espacio, si queremos que lo descargue solamente en otra ruta, como por ejemplo /export/home ejecutamos lo siguiente:


# pkgutil -d --pkgdir /export/home/ wget




martes, 29 de mayo de 2012

Caduca el password de root del LDAP


Me caducó el usuario root del LDAP de un dominio armado pésimamente y cada vez que me logueaba me pedía cambiarla la contraseña, la cambiaba bien, cerraba sesión y volvía a loguearme y me pedía nuevamente cambiarla.

Luego de probar varias cosas en la web nos topamos con la siguiente solución:

Nos logueamos al equipo que solicitaba cambio de password con el usuario root, cambiamos el password y luego ejecutamos lo siguiente:

# slappasswd
New password:  (ingresamos un nuevo password)
Re-enter new password:  (ingresamos nuevamente el password)
{SSHA}orlmpqujartedwuhjS39M\S5yoc93b36d7\9q6zkPuaj


Nos solicitará que ingresemos el password, por defecto nos crea un hash SSHA del password, si queremos otra opción que no sea esta la especificamos con el parámetro -h (tenemos: {CRYPT}, {MD5}, {SMD5}, {SHA}).

Luego editamos el archivo de configuración del LDAP y reemplazamos la línea abajo indicada:

#vim /etc/openldap/slapd.conf 

Comentar la linea vieja:

#rootpw    {SSHA}lasdPal1/AaoloWQwelaZa3r2ZalzP

Y reemplazarla por esta otra:

rootpw {SSHA}orlmpqujartedwuhjS39M\S5yoc93b36d7\9q6zkPuaj


Verificamos el pid para matar el proceso:

# ps -efa |grep ldap
user      5391     1  1 14:57 ?        00:00:12 /usr/local/libexec/slapd -h ldap://127.0.0.1/ ldap://192.168.0.100/ ldaps:///


Lo matamos:


# kill -9 5391


Volvemos a  ejecutarlo:

# /usr/local/libexec/slapd -h ldap://127.0.0.1/ ldap://192.168.0.100/ ldaps:///

jueves, 24 de mayo de 2012

Habilitar SSH para root en Solaris 10


Editamos el archivo del SSHd y debemos cambiar el PermitRootLogin de no a yes:

# vim /etc/ssh/sshd_config
PermitRootLogin yes

Reiniciamos el Servicio:

# /lib/svc/method/sshd restart

domingo, 20 de mayo de 2012

Monitorear con Nagios un proceso Python

En el Server que corre el Python (192.168.0.100):


Creamos el script para chequear el python:

server# vim /usr/local/apps/nagios/libexec/check_miPython
#!/bin/bash
/usr/bin/ps -efa |grep mi_python.py|grep -v grep > /tmp/mi_python.py.log
if test $? -eq 0
then
echo OK - Python mi_python.py is RUNNING
/usr/bin/rm /tmp/mi_python.py.log
exit 0
else
echo CRITICAL - Python mi_python.py is NOT RUNNING !!!
/usr/bin/rm /tmp/mi_python.py.log
exit 2
fi
NOTA: el 0 devuelve OK, el 1 WARNING y el 2 CRITICAL


Damos permisos de ejecución:
server# chmod a+x /usr/local/apps/nagios/libexec/check_miPython.sh


Editamos la configuración del NRPE y lo agregamos en la sección de comandos customizados:
server# vim /usr/local/apps/nagios/etc/nrpe.cfg
command[check_miPython]=/usr/local/apps/nagios/libexec/check_miPython


Matamos y volvemos a correr el nrpe:
server# ps -efa |grep nrpe
  nagios 24497     1   0 12:47:49 ?           0:00 /usr/local/nagios/bin/nrpe -d -c /usr/local/nagios/etc/nrpe.cfg
    root 24920 24763   0 12:57:59 pts/22      0:00 grep nrpe
server# kill -9 24497
server# /usr/local/nagios/bin/nrpe -d -c /usr/local/nagios/etc/nrpe.cfg


Lo testeamos:
server# /usr/local/nagios/libexec/check_miPython
OK - Python miPython is RUNNING


Cambiamos en el script el nombre del proceso para ver que realmente funciona y nos devuelve critical:
server# vim /usr/local/nagios/libexec/check_miPython
#Cambiamos mi_python.py por mi_piton.py
#en la línea: /usr/bin/ps -efa |grep mi_python.py|grep -v grep > /tmp/mi_python.py.log


Volvemos testear y ahora nos devuelve CRITICAL:
server# /usr/local/nagios/libexec/check_miPython
CRITICAL - Python miPython is NOT RUNNING !!!

Volvemos a cambiarlo para que funcione correctamente como estaba anteriormente.


Ahora vamos al server del nagios para agregar al monitoreo:



Testeamos el servicio mediante el check_nrpe:
nagios# /usr/local/nagios/libexec/check_nrpe -H 192.168.0.100 -c check_miPython
OK - Python miPython is RUNNING


Editamos el archivo services.conf:
nagios# vim /usr/local/nagios/etc/services.cfg
..... define service{
use                             generic-service
host_name                       pythonServer
service_description             mi_Python
check_command                   check_nrpe!check_miPython
}
        .....


Checkeamos la config del nagios:
nagios# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg


Reiniciamos el servicio de nagios:
nagios# /etc/init.d/nagios reload


sábado, 19 de mayo de 2012

NFS Server Debian Squeeze 6.0

Qué es NFS?

NFS es un sistema de archivos de red, el cuál permite conectar distintos equipos mediante el acceso remoto de archivos como si fuera accedidos localmente.

Instalamos los paquetes:
# apt-get install portmap nfs-kernel-server

Creamos la carpeta que exportaremos:
# mkdir /backup

Editamos el archivo export, donde indicamos la ruta a compartir:
# vim /etc/export /carpeta-a-exportar 192.168.0.0/16(rw,sync,no_root_squash,no_subtree_check)
#/carpeta-a-exportar Carpeta compartida
#192.168.0.0/16 Red 192.168. desde las cuales puede mapearse
#rw Lectura y Escritura
#sync Sincroniza
#no_root_squash Habilita Privilegios de root
#no_subtree_check Deshabilitar el chequeo de sub-arbol

Reiniciamos los servicios:
# /etc/init.d/portmap restart
# /etc/init.d/nfs-kernel-server restart

Para acceder desde un cliente Linux:
# mkdir /carpeta-local-donde-montar
# mount -t nfs 192.168.0.100:/carpeta-a-exportar /carpeta-local-donde-montar

Para habilitarlo en el booteo cuando arranca el S.O. agregamos lo siguiente en el fstab:
# vim /etc/fstab
192.168.0.100:/carpeta-a-exportar - /carpeta-local-donde-montar nfs - yes

Ahora si queremos acceder desde un cliente Solaris 10, debemos cambiar por lo siguiente:
# mount -F nfs -o vers=3 192.168.0.100:/carpeta-a-exportar /carpeta-local-donde-montar

Y en vez del fstab lo agregamos al vfstab, no olvidemos agregar la versión:
# vim /etc/vfstab
192.168.0.100:/backup - /backup nfs - yes vers=3

FUENTES:
http://es.wikipedia.org/
http://www.server-world.info/
http://www.spacebugs.nl/

viernes, 11 de mayo de 2012

Nagios - Error: Could not open command file '/usr/local/nagios/var/rw/nagios.cmd' for update !

Hoy reinicie un servidor de nagios que yo no había instalado, lo heredé de otro administrador y recibí el siguiente error al tratar de dar un :

Error: Could not open command file '/usr/local/apps/nagios/var/rw/nagios.cmd' for update !

The permission on the external command file and/or directory may be incorrect. Read the FAQs on how to setup proper permissions.

An eror ocurred while attempting to commit your command for processing


Probé darle permisos a dicho archivo y pude solucionar el problema:

# ls -l /usr/local/nagios/var/rw/nagios.cmd
prw-rw---- 1 nagios nagios 0 May 11 20:01 /usr/local/nagios/var/rw/nagios.cmd


# chmod 777 /usr/local/nagios/var/rw/nagios.cmd


Imagen del error: