Buscar aquí

04 mayo 2017

importar ovpn a Network Manager

Importar una VPN del tipo OpenVPN en Network Manager siempre tiene algún problema, entonces la manera más fácil y fluida que encontré es hacerlo a través de la consola de comados con:


nmcli connection import type openvpn file /ruta/al/archivo/ovpn

ejemploL

[root@equipo ~]# nmcli connection import type openvpn file /home/user/Documents/configuration.ovpn
Error: failed to import '/home/user/Documents/configuration.ovpn': configuration error: unsupported 1th argument remote_host to 'route' (line 6).

si se fijan, falla en la línea 6, si esa linea es quitada desde el archivo, funciona de inmediato :)

Ojo, esto se debe hacer como root o usando sudo!!

03 mayo 2017

mejorar las búsquedas con locate

Una herramienta muy buena para buscar archivos en los sistemas de archivos es el comando locate.  Una de las ventaja/desventaja es que si queremos buscar por una parte del path o nombre del archivo, funciona perfecto, por ejemplo, si se necesita saber todos los archivos que contienen la palabra que ingreso, por ejemplo:

locate iso

buscará todos los archivos que en el nombre tienen iso o directorios que su nombre contenga iso.

Ahora, para una búsqueda más precisa  puede ser usado con expresiones regulares, por ejemplo, si se quiere buscar solamente los archivos que terminan con la palabra iso, puedo buscar con:

locate --regexp iso$

/home//SOS/rhel-server-6.4-x86_64-dvd.iso
/home/ISOS/rhel-server-6.6-x86_64-dvd.iso
/home/ISOS/rhel-server-6.8-x86_64-dvd.iso
/home/ISOS/rhel-server-7.2-x86_64-dvd.iso


Cabe notar que locate se actualiza diaramente, en base a la ejecución de un comando y que tiene una base de datos desde donde muestra los resultados.  Si se quiere actualizar los resultados, debe ser ejecutado manualmente, para más detalles revisar man locate.

01 diciembre 2016

obtener como resultado la entrada pero recortada

Al momento de trabajar con texto, puede ser necesario recortar la salida de este texto, por ejemplo,

echo 12.3456789

es necesario que muestre solo 3 decimales:

echo 12.3456789 | sed -r 's/([0-9]+\.[0-9][0-9][0-9])[0-9]+/\1/g'
12.345

La magia está en el uso de paréntesis en la sección de formato y en la sección de reemplazo el \1, esto significa:

- los parentesis redondos, marcan una sección que se recordara.
- el \1 indica que se usará el primero bloque marcado en el formato.

Explicando la expresión regular va a recordar cuando venga 1 o más números entre 0 y 9, seguido por el caracter de punto, seguido de 3 números, cada uno entre 0 y 9.  Este es el bloque a recordar.  Además, la expresión contempla que debe venir seguido de un numero de 1 o más cifras entre 0 y 9, pero esto no se recuerda pues no está entre paréntesis. 

El -r en el sed es para que indicarle que use expresiones regulares extendidas, pues el uso de estos parámetros no son parte del conjunto estandard de opciones.

Cómo dejar una captura de red ejecutándose en background y generando múltiples archivos?

Muchas veces es necesario realizar capturas e idealmente que se ejecute por un periodo de tiempo largo y no depender de la VPN, hora, etc... y ahí es donde se puede aprovechar comandos de linux y las opciones de tcpdump que permite justamente generar múltiples archivos circulares.

Primero, cómo dejar corriendo en background un proceso, en este caso una captura con tcpdump.  Se puede ejecutar utilizando nohup y el simbolo de & para ejecutarlo en background y dejar el comando atado a la consola.

