lunes, 30 de julio de 2012

Problema en conexiones remotas en Castellano/Español

¿No os ha pasado nunca que al hacer un SSH contra otro servidor (o rsync o scp... etc) por primera vez desde un sistema en castellano/español hacia otro, habéis tenido problemas al teclear ''? Sí, por ese acento precisamente...


# ssh root@Server
No se puede establecer la autenticidad del sistema 'Server (Server).
RSA la firma de la clave es 52:f1:e9:93:0a:46:ef:64:c7:72:6c:d2:a9:a1:d4:89.
¿Desea continuar con la conexión (sí/no)? sC-
Escriba 'sí' o 'no': sC-
Escriba 'sí' o 'no': no
Verificación de la clave del sistema no satisfactoria.

#


A mí hoy casi me vuelve loca. Estoy en un sistema Solaris 10 que, por algún motivo que ahora mismo no comprendo, el sistema escribe bien los acentos, tiene bien configurados los locales, pero al tener que responder esta pregunta del sistema, no los permite.

Pues nada, a sistema que pu#ea, sysadmin que busca un atajo. Y en este caso es este:


# ssh -o "StrictHostKeyChecking no"  root@Server
Advertencia: Se ha agregado permanentemente 'Server' (RSA) a la lista de hosts conocidos.
Contraseña de root@Server:
Last login: Mon Jul 30 18:02:12 2012 from my_IP
[root@Server ~]# 

#

Ale, y ya me puede poner trabas el jodío, que una se busca las habichuelas!

Hasta otro día, con otro truquito!

miércoles, 25 de julio de 2012

Excluir directorios de la protección .htaccess de Apache

Tenemos un site protegido por contraseña en el .htaccess. Qué bien funciona, qué bien nos va... hasta que llega el día en que nos damos cuenta que necesitamos acceder sin tener que validar esa contraseña a un directorio concreto.

Pues es fácil. Basta con definir un .htaccess en la raiz del directorio que queremos que esté disponible, con el siguiente contenido


allow from all              
satisfy any



 y ya puedo acceder al directorio teniendo el resto de la web protegida.



miércoles, 6 de junio de 2012

Errores ORA-0134 y ORA-27101

Errores:

ORA-0134: ORACLE not availabe
ORA-27101: shared memory realm does not exist

Estos errores suelen darse juntos cuando el Listener de Oracle está levantado, pero la BBDD Oracle no.
Lo único que tenemos que hacer es arrancar el Oracle.

¿Cómo?

Con el usuario
su - oracle
ejecutamos
bash-3.00$ sqlplus "sys as sysdba"

SQL*Plus: Release 11.2.0.3.0 Production on Wed Jun 6 09:58:47 2012

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

Enter password:
Connected to an idle instance.

SQL> startup
ORACLE instance started.

Total System Global Area  689217536 bytes
Fixed Size                  2162384 bytes
Variable Size             629145904 bytes
Database Buffers           50331648 bytes
Redo Buffers                7577600 bytes
Database mounted.
Database opened.
SQL> exit
Disconnected from Oracle Database 11g Release 11.2.0.3.0 - 64bit Production
bash-3.00$

y ya tenemos nuestra BBDD levantada. El error no se volverá a dar (o será otro)

Podéis encontrar más info aquí.

jueves, 31 de mayo de 2012

Error "Too many open files" en nGinx

Cuando en los logs del nGinx tenemos el error

Too many open files

significa que hay demasiadas peticiones y que el nGinx no las puede gestionar.

Para solucionarlo de manera puntual (una vez pasada la punta es recomendable volver al estado normal, o al menos ajustarlo a las características del servidor, en caso de que sea necesario dejarlo porque haya aumentado la carga del servidor), añadimos:

ulimit -n 65535

en la siguiente línea después del '#! /bin/sh' en el

/etc/init.d/nginx

Después, editamos el

/etc/nginx/nginx.conf

y modificamos la línea

worker_connections  1024;

y modificamos el valor a

20480

y añadimos la entrada

worker_rlimit_nofile 20480;

