[GNU/Linux] Configurare un proxy da shell

Oggi vedremo come configurare il sistema per permettere alle applicazioni da linea di comando di utilizzare un proxy. Le applicazioni da linea di comando molto spesso non hanno infatti nativamente l’opzione per veicolare le trasmissioni verso un proxy, diversamente dalle applicazioni grafiche (ad esempio i browser hanno sempre le opzioni per la configurazione di eventuali proxy). Dunque, la soluzione per la linea di comando è quella di configurare i parametri del proxy come variabile d’ambiente, e costringere in questo modo l’applicazione a passare dal proxy. Tramite la shell sono supportati i proxy con protocollo HTTP, HTTPS, e FTP. Vediamo adesso in dettaglio come fare.

Prima di tutto controlliamo tra le variabili d’ambiente che non siano già impostati proxy:

# ENV | grep -i proxy

Se non viene ritornato niente possiamo procedere a configurare il/i proxy:

# export http_proxy=http://<proxy-server-ip>:<port>
# export https_proxy=http://<proxy-server-ip>:<port>
# export ftp_proxy=http://<proxy-server-ip>:<port>

Nel caso in cui ci siano già state definite variabili proxy, è possibile eliminarle e definirle nuovamente:

# unset http_proxy
# export http_proxy=”http://<proxy-server-ip>:<port>”

Ricordo che le variabili d’ambiente definite con i comandi precedenti risultano temporanee, mentre per renderle permanenti è necessario modificare i file .bash_profile o .bashrc, come ho scritto dettagliatamente in questo post:

[GNU/Linux] Come configurare le variabili d’ambiente

Nel caso in cui il proxy richieda l’autenticazione è necessario invece configurare le variabili d’ambiente in questo modo:

# export http_proxy=<username>:<password>@http://<proxy-server-ip>:<port>/

Infine controlliamo di aver correttamente definito le variabili, osservando l’output dei comandi:

# echo $http_proxy
# echo $https_proxy
# echo $ftp_proxy

Ulteriori risorse sui proxy in Linux:

Matteo

[GNU/Linux] Come configurare le variabili d’ambiente

Una variabile è una piccola parte della memoria RAM identificata da un nome e in grado di contenere dei valori (nomi, date, …). Nel momento in cui un utente definisce una nuova variabile, il sistema associa al nome di tale variabile un indirizzo di memoria nel quale viene memorizzato il valore indicato. Per definire una variabile è sufficiente usare la seguente sintassi:

# NOME_VARIABILE=valore

Le variabili d’ambiente sono invece particolari variabili che permettono ad ogni utente di configurare il proprio ambiente di lavoro. Vediamo una lista dei comandi da tenere sempre a portata di mano.

Per vedere una lista delle variabili d’ambiente impostate nel sistema il comando è:

# env

environment_variables

Per settare una nuova variabile d’ambiente (“temporanea”, vedere più avanti per la spiegazione):

# export NOME_VARIABILE="valore della variabile"

Per visualizzare il valore di una variabile d’ambiente:

# echo $NOME_VARIABILE

Per cancellare una variabile d’ambiente:

# unset NOME_VARIABILE

E’ importante notare che per cancellare una variabile non è sufficiente effettuare un’assegnazione con un valore nullo, ma bisogna necessariamente usare unset. Ad esempio il comando VARIABILE="" imposterà semplicemente il valore della variabile con quello della stringa vuota, ma non cancellerà la variabile, dunque fate attenzione!

Le variabili d’ambiente possono essere suddivise in 3 categorie: temporanee, locali (per un singolo utente), o globali (per tutti gli utenti). Una variabile definita semplicemente all’interno della sessione di una shell avrà una durata limitata all’esecuzione della shell stessa. In questo caso:

# VARIABILE_PROVA=/home/pippo/tmp
# export VARIABILE_PROVA

la variabile verrà eliminata nel momento in cui la sessione della shell verrà chiusa (logout, exit, riavvio del sistema, …).

Un altra categoria è quella delle variabili d’ambiente locali, ossia relative ad un singolo utente. Queste possono essere definite in:

  • ~/.bash_profile – file è eseguito una volta al login
  • ~/.bashrc – file eseguito eseguito alla creazione di una nuova shell. La maggior parte delle variabili dovrebbe essere posta al suo interno.

Infine ci sono le variabili globali definite in modo simile alle precedenti:

  • /etc/profile – file letto una volta al login;
  • /etc/bashrc – file letto ogni volta che viene avviata una nuova shell.

Matteo

[GNU/Linux] Script per modificare MAC address

Ho scritto uno script bash che permette in Linux di manipolare l’indirizzo MAC di una scheda di rete, la cui operazione in gergo viene detta spoofing. Lo script può essere usato su tutte le principali distribuzioni e permette di cambiare l’indirizzo MAC con uno generato casualmente oppure con uno indicato dall’utente. Le istruzioni per eseguire lo script sono le seguenti:

Usage: macs.sh [OPTIONS]
Spoof your wired or wireless network adapter with a new MAC address.
Options:
-r <interface>: spoof an interface with a random MAC address
-s <interface> <address>: spoof an interface with a new MAC address
-o <interface>: restore an interface with the original MAC address
-v <interface>: show the MAC address and the vendor of an interface
-p <vendor>: show the MAC prefix of a vendor
-a: show the MAC address of every network interface
-h: show this help

—————————————————————-
Examples:
sh macs.sh -r eth0
sh macs.sh -s wlan1 001122334455
sh macs.sh -s eth3 00:1C:39:FB:6C:88
sh macs.sh -o eth0
sh macs.sh -p IBM
sh macs.sh -p Microsoft

Tra le funzionalità vi è anche quella di visualizzare il vendor della scheda di rete, e tutti i prefissi MAC proprietari di uno specifico vendor.

Si tratta di uno script bash, dunque deve essere lanciato con l’interprete sh e con i privilegi di root. Vediamo alcuni esempi:

# sh macs.sh -r eth1 modifica l’indirizzo dell’interfaccia eth1 con uno random
# sh macs.sh -s eth1 00:0C:29:FB:6C:4B modifica l’indirizzo di eth1 con 00:0C:29:FB:6C:4B
# sh macs.sh -o eth3 ripristina l’indirizzo MAC reale di eth3
# sh macs.sh -v eth2 visualizza l’indirizzo MAC e vendor di eth2
# sh macs.sh -a visualizza gli indirizzi MAC e vendor di tutte
# sh macs.sh -p Microsoft visualizza i prefissi MAC proprietari Microsoft

Lo script è rilasciato con licenza GNU GPL v3, ed è scaricabile a questi link:

Matteo