Lunes, Diciembre 18, 2017

¿Cómo saber qué hará exactamente un comando o programa antes de ejecutarlo?

maybe-1

¿Alguna vez te preguntaste qué hará un comando de Unix antes de ejecutarlo? No todo el mundo sabe lo que hará un comando o programa en particular. Por supuesto, puedes verificarlo con Explainshell. Necesitas copiar/pegar el comando en el sitio web de Explainshell y te permite saber qué hace cada parte de un comando de Linux. Sin embargo, no es necesario. Ahora, podemos saber fácilmente qué hará exactamente un comando o programa antes de ejecutarlo, directamente desde la Terminal. Una herramienta simple que te permite ejecutar un comando y ver lo que hace a tus archivos, pero sin hacerlo realmente. Después de revisar el resultado enumerado, puedes decidir si realmente deseas ejecutarlo o no.

¿Cómo funciona “maybe“?

Maybe” ejecuta procesos bajo el control de ptrace con la ayuda de la biblioteca python-ptrace. Cuando intercepta una llamada al sistema que está a punto de realizar cambios en el sistema de archivos, registra esa llamada y luego modifica los registros de la CPU para redirigir la llamada a una identificación syscall no válida (convirtiéndola efectivamente en una no operación) y configurar el devolver el valor de esa llamada no operativa a una que indique el éxito de la llamada original. Como resultado, el proceso cree que todo lo que está tratando de hacer está sucediendo realmente, cuando en realidad nada es así.

Advertencia: Debes tener mucho cuidado al usar esta utilidad en un sistema de producción o en cualquier sistema que te interese. Puede causar daños graves, ya que bloqueará un puñado de llamadas de sistema.

Instalando “Maybe

Asegúrate de haber instalado pip en tu sistema Linux. De lo contrario, instálalo como se muestra a continuación según la distribución que uses.

En Arch Linux y sus derivados como Antergos, Manjaro Linux, instala pip usando el siguiente comando:

sudo pacman -S python-pip

En RHELCentOS:

sudo yum install epel-release
sudo yum install python-pip

En Fedora:

sudo dnf install epel-release
sudo dnf install python-pip

En DebianUbuntuLinux Mint:

sudo apt-get install python-pip

En SUSEopenSUSE:

sudo zypper install python-pip

Una vez que pip instalado, ejecuta el siguiente comando para instalar “Maybe“.

sudo pip install maybe

El uso es absolutamente fácil. Simplemente agrega “maybe” delante de un comando que quieras ejecutar.

Permíteme mostrarte un ejemplo.

$ maybe rm -r ostechnix/

Como puedes ver, voy a eliminar una carpeta llamada “ostechnix” de mi sistema. Aquí está la salida de muestra.

maybe has prevented rm -r ostechnix/ from performing 5 file system operations:

 delete /home/sk/inboxer-0.4.0-x86_64.AppImage
 delete /home/sk/Docker.pdf
 delete /home/sk/Idhayathai Oru Nodi.mp3
 delete /home/sk/dThmLbB334_1398236878432.jpg
 delete /home/sk/ostechnix

Do you want to rerun rm -r ostechnix/ and permit these operations? [y/N] y

La herramienta “maybe” realiza 5 operaciones del sistema de archivos y me muestra qué hará exactamente este comando (rm -r ostechnix /). Ahora puedo decidir si debo realizar esta operación o no. Genial, ¿sí? ¡En efecto!

Aquí hay otro ejemplo. Voy a instalar el cliente de escritorio Inboxer para Gmail. Esto es lo que conseguí.

$ maybe ./inboxer-0.4.0-x86_64.AppImage 
fuse: bad mount point `/tmp/.mount_inboxemDzuGV': No such file or directory
squashfuse 0.1.100 (c) 2012 Dave Vasilevsky

Usage: /home/sk/Downloads/inboxer-0.4.0-x86_64.AppImage [options] ARCHIVE MOUNTPOINT

FUSE options:
 -d -o debug enable debug output (implies -f)
 -f foreground operation
 -s disable multi-threaded operation

open dir error: No such file or directory
maybe has prevented ./inboxer-0.4.0-x86_64.AppImage from performing 1 file system operations:

create directory /tmp/.mount_inboxemDzuGV

Do you want to rerun ./inboxer-0.4.0-x86_64.AppImage and permit these operations? [y/N]

Si no detecta ninguna operación del sistema de archivos, simplemente mostrará un resultado como el siguiente.

Por ejemplo, ejecuto este comando para actualizar mi Arch Linux.

$ maybe sudo pacman -Syu
sudo: effective uid is not 0, is /usr/bin/sudo on a file system with the 'nosuid' option set or an NFS file system without root privileges?
maybe has not detected any file system operations from sudo pacman -Syu.

¿Ves? No detectó ninguna operación del sistema de archivos, por lo que no hubo advertencias. Esto es absolutamente brillante y exactamente lo que estaba buscando. A partir de ahora, puedo saber fácilmente qué hará un comando o un programa incluso antes de ejecutarlo.

 

Fuente: Original  | maslinux

¿Quién está en línea?

Hay 22 invitados y ningún miembro en línea

Contador de Visitas

9076607
Hoy Hoy 398
Ayer Ayer 957
Esta semana Esta semana 398
Este mes Este mes 15374
Total de Visitas Total de Visitas 9076607

Día con más
visitantes

11-11-2017 : 2493

Gracias por su visita