Michele Agostinelli Blog

curl

Non tutti sanno che... E' semplicissimo fare un post (toot) sul proprio profilo #mastodon con un semplice comando, ad esempio utilizzando #curl.

Vediamo come fare.

mastodon

Abilitazione e creazione token

  1. Accedere, con il vostro account, al l'istanza mastodon di riferimento.
  2. Andare su Preferenze (menù a destra)
  3. Andare su Sviluppo (menù a sinistra)
  4. Fare click su Nuova applòicazione
  5. Compilare tutti i campi e concedere almeno i permessi di scrittura post.
  6. Salvare in un luogo sicuro (password manager) quanto generato.

Comando curl di esempio

curl -s -X POST https://mastodon.uno/api/v1/statuses \
     -H "Authorization: Bearer TOKEN_DI_ACCESSO" \
     -d "status=Ciao mondo" \
     -d "visibility=public" \

Semplice Script di invio

A questo punto possiamo farci un semplice script che prende in input, come parametro, del testo e lo invia per noi.

cat toot.sh
#!/bin/bash

# Verifica che sia stato passato almeno un argomento
if [ -z "$1" ]; then
  echo "Errore: devi passare il testo del toot come parametro."
  echo "Uso: $0 \"Testo del toot\""
  exit 1
fi

# Salva il parametro in una variabile
TOOT="$1"

# Esegui la richiesta POST
curl -s -X POST https://mastodon.uno/api/v1/statuses \
     -H "Authorization: Bearer TOKEN_DI_ACCESSO" \
     -d "status=$TOOT" \
     -d "visibility=public" \
-H "Authorization: Bearer TOKEN_DI_ACCESSO" \
| jq '.uri'

Ho inserito #jq in fondo con un filtro (che possiamo modificare a nostro piacimento), perché l'output in formato json è abbastanza prolisso

curl

Perché?

A parte che è bello fare il nerd è usare #mastodon da command line, ma la cosa può essere molto utile se la usiamo in abbinata ad altre azioni/comandi. Pensiamo ad esempio ad un integraszione con #forgejo, ad esempio potremmo fare un post (tramite #webook) al termine del nostro workflow.

Un altro esempio è il collegare l'account ad un servizio di monitoraggio come #uptimekuma in questo modo si avrà una pagina che indica ai follower lo stato dei nostri servizi.

Oppure usarlo al termine di un nostro script che preleva i prossimi appuntamenti da un caledario ics.

Insomma, potete integrare l'invio di un toot alla fine di un vostro script custom, il limite a questo punto è solo la fantasia!

E voi come lo usate?

Seguimi su mastodon: @magostinelli@mastodon.uno

Articolo pubblicato con licenza CC BY-NC-SA

Beh, chi mi conosce saprà già che la mia risposta è decisamente si!

Non c'è giorno in cui non lo utilizzi. Molte operazioni sono molto più veloci se fatte da terminale, come ad esempio quelle che si possono effettuare su molti file in un colpo solo! Bisogna ammettere che, iniziando da zero, la strada è in salita, c'è molto da imparare, ma una volta acquisita una certa padronanza, velocizzerete moltissimo il vostro flusso di lavoro e non solo ci sono delle operazioni che si possono effettuare solo in questo modo.. Pensate, ad esempio, alla modifica solo di alcuni file in mezzo a migliaia, oppure spostare solo quelli che rispettano alcuni criteri.

Nel mio caso terminale è sinonimo di #bash, la shell più usata in ambito #linux.

Bash

Esempi

Quelli che seguono sono alcuni esempi dei miei utilizzi più comuni.

Resize massivo di immagini

find /home/yunohost.app/nextcloud/data/__groupfolders/3/prove -type f -iname "*.jpg" -exec mogrify -define preserve-timestamp=true -verbose -resize "2048x2048>" -quality 90 {} \;

Resize massivo di video

mencoder panettone.mov -vf rotate=1 -oac pcm -ovc lavc -lavcopts ffmpeg -i input.file -c:v mpeg4 -q:v 5 -tag:v DIVX -vf scale=w=720:h=576:force_original_aspect_ratio=decrease -c:a libmp3lame -q:a 3 -ac 2 -ar 44100 output.avi
find /opt/mypath/ -xtype l

