Clientes para conexión remota (PuTTy, SecureCRT…)

En mis comienzos con el Telnet y SSH y las conexiones con máquinas remotas utilizaba PuTTy, una herramienta que me enseñó mi querido colega Roberto Andradas en alguna clase de EDI o MTP… jeje, qué tiempos.

Investigando en su momento descubrí PuTTy Tray, un interesante proyecto que ofrecía ciertas mejoras al tradicional cliente de PuTTy. Entre otras, transparencias, poder minimizar directamente al System Tray, mejorar la portabilidad, linkar desde PuTTy a un navegador las URLs…

En la actualidad, debido al inmenso número de máquinas que administro en el trabajo, tuve que hacer un cambio obligado de cliente SSH. Con PuTTy lo intenté, a través del PuTTy Session Manager, que proporciona una nueva ventana en la que se pueden visualizar de forma ordenada las sesiones guardadas, para acceder directamente a ellas.

Pero debido a que para acceder a ciertas máquinas tengo que saltar pasando por otras…. y PuTTy no ofrece generar scripts que automaticen esta tarea, al final tuve que recurrir al cliente SecureCRT, que aunque es de pago, ofrece bastantes mejoras para poder trabajar con varias terminales a la vez. Entre otras cosas, permite ejecutar scripts y comandos en varias ventanas a la vez… bastante útil cuando administras muchas máquinas.

En definitiva, cada cliente tiene sus ventajas e inconvenientes, dependiendo del uso que se le va a dar… por eso, es mejor ir probando cada uno, hasta encontrar el que realmente se ajuste a tus necesidades. A pesar de todo, yo sigo abriendo de vez en cuando mi querido PuTTy 🙂 .

Cómo resetear un autoincremental en MySQL

En las BBDD es típico utilizar la función de autoincrementar las claves primarias de las tablas. De este modo se consigue que se vaya incrementando el campo en cada nueva tupla.

Si necesitamos borrar la tabla, y que además este valor se resetee, para volver a comenzar con 1, la opción más sencilla es ejecutar la siguiente sentencia:

TRUNCATE nombre_tabla;

Con esto conseguimos vaciar la tabla, como si hubieramos hecho de nuevo el CREATE TABLE.

Si lo que necesitamos es hacer que el valor autoincremental tome un valor determinado es posible utilizar la siguiente sentencia, que establece un valor para la siguiente tupla.

ALTER TABLE nombre_tabla AUTO_INCREMENT=1

Con esto conseguimos resetear el campo autoincrementable. Ojo, si existen registros con el valor que hemos asignado, continuará por el último…

Fuente.

Ver MAC de interfaz de red en Linux

Existe una forma interesante para poder sacar la MAC asociada a una interfaz de RED. Hay un fichero que tiene almacenada la MAC de la interfaz de Red, y existen tantos ficheros de este estilo, como interfaces de red tenga la máquina.

El fichero en cuestión es: /sys/class/net/eth0/address, donde eth0, identifica la interfaz de red.

Ejemplo:

[10:47:19 root@coloso01:~]# cat  /sys/class/net/eth0/address
00:14:5e:2a:55:c0

Setencias MySQL directamente desde la terminal

Hoy he descubierto un modo interesante, y sobretodo ágil para ejecutar sentencias de MySQL directamente en la terminal de comandos del SSOO, sin tener que estar dentro del propio sistemas de gestión de BBDD.

La sentencia en concreto sería:

[root@host01:~]# mysql -umiusuario -pmipassword -e 'select * from mi_tabla where fecha > "2009-09-17 17:00:00";' mi_base_de_datos

donde:

  • -u: indica el usuario de acceso a la BBDD.
  • -p: indica la password de acceso a la BBDD.

El único problema que le veo a esto, es que en el histórico se quedan almacenados tanto el usuario como la password de la BBDD, lo cuál puede ser un agujero de seguridad…

Para evitar que en el histórico se quede almacenada la password de la BBDD, es posible no indicar la password en el propio comando y que el propio MySQL la pida posteriormente de esta forma:

[root@host01:~]# mysql -umiusuario -p -e 'select * from mi_tabla where fecha > "2009-09-17 17:00:00";' mi_base_de_datos

El problema es que este comando no nos valdrá para usarlo en scripts.

Logear mensajes personales en el /var/log/messages

Para logear mensajes personales en el fichero /var/log/messages puedes usar la herramienta logger de unix.

Un ejemplo sencillo sería:

logger Esto es una prueba cutrecilla

y podrías observar el resultado así:

tail -20 /var/log/messages

Puedes incluso poner más información (Esto tiene que ser incluído en el código de un bash script):

logger -t `basename $0` i am still testing

Fuente

Problema con los efectos del escritorio en Ubuntu 9.04

Anoche actualicé mi Ubuntu a la versión 9.04, y en principio todo funcionaba correctamente, exceptos los efectos del escritorio.
Al ir a configurarlos de nuevo (Sistema->Preferencias->Apariencia->Efectos visuales) y seleccionar «Normal» ó «Extra» me saltaba una ventana con el mensaje… «No se han podido activar los efectos del escritorio«, total… que buscando por ahí encontré esta solución, que a mí, me funciona.

