Archivo de Autor

Aprendemos sobre los scripts o guiones básicos en Bash, para nuestros sistemas GNU/Linux. Hablamos de if, for, while o until.

Origen: Scripts básicos en Bash – ochobitshacenunbyte

 

los scripts o guiones, actúan como programas, pasando instrucciones a un interpretador, en nuestro caso Bash, para realizar determinadas tareas. A diferencia de los programas comunes, ya compilados, son scripts son archivos de texto que se pueden editar en cualquier momento.

El interpretador Bash

En su día ya os hablé de las mejores shell para GNU/Linux. Pues bien Bash, es una de ellas. Cuando creamos un nuevo script debemos especificar qué interpretador vamos a utilizar, el cual es indicado mediante #! (denominado comunmente shebang) En el caso de Bash esa línea comenzaría así: #!/bin/bash

Una vez creado el nuevo guión debemos asignarle permisos de ejecución, este paso es bien sencillo, utilizando el comando “chmod“, como sigue:

1
chmod +x nuestro-script.sh

Indicamos al final la extensión “sh“, indicando así que es un script de Bash. Aunque realmente esto no es obligatorio.

Variables especiales

Los argumentos pasados a un script y otras informaciones útiles se devuelven por la variable especial $x, el cual x indica el valor de retorno:

  • $*: Todos los valores pasados como argumentos.
  • $#: El número de argumentos.
  • $0: El nombre del fichero del script.
  • $n: El valor de argumento en la posición n.
  • $!: PID del último programa ejecutado.
  • $$: PID de la shell actual.
  • $?: Código de salida del último comando.

Además, para solicitar valor al usuario, durante la ejecución de un script, se utiliza la instrucción read, por ejemplo:

1
2
echo "Informe valor solicitado:"
read RESPUESTA

Por lo que el valor devuelto se almacenará en la variable llamada RESPUESTA.

If then else

Con la estructura lógica if se ejecuta un comando o una lista de estos si una afirmación es verdadera. La instrucción test evalúa si la afirmación es verdadera o falsa.

Veamos algunos ejemplos:

1
2
3
if test -x /bin/bash; then
   echo "ok"
fi

En el ejemplo anterior, mediante test -x, evaluamos si un fichero es ejecutable. Esto también se podría hacer de la siguiente manera:

1
2
3
if [ -x /bin/bash ]; then
    echo "ok"
fi

Es importante que dejemos un espacio entre los corchetes y las instrucciones.

Podemos hacer un poquito más complejo el script, añadiendo la instrucción else, como añadido a if. Esta determina el bloque de instrucciones que se ejecutarán, si la afirmación inicial no se cumple.

1
2
3
4
5
if [ -x /bin/bash ]; then
      echo "ok"
else
      echo "no ok"
fi

Tal y como hemos podido observar, la estructura debemos finalizar siempre con un fi

Veamos un resumen de las opciones de evaluación de la instrucción test para los archivos y directorios:

  • -d ruta: verdadero si la ruta existe y es un directorio.
  • -c ruta: verdadero si la ruta existe.
  • -f ruta: verdadero si la ruta existe y es un archivo común.
  • -L ruta: verdadero si la ruta existe y es un enlace simbólico.
  • -r ruta: verdadero si la ruta existe y se puede leer.
  • -s ruta: verdadero si la ruta existe y su tamaño es superior a cero.
  • -w ruta: verdadero si la ruta existe y se puede escribir (el fichero)
  • -x ruta: verdadero si la ruta existe y es ejecutable.

También tenemos las opciones de evaluación de test para texto.

  • -n texto: verdadero si el tamaño del texto es diferente de cero.
  • -z texto: verdadero si el tamaño de texto es cero.
  • texto1 == texto2 : verdadero si texto1 es igual a texto2.
  • text1 != text2 : verdadero si texto 1 es diferente a texto2.

Por último, que no menos importante, las opciones de evaluación de test para números

  • num1 -lt num2: verdadero si num1 es inferior a num2.
  • num1 -gt num2: verdadero si num1 es superior a num2.
  • num1 -le num2: verdadero si num1 es inferior o igual a num2.
  • num1 -ge num2: verdadero si num1 es superior o igual a num2.
  • num1 -eq num2: verdadero si num1 es igual a num2.
  • num1 -ne num2: verdadero si num1 es diferente a num2.

La variable de la instrucción if es la instrucción case. Dicha instrucción proseguirá si un ítem indicado se encuentra en una lista de ítems, divisiddos por el carácter “|”, como sigue:

1
2
3
case 2 in (1|2)
 echo"Número 2 encontrado en la lista: ";
esac

El final de la instrucción debe ser siempre esac. Sí, al igual que con if, es el nombre al revés.

Sustitución de comandos

Para mostrar o almacenar la salida de un comando, el mismo se coloca entre comillas simples intertidas o entre $(), que es lo más común, desde mi experiencia, o sea:

