Esta es MI guía de los comandos linux que más uso en mi día a día en la administración de sistemas.
Como algunos compis me lo habéis pedido, pues estos son mis comandos TOP (ssh, top, scp, rsync, mysql, pwgen, vim y otros):
Mis comandos TOP para administrar sistemas.
- 1. Conectando con SSH.
- 2. Conectando con clave RSA.
- 3. Subiendo y bajando ficheros con SCP.
- 4. Sincronizar ficheros con Rsync.
- 5. Comprimir por consola; gzip, tar, tar.gz…
- 6. Editando con Vim.
- 7. Restaurando y copiando bases de datos; Mysql, Mysqldump.
- 8. Controlando con Top.
- 9. Generar contraseñas aleatorias; Pwgen.
- 10. Procesos que más carga consumen, PS.
- 11. Generar códigos QR.
1. Conectando con ssh
ssh — OpenSSH SSH client (remote login program)
Para conectar:
ssh usuario@dominio.ext
Con puerto ssh distinto al 22:
ssh usuario@dominio.ext -p 22222
Recordar:
- El comando ssh se utiliza para conectar entre máquinas que tengan el openssh (Linux y Mac), por lo que si necesitas conectar desde un Windows busca algún programa para conectar por ssh tipo Putty.
- El usuario debe ser usuario de ssh, no vale el del acceso a panel de hosting, si no se han dado permisos chrooted.
- La contraseña no muestra nada al añadirla, aunque no lo parezca estas escribiendo.
2. Conectando con clave RSA.
ssh-keygen — authentication key generation, management and conversion
Generar clave SSH-RSA:
ssh-keygen -t rsa
Genera los siguientes ficheros:
/ruta/usuario/.ssh/authorized_keys -> Claves públicas RSA de los equipo permitidos. /ruta/usuario/.ssh/id_rsa -> Cifrado de tu clave. /ruta/usuario/.ssh/id_rsa.pub -> Clave RSA pública. /ruta/usuario/.ssh/known_hosts -> Cifrado de los equipos guardados.
Recordar:
- Al ejecutar el comando ssh-keygen te mostrará por pantalla la home donde se han creado los ficheros. Y además solicita la contraseña o frase para conectar.
- El fichero id_rsa es el que guarda la información de tu conexión, por lo que nunca, nunca, lo copies o compartas.
- El fichero id_rsa.pub es la parte pública de tu clave rsa que te permite conectar a otro equipo, por lo que puede verla todo el mundo. No le da a nadie acceso a tu equipo, pero si te permite a ti conectar a cualquier equipo que tenga tu clave rsa pública añadida en su fichero authorized_keys.
3. Subiendo y bajando ficheros con SCP.
scp — secure copy (remote file copy program)
Subir un fichero de mi equipo al servidor:
scp /ruta_origen/fichero usuario@dominio.ext:/ruta/destino/
Bajar un fichero del servidor a mi equipo:
scp usuario@dominio.ext:/ruta/destino/fichero /ruta/origen/
Recordar:
- Estos comandos están pensados para ejecutarse en tu equipo y conectarse al servidor.
- Cuidado con las rutas de origen y destino, cada uno en su equipo.
- Si quieres subir o bajar un directorio completo, comprime el directorio, SCP solo permite subir o bajar ficheros.
4. Sincronizar ficheros con Rsync.
rsync – a fast, versatile, remote (and local) file-copying tool
Sincronizar directorios en un mismo equipo:
rsync -avz /ruta/origen/ /ruta/destino/
Subir ficheros de mi equipo a un servidor:
rsync -avz /ruta/origen/ usuario@dominio.ext:/ruta/destino/
Bajar ficheros de un servidor a mi equipo:
rsync -avz usuario@dominio.ext:/ruta/origen/ /ruta/destino/
Sincronizar directorios con puerto SSH diferente al 22:
rsync -avz -e "ssh -p 22222" /ruta/origen/ usuario@dominio.ext:/ruta/destino/
Sincronizar directorios sin sobreescribir:
rsync --ignore-existing /ruta/origen/ usuario@dominio.ext:/ruta/destino/
Recordar:
- Si quieres sincronizar o copiar un directorio completo, incluidos los ficheros ocultos, usa «/*» en la ruta de origen. El asterisco después de / para que incluya todos los ficheros (ojo al .htacces).
5. Comprimir por consola; gzip, tar, tar.gz…
Principales métodos de compresión que uso:
ZIP:
Comprimir: zip nombre.zip /ruta/fichero Descomprimir: unzip nombre.zip
RAR:
Comprimir: rar -a nombre.rar /ruta/directorio/ Descomprimir: unrar -x nombre.rar
GZIP:
Comprimir: gzip -9 fichero Descomprimir: gzip -d fichero.gz
TAR.GZ:
Comprimir: tar -czvf nombre.tar.gz /directorio/a/comprimir/ Descomprimir: tar -xzvf nombre.tar.gz
Recordar:
- Posiblemente tengáis que instalar la paqueteria de alguno de estos comandos si no lo habéis usado aún.
- Los métodos de compresión ZIP y RAR tienen la opción verbose, por lo que ejecutando el comando con -v y el fichero nos sacará por pantalla el contenido del fichero.
6. Editando con Vim.
vim – Vi IMproved, a programmers text editor
Comandos básicos para abrir un fichero con vim:
Abrir en primera línea del fichero: vim fichero Abrir en la línea X del fichero: vim fichero +X
Existen dos modos en Vim, el modo editar o insertar y el modo comando. Como diferencia principal el modo editar nos permite escribir, borrar, modificar, etc el contenido del fichero, mientras que el modo comando nos sirve para movernos, buscar contenido, realizar acciones masivas, desde la líne de comandos de Vim.
Acciones más comunes en el modo editar:
Pasar a modo editar: presionar tecla insert (o i en Mac). Salir de modo editar: presiona tecla esc.
Fuera de modo editar:
Moverse al inicio del fichero: presionar gg Moverse al final del fichero: presionar Mayúscula + g Moverse al final de una línea: presiona $ Moverse al inicio de una línea: presiona 0 (cero) Moverse una palabra a la derecha: presiona w Moverse una palabra a la izquierda: presiona b Borrar línea completa: presiona dd
Acciones más comunes en el modo comando:
Pasar a modo comando: presionar tecla de /. A continuació te aparecerá en la línea de abajo el espacio de la línea de comando de Vim. Salir de modo comando: presiona tecla esc. Para numerar las líneas del fichero escribe despues de /: set number : Para buscar una cadena escribe despues de /: cadenaabuscar Para añadir color al texto escribe despues de /: syntax on : Para guardar los cambios escribe despues de /: w Para salir del fchero escribe despues de /: q Para guardar y salir del fichero escribe despues de /: wq
* Recuerda pulsar intro para ver los resultados.
7. Restaurando y copiando bases de datos; Mysql y Mysqldump.
En servidores con Mysql usa para:
Exportar base de datos:
mysqldump -u usuario -p nombredb > copiadb.sql
Importar copia de base de datos:
mysql -u usuario -p nombredb < copiadb.sql
Exportar todas las bases de datos en un fichero:
mysqldump -u usuario -p --all-databases > copiaddbb.sql
En paneles Plesk, usar usuario admin y clave del fichero /etc/psa/.psa.shadow:
mysql -u admin -p`cat /etc/psa/.psa.shadow` nombredb < copiadb.sql mysqldump -u admin -p`cat /etc/psa/.psa.shadow` nombredb > copiadb.sql
Recuerda:
- Puedes poner entre comillas simples la contraseña después de -p, pero no es recomendable ya que se guardaría en el history. Si no le indicas la contraseña te la pedirá por línea de comandos y no se guardará copia de ella.
- Ojo a las comillas al llamar al fichero, no son comillas lo que envuelve a cat /etc/psa/.psa.shadow, sino el acento abierto. Pulsamos tecla de acento abierto y a continuación espacio para que nos aparezca.
8. Controlando con Top.
El comando Top te muestra en la ejecución de procesos en tiempo real. Y aunque a algunos SysAdmins les suene a antiguo, a mi me gusta tener el top abierto en una consola mientras ejecuto tareas que puedan afectar al rendimiento del servidor y ir viendo lo que ocurre.
La información interesante que te muestra el Top es:
Línea Top: los días que lleva sin reiniciarse y la carga o load average, en 3 tiempos diferentes: último minuto, últimos 5 minutos y últimos 15 minutos, lo que te permite saber si la carga esta subiendo o esta bajando.
Línea Task: el total de procesos activos, activos pero dormidos, parados y zombies.
Línea Cpu (% de carga en cpu según el número de cpus disponibles):
us, usuario: tiempo ejecutando procesos de usuario desapercibidos sy, system: tiempo de ejecución de los procesos del kernel ni, agradable: tiempo ejecutando procesos de usuario agradables id, inactivo: tiempo pasado en el controlador inactivo del núcleo wa, IO-wait: tiempo de espera para la finalización de E / S hi: tiempo dedicado al servicio de interrupciones de hardware si: tiempo dedicado al servicio de interrupciones de software st: tiempo robado de este vm por el hipervisor
Línea KiB Mem (Uso de la memoria física):
total: valor total de la memoria física. free: valor de la memoria libre. used: valor de la memoria usada por el usuario. buff/cache: Valor de memoria física del buffer de memoria.
Línea KiB Swap (Uso de la memoria Swap):
total: valor total de la memoria swap. free: valor disponible de la memoria swap. used: valor de memoria swap usada por el usuario. avail Mem: Valor de memoria swap cacheada.
A continuación puedes ver en tiempo real los procesos que se están ejecutando, su PID, User, Pr (prioridad del proceso), Virt (memoria virtual usada), Res (tamaño que ocupa la tarea), SHR y S (estado del proceso), %CPU y %MEM, Time (tiempo que lleva en ejecución) y COMMAND (Comando que ejecuta el proceso).
Puedes moverte por el listado con la tecla «><» y volver con mayúscula + «><«.
9. Generar contraseñas aleatorias; Pwgen.
pwgen – generate pronounceable passwords
Para generar contraseñas aleatorias simples:
pwgen
Para generar contraseñas aleatorias con simbolos y seguras:
pwgen -Bsy
Para generar contraseñas aleatorias y indicar el número de carácteres (16 carácteres):
pwgen +16
Ejemplo: para generar 10 contraseñas con simbolos de 16 carácteres cada una:
pwgen -Bsy +16 +10
10. Procesos que más carga consumen, PS.
ps – informa del estado de los procesos
Lista por orden de mayor consumo de RAM:
ps aux | awk '{print $2, $4, $11}' | sort -k2r | head -n 10
11. Generar códigos QR.
Para generar directamente códigos QR en la consola linux:
printf "https://ericaaguado.es" | curl -F-=\<- http://qrenco.de/
** Reemplazar la url por el texto que se quiera generar en el código QR.