Avez-vous déjà été dans une situation où vous vouliez envoyer la sortie d'une commande Linux à votre collègue ou ami pour obtenir de l'aide ? Ce simple hack Linux vous sera certainement utile. Vous pouvez enregistrer une sortie de commande Linux dans une image ou un fichier. Tout ce dont vous avez besoin est seulement ImageMagick . Cela peut être utile lorsque vous devez envoyer la sortie à une personne du support technique ou à un collègue.
Enregistrer la sortie de la commande Linux dans une image
Installez d'abord l'outil ImageMagick. Il est disponible dans les dépôts par défaut de la plupart des distributions Linux.
Par exemple, pour installer ImageMagick dans Arch Linux et ses dérivés, exécutez :
$ sudo pacman -S imagemagick
Sur Debian, Ubuntu et d'autres systèmes basés sur DEB, vous pouvez l'installer comme indiqué ci-dessous.
$ sudo apt-get install imagemagick
Sur Fedora :
$ sudo dnf install ImageMagick
Sur CentOS :
$ sudo yum install ImageMagick
Sur openSUSE :
$ sudo zypper install ImageMagick
Maintenant, pour enregistrer une sortie de n'importe quelle commande Linux dans un fichier image, exécutez simplement la commande suivante :
$ ip a | convert label:@- myipaddress.png
La commande ci-dessus enregistrera la sortie de la commande ifconfig dans une image et l'enregistrera dans le répertoire de travail actuel. Détaillons la commande ci-dessus et voyons ce que fait chaque option.
- adresse IP affichera l'adresse IP de votre système Linux.
- convertir La commande enregistrera la sortie dans une image.
- libellé :@- monadresseip.png enregistrera la sortie de la commande dans l'image nommée myipaddress.png .
Voici la sortie de la commande ci-dessus dans mon système de bureau Ubuntu 18.04.
En voici un autre. J'ai enregistré la sortie de mon noyau Linux dans une image.
$ uname -a | convert label:@- mylinuxkernel.png
Exemple de résultat :
Ce que nous avons vu ci-dessus, c'est que nous avons enregistré la sortie de la commande dans un fichier image. Nous pouvons également enregistrer la sortie sur un fichier image existant. Pour ce faire, exécutez :
$ convert -font -misc-fixed-*-*-*-*-*-*-*-*-*-*-*-* -fill black -draw "text 270,260 \" `lsb_release -a` \"" image.png systemdetails.png
Cette commande imprimera la sortie de "lsb_release -a" commande à une image appelée image.png et l'enregistre sous un nouveau nom "systemdetails.png" .
Voici le résultat de la commande ci-dessus :
Assez facile, n'est-ce pas ? Vous pouvez enregistrer la sortie de n'importe quelle commande dans un fichier image et l'envoyer à toute personne pouvant vous aider à réparer votre système.
Dépannage
Dans les distributions Linux récentes d'Ubuntu, certaines opérations de conversion sont restreintes pour des raisons de sécurité. Si vous avez essayé les commandes ci-dessus dans le système d'exploitation Ubuntu, vous pourriez rencontrer le message d'erreur suivant :
convert-im6.q16: not authorized `@-' @ error/property.c/InterpretImageProperties/3516. convert-im6.q16: no images defined `myipaddress.png' @ error/convert.c/ConvertImageCommand/3258.
Dans ce cas, vous devez modifier policy.xml fichier de configuration et modifiez la stratégie.
$ sudo nano /etc/ImageMagick-6/policy.xml
Recherchez la ligne suivante :
<policy domain="path" rights="none" pattern="@*" />
Commentez ou supprimez la ligne suivante :
[...] <!-- <policy domain="path" rights="none" pattern="@*"/> --> [...]
Enregistrez et fermez le fichier. Vous pouvez maintenant enregistrer les commandes dans le fichier image.
Enregistrer la sortie de la commande Linux dans un fichier texte
Nous savons comment enregistrer la sortie d'une commande vers/dans une image. Nous pouvons également enregistrer la sortie d'une commande Linux dans un fichier également.
Par exemple, pour enregistrer l'"adresse ip" la sortie de la commande dans un fichier appelé myipaddress.txt , exécutez :
$ ip addr > myipaddress.txt
Pour le vérifier, affichez le fichier texte à l'aide de vos visionneuses de texte préférées. Ou, nous pouvons utiliser la commande "cat" comme ci-dessous.
$ cat myipaddress.txt
La commande suivante enregistrera mon pacman.log dans un fichier appelé mylogs.txt .
$ tail -f /var/log/pacman.log > mylogs.txt
Et, nous pouvons facilement enregistrer les détails IP en utilisant la commande :
$ ip a > mynetworkdetails.txt
Vous voudrez peut-être écrire la sortie d'une commande dans plusieurs fichiers. Voici comment procéder.
$ uname -a | tee file1 file2
La commande ci-dessus écrira la sortie de "uname -a" commande vers fichier1 et fichier2 . Si les fichiers n'existent pas déjà, il les créera.
Par défaut, il écrasera le contenu de file1 et file2. Si vous souhaitez ajouter la sortie au contenu existant, utilisez -a drapeau comme ci-dessous.
$ ip a | tee -a file1 file2
Cette commande n'écrasera pas le contenu existant de file1 et file2. Au lieu de cela, il ajoutera simplement la sortie de la commande ifconfig à file1 et file2. En d'autres termes, ces deux fichiers ont maintenant les sorties des commandes "uname -a" et "ip a".