" itemprop="description"/>

FaciLinux

Guide Facili per Linux

NAT forwarding in VirtualBox

- Posted in VM by

Grazie a VirtualBox è possibile creare velocemente delle VM sulla propria workstation, per finalità di sviluppo e test. Supponiamo di voler provare l'ultima versione di un CMS senza impattare su servizi in produzione; è possibile creare al volo una macchina virtuale con un server Apache a bordo e installare il CMS per test e sviluppo. Le VM in VirtualBox vengono generalmente impostate con un indirizzo NAT interno, il che significa che - nel nostro esempio - il web server di test che gira sulla guest vm non sarà raggiungibile dal browser della nostra workstation. Ciò, a meno di impostare una regola di inoltro. Ecco come fare, e soprattutto ecco come farlo da linea di comando.

VBoxManage

vboxmanage è il coltellino svizzero che ci servirà per tutte le operazioni di questa guida; apriamo quindi un terminale e digitiamo:

vboxmanage list vms

Nel mio caso il comando riporta questa lista:

vboxmanage list vms
"W10" {5c7b69f8-e1a9-4799-8f4c-2e33e08339ea}
"LinuxMint19.1" {fb9c380e-eecb-446a-ac80-3c61f0cd8d6c}
"OpenMandriva 4" {33e112cc-65b1-4465-bb98-2b696add9942}
"Debian 9.8" {9816d8a6-0110-4c81-8c38-921e68e72a3c}
"NuTyX" {0982b040-2bbe-4574-86d0-d04aa033d31b}
"OpenSuse" {a3da54bf-3573-4b3d-b52c-0dcf759b0f2a}
"Debian5.0" {1cae2c0b-50ad-40c0-af52-668d6bbbae8a}

La VM su cui gira il web server è "Debian 9.8". Per avviarla basta dare il seguente comando:

vboxmanage startvm "Debian 9.8"

Scoprire l'indirizzo IP della VM

Una volta che la VM sarà partita è necessario scoprire quale sia il suo indirizzo IP, necessario per impostare la regola di forward. Anche in questo caso il tool vboxmanage ci viene in aiuto; è possibile infatti scoprire tutte le informazioni di una vm con il comando vboxmanage guestproperty enumerate "Nome VM". Nel caso di esempio il comando diventa:

vboxmanage guestproperty enumerate "Debian 9.8"

con il seguente output (NB la parte non necessaria è stata rimossa):

Name: /VirtualBox/GuestInfo/Net/0/V4/IP, value: 10.0.2.15

ATTENZIONE: perché il comando di enumerate funzioni occorre che sulla VM siano installate le guest additions

Creaimo una regola di port forwarding

Le regole di port forwarding si creano con il comando vboxmanage controlvm e l'opzione natpf. Dal comando di enumerate precedente abbiamo i seguenti dati:

  • numero della scheda di rete (ricavabile da /VirtualBox/GuestInfo/Net/0/V4/IP ), che va incrementato di 1 per il successivo comando
  • indirizzo ip

Sulla macchina di test sta girando un server Apache, in ascolto sulla porta 80; con questo comando abilitiamo una regola di port-forwarding dal nome "Regola1" della porta 80 della VM sulla porta 8080 di localhost (ovvero 127.0.0.1) della workstation

vboxmanage controlvm "Debian 9.8" natpf1 "Regola1",tcp,127.0.0.1,8080,10.0.2.15,80

NB l'opzione natpf deve essere seguita dal numero della scheda di rete su cui impostare la regola. Nell'esempio la scheda è la prima (di quattro massime impostabili su un VM), quindi il comando diventa natpf1; se si dovesse impostare una regola sulla seconda scheda il comando diventerebbe natpf2 e così via.

Verifica

È possibile verificare lo stato delle regole impostate sia direttamente, ovvero aprendo un browser all'indirizzo http://127.0.0.1:8080

verifica diretta sia indirettamente, ovvero controllando l'output del comando

vboxmanage showvminfo "Debian 9.8"

Nel caso dell'esempio riportato qui sopra, nell'output del comando compaiono le righe:

NIC 1 Rule(0):   name = Regola1, protocol = tcp, host ip = 127.0.0.1, host port = 8080, guest ip = 10.0.2.15, guest port = 80

che confermano l'applicazione della regola impostata.

balena Etcher

- Posted in tools by

Etcher (balenaEtcher) è una applicazione per scrivere i file immagine su schede SD.

Qui a balena abbiamo migliaia di utenti che lavorano con le nostre istruzioni di avvio e fino a poco tempo fa eravamo imbarazzati riguardo ai passaggi che comportavano il flashing di una scheda SD. C'era un modo differente per Mac / Windows / Linux e diversi passaggi manuali e soggetti a errori lungo la strada.
Con nostra sorpresa non c'era niente là fuori che si adattasse ai nostri bisogni. Così abbiamo creato Etcher, un'app flash card SD che è semplice per gli utenti finali, estensibile per gli sviluppatori e funziona su qualsiasi piattaforma.

Quindi Etcher è stato sviluppato per soddisfare esigenze particolari : “masterizzare” su periferiche SD in maniera semplice per gli utenti finali, estensibile per gli sviluppatori e che deve funzionare su qualsiasi piattaforma.

E’ sviluppato da balena e concesso in licenza Apache License 2.0.
Etcher è stato sviluppato utilizzando il framework Electron e supporta Windows, macOS e Linux.

Va notato che balenaEtcher utilizza servizi di monitoraggio al momento dell’utilizzo (Google Analytics e Mixpanel), anche quando la casella di controllo ‘Invia dati di utilizzo anonimo’ è spuntata.