justo debajo del parámetro 'worker_processes'

Reiniciamos el nGinx y durante un rato es recomendable monitorizar el servidor y controlar los parámetros básico de sistema para comprobar que estas modificaciones no tiran el servidor. En caso de que el servidor se hunda, habrá que ir bajando el número de conexiones en el

/etc/nginx/nginx.conf

Ambos parámetros modicados (worker_rlimit_nofile y worker_connections) deben ser iguales.

martes, 24 de abril de 2012

Linux: redimensionar imágenes desde CLI con imagemagick


¿No habéis pensado que sería una pasada poder redimensionar una serie de imágenes de una sola vez sin tener que editarlas una por una? Bueno, a mí sí que me ha pasado, y debo decir que esto me ha salvado más de una vez de una hora de aburrimiento, cuando menos...

La suite ImageMagick trae una serie de programas para la manipulación de imágenes, y es lo que yo suelo utilizar. Tiene muchas opciones y la verdad es que es muy versátil, con lo que me podría extender mucho y no es el caso. Os voy a explicar cómo hago yo para redimensionar imágenes, y las opciones que suelo utilizar para ello. Además, si os interesa, se puede llegar a automatizar e incluirlo en un script que os haga 'el trabajo sucio'. La imaginación al poder!

Casi 1: Voy a redimensionar una carpeta llena de imágenes, todas con el formato 'NOMBRE.JPG', y las quiero al 50% de su resolución actual. Fácil. Desde la línea de comandos y en el directorio donde están las imágenes ejecuto:

for file in `ls -1`; do
   convert $file -resize 50% mod_$file
done


Caso 2
: Ahora tengo muchas imágenes, cada una de su padre y de su madre, diferentes tipos de imágenes (JPG, BMP, PNG, etc) y con resoluciones más o menos diferentes, pero las necesito con una resolución de 800x600. Fácil también. Ejecuto

for file in `ls -1`; do
   convert $file -resize 800x600 mod_$file
done

Caso 3: Algo un poco más complicado. Necesito las muestras de las imágenes para hacer una galería (thumbnails). Sigue siendo sencillo. Ejecuto:

for file in `ls -1`; do
   convert $file thumbnail mod_$file
done

Para más opciones, consultar la página man del programa convert, y os haréis una idea de la potencia del mismo.

Para más información, haz click aquí

lunes, 23 de abril de 2012

"Exec format error" SNMP

Hoy me he han pasado un enlace interesante para monitorizar scripts ejecutados en forma local a través de SNMP, utilizando un ID propio. No es muy complicado y muy interesante, la verdad, así que prometo hacer una entrada de cómo monitorizar estos scripts para que podáis hacerlo si es necesario.

Una vez configurado, al hacer la consulta SNMP desde otro equipo, la consulta me devolvía:


servidor:~# snmpwalk -Ovq -v2c -c COMUNITY IP .1.3.6.1.4.1.2021.8.1.101.1
/etc/snmp/scripts/snmp_mon_cola_postfix.sh: Exec format error




Rebuscando el error por internet, he visto que el problema ha sido no poner el
#!/bin/sh
al principio de mi script. Lo he puesto, y ha sido mano de santo!!!


Ya me contaréis qué tal ;)



miércoles, 29 de febrero de 2012

Errores en disco en Solaris

Hoy voy a postear un par detruquillos fáciles de recordar y que vale la pena tenerlo a mano cuando buscas errores en los discos de Solaris (yo lo utilizo bajo ZFS, es posible que bajo otros formatos funcionen algunos de ellos). Ahí van!

format
nos devuelve todos los discos (o LUNs) disponibles en el servidor. Para salir, hay que acceder a alguno de los discos y hacer 'quit' desde ahí.

Server # format
Searching for disks...done


