Questo sito fa uso di cookie tecnici e di tracciamento anonimizzati, tutte le informazioni relative sono visibili nell’ Informativa sulla Privacy e sui Cookie , la navigazione sul sito implica l’accettazione delle condizioni in essa presentate.
WordPress – Plugin per gestione ‘robots.txt’
Per migliorare la gestione del file robots.txt generato da WordPress ho realizzato un plugin denominato “Robots.txt Quick Editor” che permette di:
- aggiungere del contenuto al file generato in automatico da WordPress
- sovrascrivere completamente il contenuto del file generato in automatico da WordPress
Il plugin si può trovare all’indirizzo https://it.wordpress.org/plugins/robots-txt-quick-editor/
Docker – ricerca immagine contenente un layer
Può essere utile, dato l’identificativo di un layer, andare a cercare in quali immagini esso è usato. Per questa semplice operazione è possibile utilizzare lo script docker-find-layer-image riportato qui di seguito.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
#!/bin/bash LAYER=$1 if [ "$LAYER" = "" ]; then echo "" echo "Layer not given as first parameter" echo "" exit 1 fi OK="" echo "" echo "Looking for layer $1 in docker images..." for IMAGE in $( docker image ls | awk '{print $3}' | grep -v IMAGE ); do LAYERFOUND=$( docker inspect $IMAGE 2>&1 | grep "$LAYER" 2>/dev/null | grep Dir\" 2>/dev/null ) if [ "$LAYERFOUND" != "" ]; then IMAGENAME=$( docker image ls 2>/dev/null | grep $IMAGE 2>/dev/null | awk '{print $1 ":" $2}' 2>/dev/null ) echo "Layer found in $IMAGENAME" OK="1" fi done [ "$OK" = "" ] && echo "Layer not found in any image" echo "" exit 0 |
Una volta salvato il codice qui riportato in /usr/local/bin/docker-find-layer-image e dato i permessi di esecuzione allo script sarà possibile avviare lo script passando come parametro l’identificativo del layer ed esso fornirà informazioni a riguardo.
Linux: estrazione tempo restante batteria UPS
Se usate un UPS collegato al vostro sistema Linux può essere comodo avere uno script che vi indichi quanta batteria è ancora disponibile, così da non farvi cogliere impreparati.
Ecco di seguito un semplice script che vi permetterà, dopo che avrete installato e configurato il demone e le utility Nut, di ottenere queste informazioni in modo chiaro e semplice.
#!/bin/bash
# device to check using "nut" utilities
UPSDEV="usbups@localhost"
# chars to be added at the end of output
CHARS=" | "
# displays battery remaining %
# echo "$( LANG= upsc $UPSDEV | grep battery.charge: | awk '{print $2}' )${CHARS}"
#displays battery time remaining, or "infinite" if battery is not discharging
STS=$(LANG= upsc $UPSDEV | grep ups.status: | awk '{print $2}' | grep -i DISCHRG )
SEC=$(LANG= upsc $UPSDEV | grep battery.runtime: | awk '{print $2}' )
if [ "$STS" = "" ]; then
echo "∞${CHARS}"
else
echo "$(date -d@$SEC -u +%Hh:%Mm)${CHARS}"
fi
Nel mio caso quanto sopra è stato salvato (e reso eseguibile) in /usr/local/bin/ups-status e poi il comando è stato usato come fonte di informazioni per xfce4–genmon-plugin, così da integrare nel pannello principale di Xfce l’informazione estratta dallo script creato.
Ricordate di adeguare il codice alle vostre esigenze (inserite il giusto riferimento al vostro ups in UPSDEV, adattate i caratteri extra da visualizzare in CHARS e commentate/decommentate i blocchi con le azioni di lettura dati e output)
Luce da Passeggio
Camminando in situazioni di scarsa illuminazione può essere necessario rendersi maggiormente visibili, per questo avere qualcosa di semplice da usare che produca una luce ben visibile e lampeggiante può rivelarsi davvero utile.
Da questa esigenza nasce Luce da Passeggio, una applicazione per Android che prevede: semplice interfaccia utente, nessun permesso particolare o accesso a dati dell’utente, personalizzazione della luce generata.
Tramite l’applicazione potete usare il vostro smartphone così da scegliere se rendervi visibili tramite:
– luce rossa lampeggiante
– luce arancio lampeggiante
– luce bianca lampeggiante
L’applicazione è disponibile per sistemi da Android 5 in poi, al seguente link: https://play.google.com/store/apps/details?id=net.airaghi.walkinglight&hl=it
Gestione moduli Apache per openSuse
Per la gestione del webserver Apache Httpd sulla distribuzione openSuse abbiamo il classico comando a2enmod, condiviso con altre distribuzioni, che permette di: 1) capire se un modulo è abilitato, 2) attivare un modulo che è non attivo e 3) disattivare un modulo.
Per comodità di gestione del sistema ho preparato un semplice script che si occupa di fare da wrapper verso il citato a2enmod andando a fornire funzionalità quali: 1) lista di tutti i moduli presenti sul sistema, 2) lista di tutti i moduli abilitati, 3) verifica dell’abilitazione di un modulo, 4) abilitazione di uno o più moduli e 5) disattivazione di uno più moduli.
Leggi tutto “Gestione moduli Apache per openSuse”Apache Netbeans : download ultima versione disponibile
Dopo aver visto come compilare Apache NetBeans ecco un altro modo per ottenere l’ultima versione di tale software, questa volta già in formato “compilato”.
Il tutto si riduce a due semplici righe da eseguire nel vostro terminale
1 2 3 |
NBURL=$( wget https://builds.apache.org/view/Incubator%20Projects/job/incubator-netbeans-linux/lastSuccessfulBuild/artifact/nbbuild/ -qO- | grep -o -e "NetBeans-dev-incubator-netbeans-linux-.*-on-.*-release.zip\"" | sed -es/\"$// ) [ "$NBURL" != "" ] && wget -nc https://builds.apache.org/view/Incubator%20Projects/job/incubator-netbeans-linux/lastSuccessfulBuild/artifact/nbbuild/$NBURL -O ./netbeans-latest.zip |
Eseguito quanto sopra, se tutto è andato bene, avrete nella directory da cui avete avviato i comandi un file netbeans-latest.zip contenente il vostro IDE, non vi resta che decidere dove decomprimere il file e avrete tutto quanto vi serve.
Apache Netbeans – compilazione e aggiornamento
Con il passaggio di NetBeans alla Apache Foundation si è, per ora, persa la possibilità di scaricare versioni specifiche e già preconfezionate di questo IDE.
Se si unisce questo all’attuale impossibilità di usare la versione 9 del software, come offerta preconfezionata dalla Apache Foundation, anche per lo sviluppo PHP emerge come si debba trovare un metodo alternativo per ottenere, con poco sforzo, un tool di sviluppo aggiornato e adatto ai propri scopi.
Per questo motivo vi propongo lo script che sto usando per compilare Apache NetBeans all’ultima versione disponibile sul relativo reporistory GitHub e con il supporto a tutti i linguaggi previsti (PHP incluso).
Leggi tutto “Apache Netbeans – compilazione e aggiornamento”
PHP – Tool per crittografia file online
Per permettere un certo livello di riservatezza nelle comunicazioni si deve ricorrere a sistemi che vadano a cifrare i dati in transito, facendo in modo che solo il diretto interessato sia in grado di risalire al messaggio reale inviato;
questo tipo di comunicazione deve essere supportata da strumenti che permettano, conosciuta la chiave di decodifica, di andare a decifrare i messaggi/file che sono stati precedentemente cifrati.
Di seguito potete trovare un semplice tool in PHP che permette, una volta ospitato su un server web e utilizzato via browser, di cifrare/decifrare un file con la password da voi scelta.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |
<?php $ALGORITHM = 'AES-128-CBC'; $IV = '12dasdq3g5b2434b'; $error = ''; if (isset($_POST) && isset($_POST['operazione'])) { $password = isset($_POST['password']) && $_POST['password']!='' ? $_POST['password'] : null; $operazione = isset($_POST['operazione']) && in_array($_POST['operazione'],array('c','d')) ? $_POST['operazione'] : null; $file = isset($_FILES) && isset($_FILES['file']) && $_FILES['file']['error'] == UPLOAD_ERR_OK ? $_FILES['file'] : null; if ($password === null) { $error .= 'Password non valida<br>'; } if ($operazione === null) { $error .= 'Operazione non valida<br>'; } if ($file === null) { $error .= 'Errore nella ricezione del file<br>'; } if ($error === '') { $contenuto = ''; $nomefile = ''; $contenuto = file_get_contents($file['tmp_name']); $filename = $file['name']; switch ($operazione) { case 'c': $contenuto = openssl_encrypt($contenuto, $ALGORITHM, $password, 0, $IV); $filename = $filename . '.crypto'; break; case 'd': $contenuto = openssl_decrypt($contenuto, $ALGORITHM, $password, 0, $IV); $filename = preg_replace('#\.crypto$#','',$filename); break; } if ($contenuto === false) { $error .= 'Errore nei dati di cifratura/decifratura'; } if ($error === '') { header("Pragma: public"); header("Pragma: no-cache"); header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0"); header("Cache-Control: post-check=0, pre-check=0", false); header("Expires: 0"); header("Content-Type: application/octet-stream"); header("Content-Disposition: attachment; filename=\"" . $filename . "\";"); $size = strlen($contenuto); header("Content-Length: " . $size); echo $contenuto; die; } } } ?> <html> <head> <title>Cifratura/Decifratura file</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css"> </head> <body> <div class="container"> <div class="row"> <div class="col-12" > <h1>Utility per cifratura e decifratura di file</h1> </div> </div> <?php if ($error != '') { ?> <div class="row"> <div class="col-12 alert alert-danger" role="alert"> <?php echo ($error); ?> </div> </div> <?php } ?> <form class="form" enctype="multipart/form-data" method="post" id="form1" name="form1" auto-complete="off"> <div class="form-row"> <div class="form-group"> <label for="file">File da elaborare</label> <input type="file" name="file" id="file" placeholder="Selezionare file" required class="form-control-file"/> </div> </div> <div class="form-row"> <div class="form-group"> <label for="password">Password</label> <input type="password" name="password" id="password" placeholder="Indicare la password" required class="form-control" /> </div> </div> <div class="form-row"> <div class="form-group"> <label for="operazione">Operazione</label> <select name="operazione" id="operazione" required class="form-control"> <option value="">Selezionare azione</option> <option value="c">Cifra</option> <option value="d">Decifra</option> </select> </div> </div> <div class="form-row"> <button type="submit" class="btn btn-primary" onclick="setTimeout('document.form1.reset();',1000)">Esegui</button> <button type="reset" class="btn btn-reset">Annulla</button> </div> </form> </div> <script type="text/javascript" src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script> <script type="text/javascript" src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.bundle.min.js"></script> </body> </html> |
Linux: script per ottenere informazioni sulle batterie dei portatili
Ecco un semplice script che, se eseguito da terminale, permette di ottenere informazioni su ogni batteria presente nel vostro computer portatile.
- create un file (es: /usr/local/bin/battery.sh)
- al suo interno inserite quanto segue
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354#!/bin/shoDIR=$( pwd )oIFS=$IFSIFS=$'\n'for BATTERY in $( find /sys -name "BAT*" -type d 2>/dev/null );docd $BATTERYPRESENT=$( grep 1 present 2>/dev/null)if [ "$PRESENT" != "" ]; thenPRESENT="Yes"elsePRESENT="No"fiMODEL="$(cat manufacturer 2>/dev/null) $(cat model_name 2>/dev/null) $(cat technology 2>/dev/null)"SERIAL=$(cat serial_number 2>/dev/null | sed -es/\ //g)[ "$SERIAL" != "" ] && MODEL="$MODEL - s/n: $SERIAL"CYCLES=$( cat cycle_count 2>/dev/null )[ "$CYCLES" = "" ] && CYCLES="N.A."STATUS=$( cat status 2>/dev/null )[ "$STATUS" = "" ] && STATUS="N.A."CAPACITY=$( cat capacity_level 2>/dev/null)[ "$CAPACITY" = "" ] && CAPACITY="N.A."CAPACITY_PCT=$( cat capacity 2>/dev/null)[ "$CAPACITY_PCT" != "" ] && CAPACITY="${CAPACITY_PCT}% - $CAPACITY"ENERGY=$( cat energy_full 2>/dev/null )[ "$ENERGY" = "" ] && ENERGY="N.A."ENERGY_DESIGN=$( cat energy_full_design 2>/dev/null )[ "$ENERGY_DESIGN" = "" ] && ENERGY_DESIGN="N.A."[[ "$ENERGY_DESIGN" != "N.A." && "$ENERGY" != "N.A." ]] && ENERGY=$(( 100*$ENERGY/$ENERGY_DESIGN ))VOLTAGE=$( cat voltage_now 2>/dev/null )[ "$VOLTAGE" = "" ] && VOLTAGE="N.A."[ "$VOLTAGE" != "N.A." ] && VOLTAGE="$( echo $VOLTAGE | head -c2).$( echo $VOLTAGE | head -c4 | tail -c2)"VOLTAGE_MIN=$( cat voltage_min_design 2>/dev/null )[ "$VOLTAGE_MIN" = "" ] && VOLTAGE_MIN="N.A."[ "$VOLTAGE_MIN" != "N.A." ] && VOLTAGE_MIN="$( echo $VOLTAGE_MIN | head -c2).$( echo $VOLTAGE_MIN | head -c4 | tail -c2)"echo "Battery $(basename $BATTERY)"echo "- Model: $MODEL"echo "- Present: $PRESENT"echo "- Status: $STATUS"echo "- Capacity: $CAPACITY"[[ "$CYCLES" != "N.A." && "$CYCLES" != "0" ]] && echo "- Cycles: $CYCLES"[[ "$ENERGY" != "N.A." ]] && echo "- Max Energy: ${ENERGY}% of original"echo "- Voltage: $VOLTAGE (Original min: $VOLTAGE_MIN)"echo ""doneIFS=$oIFScd $oDIR - salvate il file
- date al file i permessi di esecuzione (es: chmod +x /usr/local/bin/battery.sh)
- usate lo script (eseguente da terminale: /usr/local/bin/battery.sh)
FilesBox: plugin per MantisBT che mostra il riepilogo degli allegati
Usando molto il sistema ti ticketing Mantis Bug Tracker è emersa la necessità, dopo gli ultimi aggiornamenti rilasciati dal produttore, di introdurre nuovamente un riquadro che riepilogasse, prima dell’elenco delle note collegate alla singola segnalazione, tutti i file allegati dagli utenti.
Per questo motivo è nato FilesBox, un piccolo plugin per Mantis Bug Tracker (dalla versione 2.0 in poi).
Leggi tutto “FilesBox: plugin per MantisBT che mostra il riepilogo degli allegati”