Para los que no conocen a VIM, es una versión mejorada del editor de texto VI y es uno de los editores mas populares en las distribuciones Linux y es una herramienta que todo sysadmin debe conocer.

Un amigo me pidió hace unos días que lo ayudara a aprender esta herramienta, y en mi búsqueda de material para ofrecerle encontré esta joya y decidí compartirla.

https://anderrasovazquez.github.io/curso-de-vim/

Es un pequeño curso realizado por Ander Raso Vazquez con la finalidad de enseñar lo básico del uso de esta gran herramienta.

Espero que esta información les sea útil, saludos.

Leer más

Cuando PhpMyAdmin nos muestra el error 1146 y/o nos muestra una advertencia relacionada con controluser solo basta abrir el archivo /etc/phpmyadmin/config.inc.php con su editor favorito y modificar lo siguiente:

$cfg['Servers'][$i]['controluser'] = $dbuser;
$cfg['Servers'][$i]['controlpass'] = $dbpass;

Para que quede de la siguiente forma:

$cfg['Servers'][$i]['controluser'] = ''; //$dbuser;
$cfg['Servers'][$i]['controlpass'] = '': //$dbpass;

Guardamos el archivo, reiniciamos el servidor web y listo.

Espero que esta información les sea útil, saludos…

Leer más

Este es un error muy común a la hora de utilizar WSUS, incluso después de crear la GPO correspondiente y esto puede generar un gran dolor de cabeza en el administrador, muchas veces para corregirlo solo basta con ejecutar los siguientes comandos en el equipos que se desea registrar.

gpupdate /force
net start wuauserv
wuauclt /detectnow /register /reportnow /resetauthorization

Espero que esta información les sea útil, saludos…

Leer más

Si al entrar a la opción de verificar estado de su GitLab y observa el siguiente mensaje: Migrations are pending. To resolve this issue, run: bin/rails db:migrate RAILS_ENV=production, solo debe ejecutar el siguiente comando:

sudo gitlab-rake db:migrate RAILS_ENV=production

Espero que esta información les sea útil, saludos.

Leer más

A veces es necesario enviar mensaje que aparezcan en la pantalla del equipo en forma de notificación, para esto solo se debe ejecutar el siguiente comando.

msg * /server:x.x.x.x /time:600 Escriba su mensaje aquí.

x.x.x.x corresponde al IP del equipo al cual va a enviar el mensaje. En cambio si desea enviar el mismo mensaje a varios equipos el procedimiento es el siguiente:

  1. Cree un archivo de texto llamado lista.txt que contenga los IP (un IP por linea) de los equipos que recibirán el mensaje.
  2. Cree un archivo de texto llamado mensaje.txt con el siguiente contenido:
FOR /F %%p IN (C:\lista.txt) DO msg * /server:%%p /time:600 Escriba su mensaje aquí.

Cambie la extensión del archivo mensaje.txt a mensaje.bat, luego de esto solo falta ejecutar el script.

Espero que esta información les sea útil, saludos.

Leer más

Una pregunta muy común entre usuarios de rsync es como evitar la copia de un archivo; para ello solo debemos agregar un parámetro al momento de ejecutar el comando:

rsync -avhn --exclude 'Thumbs.db' origen destino

En este ejemplo excluimos el archivo thumb.db pero puede sustituirse por cualquier archivo.

Espero que esta información les sea útil, saludos…

Leer más

Este pequeño truco nos permite saber la IP publica de un equipo desde la linea de comandos, solo basta ejecutar el siguiente comando:

dig +short myip.opendns.com @resolver1.opendns.com

Una alternativa a dicho comando podría ser la siguiente:

dig TXT +short o-o.myaddr.l.google.com @ns1.google.com

Espero que esta información les sea útil, saludos…

Leer más

Si estás utilizando la librería python-oauth para autenticarte contra un servicio por medio de OAuth y te consigues con el error:
AttributeError: 'module' object has no attribute 'OAuthSignatureMethod_HMAC_SHA1'

Entonces tengo la solución para ti.

El problema es que la clase no está en el módulo oauth, sino en oauth.oauth. Entonces, en lugar de hacer:
import oauth

Prueba con:
try:
import oauth.oauth
except:
import oauth

De nada ;)

Referencias:

Leer más

En ocasiones nos toca respaldar gran cantidad de información de un equipo a otro y una de las maneras más cómodas de hacerlo es a través de la red. Para esta tarea usaremos Rsync que, al igual que netcat, son unas navajas suizas en lo que a red se refiere. Rsync, entre otras cosas, nos permite sincronizar directorios a través de la red y de esa forma lo usaremos para enviar nuestros archivos de un equipo a otro.

