Mostrando entradas con la etiqueta tips. Mostrar todas las entradas
Mostrando entradas con la etiqueta tips. Mostrar todas las entradas

jueves, 10 de enero de 2019

No guardar comandos ejecutados en historial de bash

Hoy vamos a ver un sencillo truco para evitar que los comandos ejecutados en nuestra sesión de bash pasen al fichero .bash_history. Será de utilidad cuando se quieren eliminar parte de las huellas de un acceso a un equipo o para evitar que otros sepan qué comandos ejecutó alguien en una conexión anterior.

lunes, 7 de enero de 2019

Usar tildes y eñes en Python

Python es un lenguaje de programación ampliamente usado para todo tipo de proyectos. Es usado también para realizar scripts de administración de sistemas que requieren una complejidad excesiva para realizarlos en bash, por lo que se usa casi un día sí y otro también.
Hoy vamos a ver cómo solucionar un problema que se da en ocasiones: cómo usar tildes, eñes y otros caracteres usados en castellano sin que nos de el siguiente error:
SyntaxError: Non-ASCII character '\xc3' in file ./script.py on line 3, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

lunes, 31 de diciembre de 2018

Reemplazar texto dentro de ficheros

En algunas ocasiones se hace necesario cambiar algún texto dentro de un fichero. En una primera aproximación, se puede usar un fichero temporal para ello:
$ cat fichero | sed "s/Buenos días/Buenas tardes/g" > tmp
$ mv tmp fichero
No obstante, hay una forma más directa y recomendable de realizar este tipo de cambios:

lunes, 24 de diciembre de 2018

Tip: explainshell


Hoy aprovecho para comentar una web que descubrí hace poco y que es una pasada. Se trata de explainshell.com.
Esta web explica con detalle cualquier comando que se pueda escribir en el shell de Linux y aclara el significado de cada argumento usado.
Veamos un ejemplo:
iptables -A INPUT -i eth0 -p tcp -s 192.168.100.0/24 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT

El análisis de este comando mediante explainshell es el que se muestra en la siguiente imagen:


Un recurso muy interesante a tener en cuenta en el día a día.

lunes, 17 de diciembre de 2018

Liberar espacio en disco eliminando paquetes innecesarios

Hoy vamos a ver una forma de liberar espacio en disco en Linux que mucha gente desconoce.
Con el tiempo, los paquetes del sistema operativo se van actualizando y, entre ellos, el kernel de Linux recibe actualizaciones. Por precaución, los kernels antiguos no se eliminan dado que en un momento determinado el equipo nos puede ir mal con el kernel recién instalado y puede ser necesario usar los anteriores, que todavía siguen disponibles en el sistema.
Con el tiempo, los kernels antiguos tienden a acumularse y es una buena práctica, a nivel de mantenimiento, eliminarlos. Esto también ayudará a reducir el espacio en uso de disco.

lunes, 10 de diciembre de 2018

Dando color al terminal #3

Como se ha visto en entradas anteriores del blog, se puede dar formato al texto del terminal para hacerlo más atractivo y llamativo de cara al usuario.
Inicialmente hemos visto cómo dar color al texto. Posteriormente, se vio cómo aplicar negrita, cursiva y subrayar el texto. En la entrada de hoy vamos a ampliar los estilos que se pueden usar para dar formato al texto del terminal.

jueves, 6 de diciembre de 2018

Contar lineas idénticas

Hoy voy a plantear una solución sobre cómo realizar un conteo de lineas idénticas salidas de una aplicación o script.
Pongo un ejemplo, pero este método es aplicable a cualquier otro caso.
Objetivo: se quiere conocer cuántos ficheros hay dentro de un directorio por extensión.
El listado de ficheros se puede realizar fácilmente mediante find:
find . -type f -exec basename {} \;
Ahora vamos a quedarnos solo con la extensión:

lunes, 3 de diciembre de 2018

Dando color al terminal #2

Como vimos en una entrada anterior, dando color al terminal, el terminal de Linux no siempre ha de ser negro sobre blanco. Hoy vamos a ver más formas de dar formato al texto del terminal.

jueves, 29 de noviembre de 2018

printf para bash

Bash dispone del comando echo para mostrar texto por el terminal. No obstante, en ocasiones este comando se nos puede quedar corto y se hace excesivamente elaborado formatear ciertas cadenas de texto a nuestro gusto.
Para estos cometidos, el comando interno de bash printf será de gran ayuda dado que funciona de forma bastante similar a printf de C.
Veamos un ejemplo de formateo de texto en forma de tabla:

lunes, 26 de noviembre de 2018

Variables bash #1

Bash tiene multitud de variables internas que permiten obtener una gran variedad de información. Una de ellas es $SECONDS.
Esta variable indica el número de segundos que el proceso bash está en ejecución. Si lo ejecutamos sobre la linea de comandos, obtendremos el tiempo que ese shell lleva en ejecución:
$ echo $SECONDS
292
Si lo ejecutamos dentro de un shell script que use bash, podremos usar esta variable para controlar el tiempo máximo de ejecución del script, ejecutar alguna acción cada x segundos, etc.
#!/usr/bin/env bash