Rinomina di massa file

for i in File*.txt; do j=`echo $i | sed 's/questo/quello/g'`; mv "$i" "$j"; done

Ottimizzazione file pdf

Se vogliamo ridurre le dimensioni di alcuni file pdf in un certo path, rinunciando alla qualità delle immmagini.

for file in $(ls suffisso_*.pdf); do gs -sOutputFile="${resize_file%%.*}".pdf -sDEVICE=pdfwrite -dBATCH -dNOPAUSE -dDownsampleColorImages=true -dDownsampleGrayImages=true $file; done

sincronizzazione di file e directory

Questo comando si può usare sia tra due directory dello stesso computer, sia nel caso uno dei due sia remoto, l'enorme vantaggio sta nella seconda volta in cui viene lanciato, solo le differenze tra il primo e il secondo saranno trasferite, ottimizzando, quindi, i tempi del trasferimento. (saranno riportati anche i permessi dei singoli file)

rsync -auvx /orgine/ /destinazione/

Conversioni di formato (audio, video, ma non solo)

Flac (diversi metodi)

sox track_01.wav track_01.flac

for myfile in $(ls *.wav); do flac --verify --replay-gain --best --delete-input-file $myfile; done

ffmpeg -i in.wav -af aformat=s16:44100 out.flac

Ssh

Spesso la shell (= riga di comando) va a braccetto con il software ssh, che permette di collegarsi su un sistema remoto. Grazie alla combinazione dei due, è possibile amministrare server remoti (cioé diversi dal pc che stiamo usando) o headless, cioé privi dell'interfaccia grafica (che consuma solo risorse aggiuntive), come il famoso #raspberrypi.

curl

Come non citare curl il coltellino svizzero della riga di comando, specializzando in richieste remote via http e trasferimento di file. Su questo strumento (#curl) farò un articolo apposito, perché è uno strumento molto potente, in continuo sviluppo e con numerosi casi d'uso.

Vim

E' il mio editor per eccellenza, quando uso il terminale uso lui per editare i file di testo (e non solo).

Installazione pacchetti

Tutte le varie distribuzioni linux hanno degli appositi software (rigorosamente da riga di comando) per installare i pacchetti e le loro dipendenze, alcuni esempi: – apt (Debian/Ubuntu) – dnf (Fedora, redhat) – pacman (Arclinux) – apk (Alpine)

Ansible

Oltre a bash, di cui sopra abbiamo ampiamente parlato, #ansible merita una mensione d'onore (è probabile che in futuro farò un articolo dedicato a questo strumento). Ansible è un tool (open source) di automazione, con cui effettuare il provisioning, la gestione della configurazione, il deploy delle applicazioni e moltissimi altri processi IT, in modo semplice, organizzato e automatizzato. Il suo utilizzo è libero, e in rete è possibile trovare migliaia di playbook (script), condivisi da altri utenti che permettono di automatizzare i compiti più disparati.

Software di Backup

Da sempre Linux (ma non solo) offre molti software per gestire il backup da riga di comando. Alcuni esempi – borg – duplicity – restic – rsync – rclone

Powershell

Infine una piccola digressione/informazione, anche Microsoft è stata costretta ad ammettere la superiorità della riga di comando, infatti dopo anni in cui ha puntato esclusivamente a rendere le interfacce sempre più accattivanti, da qualche anno fornisce insieme ai suoi sistemi operativi la #powershell. Con questo software, di fatto, non ha voluto rimanere indietro rispetto al competitor #linux. In pratica è un ammissione circa il fatto che alcune cose si fanno meglio e più velocemente con la riga di comando! Nel corso del tempo sono nate estenzioni per questa shell, e ormai è possibile effettuare moltissime operazioni, purtroppo ha una propria sintassi, quindi sarà necessario studiare un po'.

Per motivi spazio e tempi di lettura l'articolo finisce qui, ma ci sarebbe materiale a sufficienza per scrivere libri su libri o riempire di articoli giornalieri un blog. Spero di avervi un po' incuriosito a provare, e con che i miei appunti su qualche comando che uso vi siano di aiuto.

Seguimi su mastodon: @magostinelli@mastodon.uno

Articolo pubblicato con licenza CC BY-NC-SA