Segundo, parámetros de tcpdump para generar múltiples archivos y uso circular.  tcpdump incluye las opciones de -C y -W (notar que son mayúsculas!!!), cada uno:

  • -C hace referencia al tamaño del archivo con la base de 1MB, así se debe poner un número y esto significa el tamaño de MB qeu tendrá el archvo, por ejemplo, si se usa -C 10 significa la generación de archivos de 10MB.
  • -W hace referencia a la cantidad de archivos, se debe agregar un número para justamente indicar cuántos archivos se van a generar, por ejemplo, -W 10, indicamos que se generen hasta 10 archivos, cuando se creen los 10 y el último exceda el tamaño indicado en el parámetro -C se comenzará a escribir el primer archivo.
 Entonces el comando completo sería:

                    nohup tcpdump -vvvv -C 10 -W 10 -w /tmp/cap0112.cap &

¿Cómo terminar la captura?
Simple, buscamos el pid del la captura ejecutándose, por ejemplo:
             ps aux | grep tcpdump

y después kill -9

17 noviembre 2016

Buscar en comandos anteriores

Es común en linux, utilizar las teclas del cursor para buscar comandos anteriores o lanzar el history y usar la salida, pero también existe la opción de utilizar la búsqueda reversa aplicando control + r en la consola y así por ejemplo, si yo quiero buscar un ls anterior

[root@mipc ~]# man ls
(reverse-i-search)`ls': man ls

entre las comillas dice que el ultimo comando ejecutado con ls  es 'man ls'.  Si quiero uno anterior, vuelvo a presionar control +r y obtengo:

[root@lxmardones ~]#
(reverse-i-search)`ls': ls -lS

como ven una muy buena opción para buscar.

04 octubre 2016

Cómo probar (testear) un script que será ejecutado por cron?

Suele ser muy común que al querer dejar programado un script en cron, se pierde tiempo en:
- corrección de rutas de los scripts o comandos a ejecutar
- falta de logs para conocer errores

entre las más comunes, una buena opción, para probar esto, sin tener que esperar un ciclo de la programación de cron, ni tener que meter mano a crontab, es usar el comando at, disponible en todos los unix.  Este comando, es muy simple, por ejemplo:

Para ejecutar un script, automaticamente en 5 minutos más:

at now + 5 minutes -f /ruta/a/mi/script

y listo, está programado para 5 minutos más a partir desde ahora, lo ejecutará solo esa vez y nada más al igual que cron, si no tiene redirección de logs, generará un mail.

para ejecutar el script a una hora en particular, basta usar:

at 20:05 -f /ruta/a/mi/script

y listo, si necesitan saber si quedo programado, se usa el at -l y mostrará la lista de procesos agendado y a que hora se ejecutará.

08 julio 2016

personalizando la salida del ps

el comando ps permite ver la lista de procesos en el sistema operativo, y tiene muchísimas opciones para filtrar o seleccionar la información.

Al ejecutar ps, muestra los procesos corriendo para el usuario actual.  Ahora si se quiere ver todos los procesos del sistema se puede ejecutar:

ps -A

va a mostrar por defecto:
          - el pid asociado al proceso.
          - si está corriendo en alguna tty (terminal).
          - comando.

si se quiere ver detalles del comando, porque por ejemplo, cualquier cosa que use java, dirá solo java y claramente esto no da luces de nada, se puede usar:

ps -Af

si se quiere personalizar la lista de datos, porque queremos agregar por ejemplo el tamaño del proceso en RAM, se puede usar:

ps -Ao pid,ppid,rss,args

con esto se obtiene:

- el pid del proceso.
- pid del proceso padre.
- tamaño del proceso en kilobytes.
- comando completo con argumentos.


también se puede agregar el porcentaje de CPU usado al anterior le agregamos pcpu:

ps -Ao pid,ppid,pcpu,rss,args

Esto es con la opción o de output y los nombres siguientes representan a cada elemento, en el man ps se puede obtener a lista de las distintas columnas que se pueden usar.

Ah, para hacer más fácil la ejecución se puede usar un alias para no tener que escribir todo de nuevo.