1
2
3
VKERNEL=`uname -r`
echo "La versión del kernel es :
echo $VKERNEL

O bien:

1
2
3
VKERNEL=$(uname -r)
echo "La versión del kernel es : 
echo $VKERNEL

Las operaciones matemáticas con número enteros se realizan con la instrucción expr

1
RESTA=`expr $VALOR1 - $VALOR2`

O bien:

1
RESTA=$(($VALOR1 - $VALOR2))

Instrucciones de bucle

Es muy común la creación de guiones o scripts cuya finalidad es ejecutar una tarea de forma rápida, partiendo de una condición determinada. Para ello existen las instrucciones de bucle o loop, utilizando el término anglosajón.

for

La instrucción for ejecuta o más acciones para cada elemento de una lista.

1
2
3
4
5
6
7
SERVERS=$(cat /etc/servidores.txt)
 
for i in $SERVERS; do
   NHOSTS=ssh root@$i "hostname";
   VKERNEL=ssh root@$i "uname -r";
   echo "El nombre del host es: $NHOSTS con la versión de kernel: $VKERNEL;
done

De esta manera obtenemos información del nombre y de la versión del kernel de una lista de hosts que tenemos indicados en el fichero servidores.txt Para ello nos conectamos por ssh, ya que previamente hemos realizado intercambio de llaves con dichos hosts.

until

La instrucción until ejecuta una acción en bubcle hasta que una afirmación sea verdadera, por ejemplo:

1
2
3
4
5
6
contador=1
until [ $contador -gt 5 ]
do
  printf "El valor es $contador\n"
  ((contador++))
done

Por lo que hasta que el valor “contador” no sea mayor de 5 no parará de contar.

while

La instrucción while, es la primera perversa de until, ya que esta ejecuta una acción hasta que una afirmación no sea verdadera.

1
2
3
4
5
6
contador=1
while [ $contador -le 5 ]
do
  printf "El valor es $contador\n"
  ((contador++))
done

Se cumplirá la condición hasta que deje de ser verdadera.

De: https://rm-rf.es/bash-repetir-comando-previo-sudo-root/