AVAILABLE DISK SELECTIONS:
       0. c0t0d0
          /pci@0,600000/pci@0/pci@0/scsi@0/sd@0,0
       1. c0t1d0
          /pci@0,600000/pci@0/pci@0/scsi@0/sd@1,0
       2. c3t600601606FC01D00DC76C8F975B6DF11d0
          /scsi_vhci/ssd@g600601606fc01d00dc76c8f975b6df11
       3. c3t600601606FC01D00E0B37FE672B6DF11d0
          /scsi_vhci/ssd@g600601606fc01d00e0b37fe672b6df11
       4. c3t600601606FC01D00E4F142FA72B6DF11d0
          /scsi_vhci/ssd@g600601606fc01d00e4f142fa72b6df11
       5. c3t600601606FC01D0098A820F372B6DF11d0
          /scsi_vhci/ssd@g600601606fc01d0098a820f372b6df11
Specify disk (enter its number): 5
selecting c3t600601606FC01D0098A820F372B6DF11d0
[disk formatted]


FORMAT MENU:
        disk       - select a disk
        type       - select (define) a disk type
        partition  - select (define) a partition table
        current    - describe the current disk
        format     - format and analyze the disk
        repair     - repair a defective sector
        label      - write label to the disk
        analyze    - surface analysis
        defect     - defect list management
        backup     - search for backup labels
        verify     - read and display labels
        save       - save new disk/partition definitions
        inquiry    - show vendor, product and revision
        volname    - set 8-character volume name
        !     - execute , then return
        quit
format
> quit
Server #



iostat -En
nos devuelve datos y estadísticas de error de los discos y LUNs del servidor (nombre, tamaño, errores, tipo de errores, etc)


Server # iostat -En
c0t1d0           Soft Errors: 0 Hard Errors: 0 Transport Errors: 0
Vendor: FUJITSU  Product: MBD2147RC        Revision: 3701 Serial No:
Size: 146.81GB <146810536448 bytes>
Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 0
Illegal Request: 0 Predictive Failure Analysis: 0
c0t0d0           Soft Errors: 0 Hard Errors: 0 Transport Errors: 0
Vendor: FUJITSU  Product: MBD2147RC        Revision: 3702 Serial No:
Size: 146.81GB <146810536448 bytes>
Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 0
Illegal Request: 0 Predictive Failure Analysis: 0
c0t4d0           Soft Errors: 0 Hard Errors: 0 Transport Errors: 0
Vendor: MATSHITA Product: DVD-RAM UJ875AS  Revision: 1.00 Serial No:
Size: 0.00GB <0 bytes>
Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 0
Illegal Request: 2 Predictive Failure Analysis: 0
c3t600601606FC01D00E4F142FA72B6DF11d0 Soft Errors: 0 Hard Errors: 0 Transport Errors: 0
Vendor: DGC      Product: RAID 5           Revision: 0224 Serial No:
Size: 214.75GB <214748364800 bytes>
Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 0
Illegal Request: 1 Predictive Failure Analysis: 0
c3t600601606FC01D0098A820F372B6DF11d0 Soft Errors: 0 Hard Errors: 0 Transport Errors: 0
Vendor: DGC      Product: RAID 5           Revision: 0224 Serial No:
Size: 214.75GB <214748364800 bytes>
Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 0
Illegal Request: 1 Predictive Failure Analysis: 0
c3t600601606FC01D00E0B37FE672B6DF11d0 Soft Errors: 0 Hard Errors: 0 Transport Errors: 0
Vendor: DGC      Product: RAID 5           Revision: 0224 Serial No:
Size: 107.37GB <107374182400 bytes>
Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 0
Illegal Request: 1 Predictive Failure Analysis: 0
c3t600601606FC01D00DC76C8F975B6DF11d0 Soft Errors: 0 Hard Errors: 1 Transport Errors: 0
Vendor: DGC      Product: RAID 5           Revision: 0224 Serial No:
Size: 107.37GB <107374182400 bytes>
Media Error: 0 Device Not Ready: 0 No Device: 1 Recoverable: 0
Illegal Request: 1 Predictive Failure Analysis: 0



zpool iostat -v DISCO
donde DISCO es el pool en el que está montado nos devuelve información de cómo está montado ese recurso. Puede ser un mirror o que esté montado sobre una LUN; en cualquier caso te devuelve la información sobre el recurso.