MAXIMO=10

while [ $SECONDS -le $MAXIMO ]
do 

  echo "$SECONDS segundos de ejecucion del script"
  sleep 1

done

jueves, 22 de noviembre de 2018

Dando color al terminal

La consola de Linux permite el uso de colores en el texto para dar un toque distinto a nuestras aplicaciones. Estos colores se activan mediante el uso de códigos de escape ANSI.
Por ejemplo, si se desea escribir un texto en rojo pondríamos lo siguiente:
$ echo -e "\033[31mRojo"
Siendo los caracteres iniciales el código de escape ANSI asociado a dicho color.
Los colores que se pueden usar son los siguientes:
  • Negro: \033[30m
  • Rojo: \033[31m
  • Verde: \033[32m
  • Amarillo: \033[33m
  • Azul: \033[34m
  • Lila: \033[35m
  • Cian: \033[36m
  • Blanco: \033[37m
A continuación se muestra una forma práctica de usar estos códigos de escape:

lunes, 19 de noviembre de 2018

Instrucción vacía

La mayoría de los lenguajes de programación tienen lo que se denomina instrucción vacía. Esta instrucción en realidad no realiza ninguna función práctica, pero permite rellenar un hueco allí donde se necesita.
Veamos un ejemplo en Python:
import sys
try:
    f = open('myfile','r')
except:
    pass
En este ejemplo, si el fichero myfile no existe saltará una excepción que será capturada por el bloque try. Como no se requiere ejecutar ninguna acción si salta la excepción y la sección except hay que colocarla, se pone en ella la instrucción vacía pass de Python.
Veamos cuál es la instrucción vacía en bash y qué usos se le puede dar.

jueves, 15 de noviembre de 2018

bash en modo debug

Bash permite la ejecución de shell scripts bastante potentes. A menudo, este es un recurso muy utilizado por administradores de sistemas para labores de lo más variadas.
A todo el mundo el ocurre en alguna ocasión que un script no hace lo que debería, falla en algún punto y a pesar de revisar el código una y otra vez no se ve el punto de fallo.
Llegados a esta situación, es el momento de añadir comentarios a lo largo del código para intentar acotar el segmento donde se produce el fallo. Un echo dentro del if y otro en el else, para ver por dónde pasa. Y uno más en el bucle para ver las repeticiones que se producen.
Una vez encontrada y corregida la errata, a buscar todos los comentarios que se insertadon para eliminarlos.
Hay un método mucho más fácil para seguir la pista a la ejecución de un script y ver así cuál es su punto de fallo.

lunes, 12 de noviembre de 2018

Manipulación de ficheros que empiezan con un guión

En esta ocasión vamos a ver el tratamiento que hay que dar a los ficheros cuyo nombre comienza con un guión, dado que las técnicas habituales de uso de caracteres de escape para no tratar los caracteres especiales no funcionan.
Veamos un ejemplo clásico:
$ echo "HOLA" > tm?p
$ rm tm\?p
rm: remove regular file 'tm?p'?
Como se observa, el caracter “?” es considerado como un caracter especial, y para referirse a él como un simple caracter y no como un símbolo especial, hay que usar el caracter de escape “\” antecediéndolo.
Sin embargo, esto no ocurre si el nombre del fichero comienza con un guión intermedio:
$ echo "HOLA" > -tmp
$ rm -tmp
rm: invalid option -- 't'
Try 'rm ./-tmp' to remove the file '-tmp'.
Try 'rm --help' for more information.
$ rm \-tmp
rm: invalid option -- 't'
Try 'rm ./-tmp' to remove the file '-tmp'.
Try 'rm --help' for more information.
$ rm "-tmp"
rm: invalid option -- 't'
Try 'rm ./-tmp' to remove the file '-tmp'.
Try 'rm --help' for more information.
Los errores mostrados indican que el comando usado (rm en este caso, pero puede ser otro cualquiera) considera el guión como el comienzo de un parámetro.
Vamos a ver dos métodos para referirnos a los ficheros que comienzan con un guión.

jueves, 8 de noviembre de 2018

Usos del comando hostname

A continuación vamos a ver algunos usos útiles que se le puede dar al comando hostname de Linux para obtener información sobre la configuración de red del equipo:

Conocer el nombre del equipo

Este es el uso habitual que se le suele dar a este comando: conocer el hostname de la máquina en la que estamos.
$ hostname
myserver
Adicionalmente, se puede usar el parámetro -s, de short, para conocer el nombre del equipo, o lo que es lo mismo, la primera parte del nombre FQDN.
$ hostname -s
myserver
Conocer el dominio DNS del equipo
Para obtener el nombre del dominio DNS configurado en el equipo, habrá que usar el parámetro -d:
$ hostname -d
example.com

Conocer el nombre FQDN del equipo

​El FQDN (Fully Qualified Domain Name) de un equipo está formado por su hostname y el nombre de dominio. La forma de conocer este dato es la siguiente:
$ hostname -f
myserver.example.com