Ocitli jste se někdy v situaci, kdy jste chtěli poslat výstup linuxového příkazu svému kolegovi nebo příteli, aby vám pomohl? Tento jednoduchý linuxový hack se vám určitě bude hodit. Výstup příkazu Linuxu můžete uložit do obrázku nebo souboru. Vše, co potřebujete, je pouze ImageMagick . To může být užitečné, když potřebujete odeslat výstup osobě technické podpory nebo kolegovi.
Uložení výstupu příkazů Linuxu do obrázku
Nejprve nainstalujte nástroj ImageMagick. Je k dispozici ve výchozích úložištích většiny distribucí Linuxu.
Chcete-li například nainstalovat ImageMagick v Arch Linuxu a jeho derivátech, spusťte:
$ sudo pacman -S imagemagick
Na Debian, Ubuntu a dalších systémech založených na DEB jej můžete nainstalovat, jak je znázorněno níže.
$ sudo apt-get install imagemagick
Na Fedoře:
$ sudo dnf install ImageMagick
Na CentOS:
$ sudo yum install ImageMagick
Na openSUSE:
$ sudo zypper install ImageMagick
Nyní, chcete-li uložit výstup libovolného příkazu Linuxu do souboru s obrázkem, stačí spustit následující příkaz:
$ ip a | convert label:@- myipaddress.png
Výše uvedený příkaz uloží výstup příkazu ifconfig do obrázku a uloží jej do aktuálního pracovního adresáře. Pojďme si projít výše uvedený příkaz a uvidíme, co jednotlivé možnosti dělají.
- ip a zobrazí IP adresu vašeho systému Linux.
- převést příkaz uloží výstup do obrázku.
- štítek:@- myipaddress.png uloží výstup příkazu do obrázku s názvem myipaddress.png .
Zde je výstup výše uvedeného příkazu v mém desktopovém systému Ubuntu 18.04.
Tady je další. Uložil jsem svůj výstup linuxového jádra do obrázku.
$ uname -a | convert label:@- mylinuxkernel.png
Ukázkový výstup:
To, co jsme viděli výše, je, že jsme uložili výstup příkazu do souboru obrázku. Výstup také můžeme uložit do existujícího souboru obrázku. Chcete-li to provést, spusťte:
$ convert -font -misc-fixed-*-*-*-*-*-*-*-*-*-*-*-* -fill black -draw "text 270,260 \" `lsb_release -a` \"" image.png systemdetails.png
Tento příkaz vytiskne výstup "lsb_release -a" příkaz k obrázku s názvem image.png a uloží jej pod novým názvem "systemdetails.png" .
Zde je výstup výše uvedeného příkazu:
Docela snadné, ne? Výstup libovolného příkazu můžete uložit do souboru obrázku a odeslat jej komukoli, kdo vám může pomoci opravit váš systém.
Odstraňování problémů
V nedávných distribucích Ubuntu Linux jsou některé operace převodu z bezpečnostních důvodů omezeny. Pokud jste vyzkoušeli výše uvedené příkazy v OS Ubuntu, může se vám zobrazit následující chybová zpráva:
convert-im6.q16: not authorized `@-' @ error/property.c/InterpretImageProperties/3516. convert-im6.q16: no images defined `myipaddress.png' @ error/convert.c/ConvertImageCommand/3258.
V takovém případě musíte upravit policy.xml konfigurační soubor a změnit zásady.
$ sudo nano /etc/ImageMagick-6/policy.xml
Najděte následující řádek:
<policy domain="path" rights="none" pattern="@*" />
Zakomentujte nebo odeberte následující řádek:
[...] <!-- <policy domain="path" rights="none" pattern="@*"/> --> [...]
Uložte a zavřete soubor. Nyní můžete uložit příkazy do souboru obrázku.
Uložení výstupu příkazů Linux do textového souboru
Víme, jak uložit výstup příkazu do/do obrázku. Můžeme také uložit výstup příkazu Linuxu do souboru.
Chcete-li například uložit „ip addr“ výstup příkazu do souboru s názvem myipaddress.txt , spustit:
$ ip addr > myipaddress.txt
Chcete-li to ověřit, zobrazte textový soubor pomocí svých oblíbených textových prohlížečů. Nebo to můžeme udělat pomocí příkazu "cat" jako níže.
$ cat myipaddress.txt
Následující příkaz uloží můj pacman.log do souboru s názvem mylogs.txt .
$ tail -f /var/log/pacman.log > mylogs.txt
A můžeme snadno uložit podrobnosti o IP pomocí příkazu:
$ ip a > mynetworkdetails.txt
Možná budete chtít zapsat výstup příkazu do více souborů. Zde je návod, jak to udělat.
$ uname -a | tee file1 file2
Výše uvedený příkaz zapíše výstup "uname -a" příkaz k souboru1 a soubor2 . Pokud soubory ještě neexistují, vytvoří je.
Ve výchozím nastavení přepíše obsah souborů file1 a file2. Pokud chcete výstup připojit ke stávajícímu obsahu, použijte -a příznak jako níže.
$ ip a | tee -a file1 file2
Tento příkaz nepřepíše existující obsah soubor1 a soubor2. Místo toho jednoduše připojí výstup příkazu ifconfig k souboru1 a souboru2. Jinými slovy, tyto dva soubory nyní mají výstupy příkazů "uname -a" a "ip a".