Comando y parámetros

Lo primero que necesitamos es acceso vía SSH al equipo remoto. Puede ser por clave pública o con usuario y contraseña. Luego nos ubicamos en la carpeta que queremos respaldar y ejecutamos el comando: $ rsync -ravz archivo_a_respaldar usuario@IP:directorio_destino Donde:
  • r: recorre los directorios de manera recursiva
  • a: conserva los atributos de los archivos (usuario, permisos, etc)
  • v: imprime información en pantalla
  • z: comprime los datos antes de enviar
Luego de la autenticación comenzará la copia de los archivos. Es importante resaltar que en el directorio_destino debemos colocar la ruta absoluta a la carpeta.

Copiar un archivo

Supongamos que queremos respaldar el archivo backup.tar.gz en un equipo remoto con IP 192.168.0.3, el usuario es satanas y el directorio destino es el home del usuario, el comando nos quedaría así:
$ rsync -avz backup.tar.gz satanas@192.168.0.3:~
El símbolo ~ puede sustituirse por la ruta absoluta /home/satanas.

Copiar un directorio y todos sus subdirectorios

Ahora supongamos que queremos respaldar el directorio /tmp/music en el mismo equipo anterior pero ahora el destino es la carpeta /home/satanas/musica, el comando nos quedaría así: $ rsync -ravz /tmp/music satanas@192.168.0.3:/home/satanas/musica

Con esta receta podremos pasar nuestro respaldo de archivos de un equipo a otro sin mucho inconveniente. Espero que les sirva

Leer más

Se que a muchos les da curiosidad ver que sucede cuando intentamos eliminar de forma recursiva todos los archivos y directorios del directorio raíz de nuestro sistema así que aproveche de hacer un video precisamente ejecutando rm -Rf /* como root. Aquí pueden ver el video:

Como ven las consecuencias son visibles tan pronto empezamos a ejecutar este comando y si se fijaron hay directorios que no son eliminados.

Estos directorios como es el caso de /proc residen en memoria y no pueden ser eliminados mientras que otros como /var contienen directorios que a su vez residen en memoria con es el caso de /var/tmp en mi instalación de Fedora.



Post-análisis luego del rm -Rf /

En vista de que me han preguntado varias veces y muchos han especulado sin realmente tener pruebas me decidi a averiguar en que estado quedaba el sistema operativo. ¿Que archivos y directorios sobrevivieron?

Para responder esto simplemente monte el disco duro viejo en otra instalación de linux y ejecute find /mnt/oldhdd -type lo que arrojo como resultado:

/mnt/oldhdd/
/mnt/oldhdd/sys
/mnt/oldhdd/dev
/mnt/oldhdd/var
/mnt/oldhdd/var/tmp
/mnt/oldhdd/run
/mnt/oldhdd/run/libgpod
/mnt/oldhdd/run/faillock
/mnt/oldhdd/run/setroubleshoot
/mnt/oldhdd/run/openvpn
/mnt/oldhdd/run/plymouth
/mnt/oldhdd/run/wpa_supplicant
/mnt/oldhdd/run/netreport
/mnt/oldhdd/run/mdadm
/mnt/oldhdd/run/cups
/mnt/oldhdd/run/cups/certs
/mnt/oldhdd/run/spice-vdagentd
/mnt/oldhdd/run/sepermit
/mnt/oldhdd/run/abrt
/mnt/oldhdd/run/console
/mnt/oldhdd/run/vpnc
/mnt/oldhdd/run/ppp
/mnt/oldhdd/run/blkid
/mnt/oldhdd/run/setrans
/mnt/oldhdd/run/utmp
/mnt/oldhdd/run/net-snmp
/mnt/oldhdd/run/lock
/mnt/oldhdd/run/lock/dmraid
/mnt/oldhdd/run/lock/lockdev
/mnt/oldhdd/run/lock/ppp
/mnt/oldhdd/run/NetworkManager
/mnt/oldhdd/run/saslauthd
/mnt/oldhdd/run/gdm
/mnt/oldhdd/run/gdm/greeter
/mnt/oldhdd/run/pptp
/mnt/oldhdd/proc
/mnt/oldhdd/boot
/mnt/oldhdd/media
/mnt/oldhdd/tmp

Como ven a excepción de /mnt/oldhdd/run/utmp todos son directorios.

Leer más