Desde una terminal, escribimos:

sudo vi /usr/bin/compiz

Una vez abierto el fichero, buscamos la línea que pone «# blacklist based on the pci ids» y anteponemos un «#» en todas las líneas hasta la línea que indica «unset T«, de este modo:

# blacklist based on the pci ids
# See http://wiki.compiz-fusion.org/Hardware/Blacklist for details
#T=" 1002:5954 1002:5854 1002:5955" # ati rs480
#T="$T 1002:4153" # ATI Rv350
#T="$T 8086:2982 8086:2992 8086:29a2 8086:2a02 8086:2a12" # intel 965
#T="$T 8086:2a02 " # Intel GM965
#T="$T 8086:3577 8086:2562 " # Intel 830MG, 845G (LP: #259385)
#BLACKLIST_PCIIDS="$T"
#unset T

Guardamos el fichero, y reiniciamos el equipo.

Esto es una de las cosas que menos me gusta de Linux, si realmente estamos apostando por una interfaz de usuario sencilla… no me imagino a un usuario novel solucionando este problema, y eso que es bastante sencillo.

Trucos sobre el comando history de Unix

A veces nos interesa poder eliminar todos los registros que quedan almacenados en el history del usuario, para ello existen los siguientes comandos:

Borrar el history:

history -c

Existe otro modo (más cutre, y que sólo elimina el histórico de sesiones antiguas, y no de la actual…):

cat /dev/null > ~/.bash_history

Si sólo queremos que no se almacenen los comandos de la sesión actual, basta con utilizar los siguientes comandos:

unset HISTFILE
unset SAVEHISE

Otra opción, más drástica, es evitar que se genere el fichero donde se almacenen los comandos. Esto se haría así:

ln -s /dev/null ~/.bash_history

ngrep (Network GREP)

Ngrep es un grep para el tráfico de red, es una utilidad que puede ser usada para encontrar los patrones de búsqueda en la capa de red.

Para instalarla:

  1. Ir a http://ngrep.sourceforge.net/ y descargar los binarios del programa.
  2. Descomprimimos: bzip2 -cd ngrep-1.45.tar.bz2 | tar -xv
  3. configuramos el ejecutable: ./configure
  4. make
  5. Instalamos: make install (Para ejecutar este paso tienes que ser usuario root). El programa se habrá instalado en el directorio /usr/local/bin y el manual en el directorio/usr/local/man.

Ejemplos:

ngrep '' udp (print all UDP packets)
ngrep '' icmp (print all ICMP packets)
ngrep '' port 53 (print TCP or UDP port 53 packets)
ngrep '' tcp port 23 (print TCP port 23 packets)
ngrep 'LILWORD' port 138 (print Microsoft browsing traffic for NT domain LILWORLD)
ngrep -iq 'rcpt to|mail from' tcp port 25 (monitor current delivery and print sender and recipients)
ngrep 'user' port 110 (monitor POP3)
ngrep -q 'abcd' icmp (Microsoft operating systems fill the ICMP payload with the alphabet; is the "pinging" host running a Microsoft operating system?)
ngrep -iq 'user-agent' tcp port 80 (determine client application that client host is running)
ngrep '220' port 21 (determine version of FTP server)
ngrep 'SSH' port 22 (investigate Secure Shell)
ngrep -v '' port 23 (see all traffic but telnet)
ngrep -d le0 '' (listen to le0)
ngrep -x ssword
ngrep -e -x host 192.168.1.10
ngrep -d wlan0 -n 3
ngrep -wi -d wlan0 'user|pass' port 6667
ngrep -q -wi 'user|pass'
ngrep -q -W byline port 8000 -n 5

Fuente en InformIT.

Aprendiendo a usar rsync

rsync es una aplicación del mundo Unix que permite sincronizar ficheros entre máquinas.

Un ejemplo de su uso sería el siguiente:

rsync -avrP --times --perms --links --exclude "*~" /ruta/a/documentos usuario@servidor:documentos

donde:

  • rsync: el programa que va a hacerse cargo del respaldo.
  • avrP: son las opciones: a significa “modo de archivo”, v por “verbose” (o sea, que verás en la terminal toda la información relevante sobre el proceso), r es por “recursivo” (respaldará el directorio ~/documentos y todo lo que esté dentro de él, incluyendo directorios) y P es para permitir la transfrerencia parcial de archivos (muy útil si se transfieren archivos muy grandes; si se llegara a cortar la conexión, retomará donde quedó, no desde el principio).
  • –times: Indica a rsync que envíe la fecha de modificación del fichero, de modo que se detecten actual¡zaciones de éstos y se sincronicen correctamente.
  • –perms: Para que se sincronicen también los permisos.
  • –links: Para que se sincronicen los links.
  • –exclude «*~»: con esto conseguimos que no sincronice los ficheros de backup.
  • /ruta/a/documentos es el directorio local que quieres sincronizar.
  • usuario@servidor:documentos es la información del servidor remoto donde se sincronizarán los ficheros.

Para poder utilizar esto de forma automática, sería necesario tener las llaves de SSH preparados para un login automático.