Server # zpool iostat -v root
                 capacity     operations    bandwidth
pool           used  avail   read  write   read  write
------------  -----  -----  -----  -----  -----  -----
root          67,5G  68,5G      1      5   177K   174K
  mirror      67,5G  68,5G      1      5   177K   174K
    c0t0d0s0      -      -      0      3  89,5K   174K
    c0t1d0s0      -      -      0      3  89,6K   174K
------------  -----  -----  -----  -----  -----  -----

Server # zpool iostat -v flashbackpool
                                           capacity     operations    bandwidth
pool                                     used  avail   read  write   read  write
--------------------------------------  -----  -----  -----  -----  -----  -----
flashbackpool                           27,5G   172G      1      3   199K   136K
  c3t600601606FC01D00E4F142FA72B6DF11d0  27,5G   172G      1      3   199K   136K
--------------------------------------  -----  -----  -----  -----  -----  -----

Server # 
Server # 


miércoles, 1 de febrero de 2012

Activando Server-Status en Apache

Parece una tontería, pero es una herramienta bastante útil a la hora de detectar cuellos de botella en un servidor apache. Últimamente me ha sido decisiva a la hora de detectar dos de estos casos en poco tiempo, y aunque su activación es un momento, muchos administradores no lo tienen en cuenta.

También es verdad que hay otros módulos, del propio apache o de terceros, pero este, por su simplicidad, facilidad a la hora de instalar (viene prácticamente por defecto, sólo hay que configurarlo) y por su utilidad, debería estar en cualquier checklist de instalación.

Lo primero es instalar el paquete apache; dependiendo de tu distribución se hace de una manera u otra (apt-get install apache2, aptitude apache2, yum install http, etc). Yo seguiré a partir del momento en que vuestro Apache funciona correctamente.

Antes que nada, debéis confirmar si la directiva

ExtendedStatus

está activada o no; en caso de no estarlo, la activáis (descomentándola o poniéndola en On). En caso de estar activad, pues ya la tenemos. Si no la encontráis, podéis dar de alta la línea 
ExtendedStatus On

en el archivo de configuración apache2.conf o httpd.conf, por ejemplo (o en cualquier archivo de configuración que vaya a leer el apache al levantar).

El siguiente paso es configurar el manejador. Es posible que vuestra distro ya lo tenga activado sin configurar. En el caso de distribuciones tipo Debian, en el directorio mods-available encuentro la configuración para este módulo en status.conf. Si edito me encuentro que la configuración por defecto es:
 
#
# Allow server status reports generated by mod_status,
# with the URL of http://servername/server-status
# Uncomment and change the "192.0.2.0/24" to allow access from other hosts.
#

    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1 ::1
    Allow from 192.168.253.0/24


# Keep track of extended status information for each request
ExtendedStatus On

# Determine if mod_status displays the first 63 characters of a request or
# the last 63, assuming the request itself is greater than 63 chars.
# Default: Off
#SeeRequestTail On



    # Show Proxy LoadBalancer status in mod_status
    ProxyStatus On




Yo me voy a centrar en la parte del handler, el manejadro que comentaba antes:
     SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1 ::1
#    Allow from 192.168.1.0/24




Aquí podremos cambiar la manera de llamar al manejador; por defecto es '/server-status', pero por seguridad está bien que lo cambies, más que nada porque esta directriz mal configurada puede estar disponible públicamente, y no interesa. Con llamarlo '/config-status' o '/server-stat' o algo parecido ya es suficiente.
La siguente cosa en que nos fijamos en los usuarios que se permiten; sólo permite acceso desde localhost, pero si descomentamos el último 'Allow' podremos acceder también desde toda nuestra red privada 192.168.1.0/24 (o desde la red o IPs que le pongamos, aquí es donde configuramos el acceso)

Y ya está. Hacemos una comprobación de la configuración con
apache2ctl configtest

y cuando nos dé el OK, hacemos un reload para cargar los cambios. Y comprobamos que tengamos acceso al server-status de la máquina desde un navegador:
http://nombredelservidor/server-status