¿Alguna vez ha estado en una situación en la que deseaba enviar el resultado de un comando de Linux a su colega o amigo para obtener ayuda? Este simple truco de Linux definitivamente te será útil. Puede guardar la salida de un comando de Linux en una imagen o un archivo. Todo lo que necesita tener es solo ImageMagick . Esto puede ser útil cuando necesite enviar el resultado a una persona de soporte técnico o a un colega.
Guardar la salida del comando de Linux en una imagen
Primero instale la herramienta ImageMagick. Está disponible en los repositorios predeterminados de la mayoría de las distribuciones de Linux.
Por ejemplo, para instalar ImageMagick en Arch Linux y sus derivados, ejecute:
$ sudo pacman -S imagemagick
En Debian, Ubuntu y otros sistemas basados en DEB, puede instalarlo como se muestra a continuación.
$ sudo apt-get install imagemagick
En Fedora:
$ sudo dnf install ImageMagick
En CentOS:
$ sudo yum install ImageMagick
En openSUSE:
$ sudo zypper install ImageMagick
Ahora, para guardar una salida de cualquier comando de Linux en un archivo de imagen, simplemente ejecute el siguiente comando:
$ ip a | convert label:@- myipaddress.png
El comando anterior guardará la salida del comando ifconfig en una imagen y la guardará en el directorio de trabajo actual. Analicemos el comando anterior y veamos qué hace cada opción.
- ip a mostrará la dirección IP de su sistema Linux.
- convertir El comando guardará la salida en una imagen.
- etiqueta:@- myipaddress.png guardará la salida del comando en la imagen llamada myipaddress.png .
Aquí está el resultado del comando anterior en mi sistema de escritorio Ubuntu 18.04.
Aquí hay otro. Guardé mi salida del kernel de Linux en una imagen.
$ uname -a | convert label:@- mylinuxkernel.png
Salida de muestra:
Lo que hemos visto arriba es que hemos guardado la salida del comando en un archivo de imagen. También podemos guardar la salida en un archivo de imagen existente. Para hacer esto, ejecute:
$ convert -font -misc-fixed-*-*-*-*-*-*-*-*-*-*-*-* -fill black -draw "text 270,260 \" `lsb_release -a` \"" image.png systemdetails.png
Este comando imprimirá la salida de "lsb_release -a" comando a una imagen llamada image.png y lo guarda con un nuevo nombre "systemdetails.png" .
Aquí está el resultado del comando anterior:
Bastante fácil, ¿no? Puede guardar el resultado de cualquier comando en un archivo de imagen y enviarlo a cualquier persona que pueda ayudarlo a reparar su sistema.
Resolución de problemas
En las distribuciones recientes de Ubuntu Linux, ciertas operaciones de conversión están restringidas por razones de seguridad. Si probó los comandos anteriores en el sistema operativo Ubuntu, es posible que se encuentre con el siguiente mensaje de error:
convert-im6.q16: not authorized `@-' @ error/property.c/InterpretImageProperties/3516. convert-im6.q16: no images defined `myipaddress.png' @ error/convert.c/ConvertImageCommand/3258.
En ese caso, debe editar policy.xml archivo de configuración y cambie la política.
$ sudo nano /etc/ImageMagick-6/policy.xml
Busque la siguiente línea:
<policy domain="path" rights="none" pattern="@*" />
Comente o elimine la siguiente línea:
[...] <!-- <policy domain="path" rights="none" pattern="@*"/> --> [...]
Guarde y cierre el archivo. Ahora puede guardar los comandos en el archivo de imagen.
Guardar la salida del comando de Linux en un archivo de texto
Sabemos cómo guardar la salida de un comando en una imagen. También podemos guardar la salida de un comando de Linux en un archivo.
Por ejemplo, para guardar la "ip addr" salida del comando a un archivo llamado myipaddress.txt , ejecuta:
$ ip addr > myipaddress.txt
Para verificarlo, vea el archivo de texto usando sus visores de texto favoritos. O podemos hacerlo usando el comando "gato" como se muestra a continuación.
$ cat myipaddress.txt
El siguiente comando guardará mi pacman.log en un archivo llamado mylogs.txt .
$ tail -f /var/log/pacman.log > mylogs.txt
Y podemos guardar fácilmente los detalles de IP usando el comando:
$ ip a > mynetworkdetails.txt
Es posible que desee escribir la salida de un comando en varios archivos. Aquí está cómo hacerlo.
$ uname -a | tee file1 file2
El comando anterior escribirá la salida de "uname -a" comando a archivo1 y archivo2 . Si los archivos aún no existen, los creará.
De forma predeterminada, sobrescribirá el contenido de file1 y file2. Si desea agregar la salida a los contenidos existentes, use -a marca como a continuación.
$ ip a | tee -a file1 file2
Este comando no sobrescribirá el contenido existente de archivo1 y archivo2. En su lugar, simplemente agregará la salida del comando ifconfig a file1 y file2. En otras palabras, estos dos archivos ahora tienen los resultados de los comandos "uname -a" e "ip a".