Possiedo un portatile aziendale, e spesso mi trovo a fare operazioni sul mio terminale linux, che hanno bisogno di accessi ad internet. Niente di nuovo, certo! ho, però, il problema della mia rete aziendale… esiste un proxy con autenticazione che mi controlla.
Ciò mi porta ad inserire mille volte la password del proxy (e non sono il tipo da “ricorda password”) perchè non mi piace che la mia macchina metta le credenziali al posto mio.
OK, è paranoia, ma ho scoperto di non essere il solo… e soprattutto se parliamo della shell.
Questo veloce tutorial presenta e spiega il mio script; esso imposta “a caldo” il proxy nella proprio shell di lavoro, spero che ti sia utile.
Questione di variabili
Per avere il setting del proxy sulla propria shell sono necessarie diverse variabili di ambienti, io le ho raccolte ed in pratica le imposto tutte; ecco la mia lista:
odyssey@Itaca:/opt/bin/tmp$ env | grep proxy ftps_proxy=ftps://utente:password@proxy-hostname:9999 http_proxy=http://utente:password@proxy-hostname:9999 PROXYHOST=utente:password@proxy-hostname:9999 ftp_proxy=ftp://utente:password@proxy-hostname:9999 proxy_passwd=password https_proxy=https://utente:password@proxy-hostname:9999 proxy_user=utente
Questioni di sicurezza
Purtroppo quella password in chiaro non mi piace assolutamente, ma se parliamo di variabili di ambiente non posso (o quantomeno io non conosco modo di ) nasconderle. Mi rincuora che chiudendo il terminale tali settaggi scompaiono come se fossero neve al sole.
Per tutto il resto invece ho cercato di far scomparire le tracce della mia password. In effetti se si esegue un set esplicito di quelle variabili, le informazioni vengono memorizzate nella history della shell.
Per evitare questo una prima versione dello script venivano chiesti i dati semsibili tramite il comando shell
read
In questo modo non lasciamo nulla nella storia delle istruzioni. In pratica sarebbe bastato un
read "Enter your username:" user
Obbiettivamente scrivere ogni volta il mio nome, è un pò una scocciatura; a tal proposito mi sono ingegnato a fornire alla read almeno un default. Ecco le istruzioni:
PROXY_DEFAULT_USER="staniscia" read -e -i "$PROXY_DEFAULT_USER" -p "Please enter username: " input user="${input:-$PROXY_DEFAULT_USER}"
In questo modo ho un comodissimo messaggio con annessa risposta di default; basta solo premere invio.
Come NON mostrare la password a video
Ho ancora un problemino con l’inserimento della password a video; la “read” mostra ciò che inseriamo! come risolvo il problema?
disabilitando l’output a video con i seguenti domandi:
echo -n "Please enter password:" stty -echo read pwdr stty echo echo ""
Tutto il codice
Ecco tutto il codice, e tutto a vostra disposizione, aspetto commenti e migliorie, un saluto
[gist https://gist.github.com/Odyno/36fb85fc46df020754f4d657524c9b7f /]