Home Page: https://www.balena.io/etcher/ GitHub: https://github.com/balena-io/etcher

Normalmente zip è installato.
È possibile eseguire il comando seguente per installare zip e unzip. Se non è già installato, verrà installato ora.

sudo apt install zip unzip

La sintassi per l'utilizzo del comando zip è piuttosto semplice.

zip [option] output_file_name input1 input2

Se l'unico scopo è creare un file zip da un gruppo di file e directory, il comando è il seguente:

zip -r output_file.zip file1 folder1

L'opzione -r attiverà la ricorsione nelle directory e comprimerà anche i contenuti di queste.
L'estensione .zip nei file di output è facoltativa poiché .zip viene aggiunto per impostazione predefinita.

Esempio

$ zip -r test.zip a.txt d/
  adding: a.txt (deflated 34%)
  adding: d/ (stored 0%)
  adding: d/b.txt (deflated 34%)

Premessa

Stop !!!

Generale

Ctrl+, Impostazioni
Ctrl+Shift+P Attiva/Disattiva il linea comandi
Ctrl+Alt+R Ricarica Atom
Ctrl+Shift+M Attiva/Disattiva l'anteprima Markdown
Ctrl+Shift+I Attiva/Disattiva gli strumenti sviluppatore di Chrome
Ctrl+. Attiva/Disattiva il Key Binding Resolver

Files e cartelle

Ctrl+N Nuovo file
Ctrl+Shift+N Nuova finestra
Ctrl+O Apri file
Ctrl+P Apri file con ricerca
Ctrl+Shift+O Apri cartella
Ctrl+ S Salva
Ctrl+ Shift + S Salva come
Ctrl+Tab
Ctrl+PGUP
Vai al tab successivo nel riquadro attivo
Ctrl+Shift+Tab
Ctrl+PGDN
Vai al tab precedente nel riquadro attivo
Alt+[1-9] Vai al tab
Ctrl+ W Chiudi tab

Linee

Ctrl+G Vai alla linea
Ctrl+L Seleziona linea
Ctrl+Shift+D Duplica linea
Ctrl+Shift+K Elimina linea
Ctrl+/ Sposta la linea su/giù
Ctrl+/ Attiva/Disattiva una linea di commento

Parole e caratteri

Alt+/ Vai alla parola precedente/successiva
Alt+Shift+B/F Seleziona fino all'inizio/fine della parola
Shift+/ Seleziona carattere per carattere

Trova e sostituisci

Ctrl+F Trova nel file corrente
Ctrl+Shift+F Trova nel progetto
F3 Trova successivo
Shift+F3 Trova precedente
Ctrl+Enter Sostituisci tutto

Vista

Ctrl++/- Aumenta/diminuisci la dimensione del testo
Ctrl+0 Resetta la dimensione del testo
F11 Attiva/Disattiva lo schermo intero

Vista ad albero

Ctrl+K Ctrl+B
Ctrl+\
Attiva/Disattiva il riquadro vista ad albero
A Aggiungi file
Shift + A Aggiungi cartella

Riquadri

Ctrl+K /// Dividi il riquadro sopra/sotto/sinistra/destra
Ctrl+K Ctrl+/// Vai con focus al riquadro sopra/sotto/sinistra/destra
Ctrl+K Ctrl+W Chiudi il riquadro

Telegram URL caching

- Posted in scripting by

Nello sviluppo di un bot di Telegram ho avuto la necessità di caricare le immagini gif animate dei radar meteo dell'ARPAV, che vengono aggiornate con una certa frequenza.

In una prima versione le immagini venivano scaricate in locale e poi caricate su Telegram.

Leggendo la documentazione delle API Telegram del metodo "sendDocument"

File to send. Pass a file_id as String to send a file that exists on the Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get a file from the Internet, or upload a new one using multipart/form-data.

volevo velocizzare la risposta del bot alla richiesta del client sfruttando la possibilità di far eseguire ai server Telegram il download dell'immagine.

Il metodo funziona, ma mi sono scontrato con un problema: le immagini non erano aggiornate, ma si riferivano ad anni indietro.

Telegram risulta fare il caching degli URL che vengono inviati e non c'è modo automatico per scatenarne un aggiornamento.
Ciò è dovuto probabilmente alla funzonalità di "Link Preview" (quando viene scritto un URL in una chat Telegram genera una preview) e si ripercuote anche sull'invio di documenti e immagini.
Altri riferimenti a questo comportamento sono documentati qui e qui anche se non ho trovato una documentazione ufficiale.

Per aggirare il problema ho seguito una soluzioneproposta in una delle due discussioni:
generare un URL variabile nel tempo che venga poi rediretto all'URL dell'immagine.

Su un server http (ad es. example.com) viene creato un file rd.php

<?php
header("Location: http://original.url.com/image.jpg");
die();
?>

e una directory /get/ nella quale viene posizionato questo file .htaccess

RewriteEngine on
RewriteRule ^(.*)$ http://example.com/rd.php

In questo modo ogni URL del tipo http://example.com/get/qualsiasicosa
viene riscritto come http://example.com/rd.php
e quindi viene rediretto all'URL http://original.url.com/image.jpg dell'immagine che deve essere caricata.

Poichè qualsiasicosa deve variare nel tempo il candidato ideale è una qualche forma di timestamp.

Questa configurazione è stata fatta utilizzando il servizio di hosting gratuito Altervista.

Gli articoli presenti in questo sito sono di proprietà degli autori di FaciLinux
Idee, consigli? Scrivici su
info-at-berretto.eu
Questo blog è basato su HTMLy