Ti sei mai trovato in una situazione in cui volevi inviare l'output di un comando Linux al tuo collega o amico per ottenere aiuto? Questo semplice trucco di Linux ti sarà sicuramente utile. È possibile salvare l'output di un comando Linux in un'immagine o in un file. Tutto ciò che devi avere è solo ImageMagick . Questo può essere utile quando devi inviare l'output a una persona del supporto tecnico oa un collega.
Salva l'output del comando Linux su un'immagine
Installa prima lo strumento ImageMagick. È disponibile nei repository predefiniti della maggior parte delle distribuzioni Linux.
Ad esempio, per installare ImageMagick in Arch Linux e suoi derivati, eseguire:
$ sudo pacman -S imagemagick
Su Debian, Ubuntu e altri sistemi basati su DEB, puoi installarlo come mostrato di seguito.
$ sudo apt-get install imagemagick
Su Fedora:
$ sudo dnf install ImageMagick
Su CentOS:
$ sudo yum install ImageMagick
Su openSUSE:
$ sudo zypper install ImageMagick
Ora, per salvare un output di qualsiasi comando Linux in un file immagine, esegui semplicemente il comando seguente:
$ ip a | convert label:@- myipaddress.png
Il comando precedente salverà l'output del comando ifconfig in un'immagine e lo salverà nella directory di lavoro corrente. Analizziamo il comando precedente e vediamo cosa fa ciascuna opzione.
- ip un visualizzerà l'indirizzo IP del tuo sistema Linux.
- convertire il comando salverà l'output in un'immagine.
- etichetta:@- myipaddress.png salverà l'output del comando nell'immagine denominata myipaddress.png .
Ecco l'output del comando precedente nel mio sistema desktop Ubuntu 18.04.
Eccone un altro. Ho salvato il mio output del kernel Linux in un'immagine.
$ uname -a | convert label:@- mylinuxkernel.png
Risultato di esempio:
Quello che abbiamo visto sopra è che abbiamo salvato l'output del comando in un file immagine. Possiamo anche salvare l'output su un file immagine esistente. Per fare ciò, esegui:
$ convert -font -misc-fixed-*-*-*-*-*-*-*-*-*-*-*-* -fill black -draw "text 270,260 \" `lsb_release -a` \"" image.png systemdetails.png
Questo comando stamperà l'output di "lsb_release -a" comando a un'immagine chiamata image.png e lo salva con un nuovo nome "systemdetails.png" .
Ecco l'output del comando precedente:
Abbastanza facile, non è vero? Puoi salvare l'output di qualsiasi comando in un file immagine e inviarlo a chiunque possa aiutarti a riparare il tuo sistema.
Risoluzione dei problemi
Nelle recenti distribuzioni Ubuntu Linux, alcune operazioni di conversione sono limitate per motivi di sicurezza. Se hai provato i comandi precedenti nel sistema operativo Ubuntu, potresti riscontrare il seguente messaggio di errore:
convert-im6.q16: not authorized `@-' @ error/property.c/InterpretImageProperties/3516. convert-im6.q16: no images defined `myipaddress.png' @ error/convert.c/ConvertImageCommand/3258.
In tal caso, devi modificare policy.xml file di configurazione e modificare la politica.
$ sudo nano /etc/ImageMagick-6/policy.xml
Trova la seguente riga:
<policy domain="path" rights="none" pattern="@*" />
Commenta o rimuovi la seguente riga:
[...] <!-- <policy domain="path" rights="none" pattern="@*"/> --> [...]
Salva e chiudi il file. Ora puoi salvare i comandi nel file immagine.
Salva l'output dei comandi Linux in un file di testo
Sappiamo come salvare l'output di un comando in/in un'immagine. Possiamo anche salvare l'output di un comando Linux in un file.
Ad esempio, per salvare "ip addr" l'output del comando in un file chiamato myipaddress.txt , esegui:
$ ip addr > myipaddress.txt
Per verificarlo, visualizza il file di testo utilizzando i tuoi visualizzatori di testo preferiti. Oppure, possiamo farlo usando il comando "cat" come di seguito.
$ cat myipaddress.txt
Il comando seguente salverà il mio pacman.log in un file chiamato mylogs.txt .
$ tail -f /var/log/pacman.log > mylogs.txt
E possiamo facilmente salvare i dettagli IP usando il comando:
$ ip a > mynetworkdetails.txt
Potresti voler scrivere l'output di un comando su più file. Ecco come farlo.
$ uname -a | tee file1 file2
Il comando precedente scriverà l'output di "uname -a" comando su file1 e file2 . Se i file non esistono già, li creerà.
Per impostazione predefinita, sovrascriverà il contenuto di file1 e file2. Se vuoi aggiungere l'output ai contenuti esistenti, usa -a segnala come sotto.
$ ip a | tee -a file1 file2
Questo comando non sovrascriverà il contenuto esistente di file1 e file2. Invece, aggiungerà semplicemente l'output del comando ifconfig a file1 e file2. In altre parole, questi due file ora hanno gli output dei comandi "uname -a" e "ip a".