Una entrada rápida para explicar cómo repetir la ejecución del último comando en la shell bash como root. La utilidad reside en evitar tener que volver a especificar el comando completo cuando queremos volver a ejecutar el comando anterior, esta vez, como root (ya que no nos hemos dado cuenta y lo hemos ejecutado con un usuario sin privilegios:

$ sudo !!

Así de sencillo, !! significa ejecutar el comando anterior, por lo que podemos añadir sudo delante para ejecutarlo con privilegios de superusuario.

Un ejemplo que confirma que !! repite la ejecución del comando previo:

$ ps
  PID TTY          TIME CMD
 2015 pts/0    00:00:00 bash
 2029 pts/0    00:00:00 ps
$ !!
ps
  PID TTY          TIME CMD
 2015 pts/0    00:00:00 bash
 2030 pts/0    00:00:00 ps

Y un ejemplo con sudo:

$ head /etc/sudoers
head: cannot open '/etc/sudoers' for reading: Permission denied
$ sudo !!
sudo head /etc/sudoers
## Sudoers allows particular users to run various commands as
## the root user, without needing the root password.
##
## Examples are provided at the bottom of the file for collections
## of related commands, which can then be delegated out to particular
## users or groups.
## 
## This file must be edited with the 'visudo' command.

## Host Aliases

En este mini-tuto se especifica el proceso de desarrollo de un Bot Telegram en Python que permite controlar un dispositivo con sistema Armbian.

Origen: Desarrollando un Bot de Telegram en Python que Permita Consultar y Controlar un Sistema Linux (Armbian) | Descubriendo la Orange Pi

Listado de comandos Linux más útiles

Publicado: 20 noviembre, 2018 en Uncategorized

Recopilación de los comandos Linux más útiles y frecuentemente utilizados, ordenados por categorías y con un ejemplo de sintaxis completo

Origen: Listado de comandos Linux más útiles

Os presento una recopilación de comandos Linux más útiles. Pese a que las interfaces gráficas en Linux son cada día más funcionales y vistosas, si de verdad queréis exprimir al máximo el potencial de este sistema operativo es inevitable el uso de la consola de comandos.

El siguiente listado muestra un resumen organizado por categorías con los comandos Linux que os resultarán más útiles si queréis aprender e iniciaros como usuarios o administradores de sistemas Linux.

Control de procesos y trabajos

Ejecutar comandos y aplicaciones

Listar procesos y tareas

Finalizar procesos

Alias de comandos

Informacion y supervisión del sistema

Gestión de recursos

Espacio de disco

Información de sistema

Apagado y reinicio de sistema

Fechas

Ayudas

Operaciones con archivos y directorios

En los comandos que requieran introducir nombres de archivos o directorios podéis pulsar dos veces tabulación para autocompletar la ruta, u obtener un listado de archivos disponibles.

Desplazarse entre directorios

Listar archivos y directorios

Manipulación de archivos y directorios

Enlaces simbólicos

Codificación

Operaciones de contenido de archivo

Tuberias y redirecciones I/O

Mostrar contenido de archivo

Manipulación de texto

Busqueda de archivos y en su contenido

Buscar de archivos

Buscar en contenido de archivo

Gestión de usuarios y grupos

Usuarios

Grupos de usuarios

Comprobaciones

Permisos y atributos especiales

Permisos de archivos y carpetas

Permisos SUID

Atributos especiales de archivo

Archivos empaquetados y comprimidos

Archivos TAR

Archivos ZIP

Archivos BZ2

Archivos GZ

Archivos RAR

Instaladores de paquetes, y respositorios

Paquetes Deb (Debian y derivados)

Actualizador de paquetes APT (Ubuntu y derivados)

Operaciones con sistemas de archivos

Análisis del sistema de archivos

Formatear sistema de archivos

Montar sistemas de archivos

Imágenes ISO y grabadores de CDROM

Trabajo con la SWAP

Copias de seguridad y backups

Telecomunicaciones y operaciones de red

Descarga archivos Internet

Operaciones de red

SSH, SCP y Tunneling

Redes de Microsoft Windows (SAMBA)

Espero os resulte de utilidad. Por supuesto hay muchos más, y un sinfin de combinaciones posibles (algunas verdaderamente largas e imposibles de recordar). Iré completando la lista si me acuerdo de que falta alguno, y con vuestras sugerencias. Si tenéis cualquier aportación estamos encantados de recoger vuestros comentarios.

Ásbrú Connection Manager

Ásbrú Connection Manager es una interfaz de usuario que admite sesiones de terminal remotas y automatiza las tareas repetitivas.

https://www.asbru-cm.net/

  • GUI simple para administrar / lanzar conexiones a máquinas remotas
  • Posibilidades de scripting, ‘ala’ SecureCRT
  • Ejecución configurable de comandos locales pre o post conexión.
  • Lista configurable de macros (comandos) para ejecutar localmente cuando está conectado o para enviar al cliente conectado
  • Lista configurable de ejecuciones condicionales en la máquina conectada a través de ‘Esperar’
  • Integración KeePassX
  • Posibilidad de conectarse a máquinas a través de un servidor Proxy
  • Conexiones de clúster
  • Terminales tabulados / con ventana
  • Wake On LAN capacidades
  • Variables locales y globales

Install instructions

Debian / Ubuntu


$~>curl -s https://packagecloud.io/install/repositories/asbru-cm/asbru-cm/script.deb.sh | sudo bash
$~>sudo apt install asbru-cm

Fedora

$~>curl -s https://packagecloud.io/install/repositories/asbru-cm/asbru-cm/script.rpm.sh | sudo bash
$~>sudo dnf install asbru-cm

Arch / Manjaro

$~>yaourt -S asbru-cm-git
Arrange connection with Ásbrú Connection Manager
Define SSH connection with Ásbrú Connection Manager

Antes de vender tu equipo o regalárselo a un amigo, es importante que elimines todos tus archivos e información personal. El proceso es muy sencillo, pero debes completar unos cuantos pasos y, en algunos casos, utilizar determinados programas específicos para vaciar por completo el ordenador. Veamos pues algunas útiles herramientas que te ayudarán a dejar a cero el equipo antes de deshacerte de él.

Sigue leyendo en el origen: Aplicaciones para eliminar archivos y datos

Muy buenas. En esta guía quiero presentarte a una aplicación para capturas de pantalla que ha aparecido recientemente en Github, y que en mi opinión, apunta muy buenas maneras de cara a convertirse…

Origen: Flameshot. Digno Sucesor de Shutter para las Capturas de Pantalla en Linux – ComputerNewAge

Articulo muy Interesante para poder ejecutar programas en segundo plano desde la terminal.

Informático de Guardia

la aplicación se cierra al cerrar la terminal de comandos linux¿Cuántas veces te has puesto a trabajar desde la terminal y has abierto un programa (con su entorno gráfico correspondiente)?

¿Eres de los que dejas la terminal abierta hasta que terminas o la cierras instintivamente para comprobar, horrorizado (si no has guardado lo que has estado haciendo), que el programa se ha ido al garete?

¿Cansado de jurar en arameo antiguo?

¿Te gustaría una solución a tus “males”?

Pues pasa (sin llamar) que dentro encontrarás la solución 😉

Ver la entrada original 226 palabras más

Acquire::Languages “none”;

Origen: 12 Sencillos pasos para acelerar Ubuntu – Maslinux

Llega Bodhi Linux 5.0, actualizada a Ubuntu 18.04 LTS y con su característico escritorio Moksha Desktop (Enlightenment).

Origen: Disponible Bodhi Linux 5.0: iluminación biónica » MuyLinux