Porcherie informatiche per risolvere in modo artistico i piu` disparati e disperati problemi.


Conversione della mail da Outlook Express a mailbox unix (thunderbird per esempio)

Mi e` capitato di doverlo fare per piu` di 900 cartelle di email (files dbx di outlook express) e il programma che mi ha risolto il problema e` questo: http://www.ukrebs-software.de/english/dbxconv/dbxconv.html. E` sufficiente lanciare il programma da una console (windows) passandogli i parametri richiesti, e lui si converte tutti i files in mailbox unix standard. A questo punto e` sufficiente togliere l'estensione "mbx" dai files mailbox unix, copiarli dentro al profilo di Thunderbird nella cartella della mail locale, e con un riavvio di Thunderbird tutte le cartelle si vedranno sotto l'account "cartelle locali". Piu` semplice di cosi` non si puo`. Per sicurezza, perche` non vada perso, allego il programma di conversione dbxconv anche a questa pagina del wiki. dbxconv.zip

Web server in una sola riga di python

Se vi serve un web server per servire files statici, per esempio firmware per qualche dispositivo, la soluzione piu` semplice in assoluto e` quella di posizionarsi nella directory che vogliamo che sia la nostra documentroot e poi eseguire:

python -m SimpleHTTPServer

Questo comando avvia un web server sulla porta 8000.

Per cambiare la porta, fornire la porta come parametro, tipo:

python -m SimpleHTTPServer 80

Gestire web hosting dove non hai console

Gestire directory con troppi files dentro

Se per qualche motivo una directory di cache o altro si e` riempita di troppi files (diciamo 10.000 o piu`) puo` essere molto difficile fare qualsiasi operazione. Un "ls" puo` impiegare decine di minuti per creare la lista dei files da mostrarti, e qualsiasi comando con delle wildcard puo` riportare il classico errore "Argument list too long". Per aiutarsi nel capire cosa e` successo occorre tanta pazienza e l'uso di "find". Con find e` possibile infatti operare su liste di files troppo grandi in quanto find li tratta uno alla volta, e non tutti assieme. Questo non riduce il tempo di esecuzione, ma permette di dare comandi senza ottenere errori, e inoltre l'output e` visibile da subito, non solo quando una lista dei files e` stata completamente caricata in ram.

Ecco qualche esempio. Ovviamente al posto di "*" potete mettere quello che vi serve. Fate sempre molta molta attenzione quando giocate con i comandi che cancellano roba.

Verifica se un file e` una mailbox

Teapop tende a danneggiare i file di mailbox lasciandoci della roba spuria in cima. Per convertire le mailbox in maildir, uso un tool che si incazza se la mailbox non e` a posto. Un rapido check di consistenza (verifica che il file non sia lungo 0 e che inizi con "From ") si puo` fare con questo script:

if [ -s $1 ] ;
then

        if [ "`cat $1 | awk  ' { if (FNR == 1) print substr($0,1,5) } '`" != "From " ] ; then
                echo $1 "Non e valido"
        fi
fi

Il quale puo` essere invocato in una directory per provare tutti i files cosi`:

 find . -type f -exec ./checkmail.sh {} \;

Mi e` capitato di avere un print server con tre parallele, con aperte una quantita` di porte tcp dalla 9100 in poi, per la stampa via protocollo "jetdirect", delle quali non era affatto chiaro quale porta tcp stampasse su quale porta parallela. Come se non bastasse, facendo nmap risultavano aperte decine di porte nel range 9000-10000, diverse ogni volta che lanciavo nmap. (questo perche` il print server veniva saturato dalle connessioni di nmap e non rispondeva piu` ai SYN in modo pseudorandom)

La soluzione per scoprire quale porta tcp stampa su quale porta parallela, la soluzione e` stata questa: attaccare una stampante ad aghi ad una delle porte, poi eseguire su una macchina Linux questo script:

for (( a=9000 ; a<9300 ; a=a+1)) ;
do
  echo $a | netcat -vv -w 1 192.168.0.251 $a
  sleep 1s
done

Questo script in pratica scrive il numero della porta sulla porta numero X (da 9000 a 9300 nell'esempio). Il risultato e` che su ogni stampante collegata al print server verranno stampati i numeri di porta che pilotano la stampante stessa.

Inviare allegati via email automaticamente

Per inviare automaticamente dei files per e-mail, ad esempio dei log, si puo` fare cosi`.

for LOG in `ls /var/log/argus/*.[0-9]*[0-9] /var/log/nsa/*.[0-9]*[0-9]`
do
   gzip $LOG -c > /tmp/`echo $LOG | sed 's/.*\///'`.gz
   metasend -f /tmp/`echo $LOG | sed 's/.*\///'`.gz -s $LOG -t utente@domain.tld -b -e base64 \
            -m "application/x-gzip; name=\"`echo $LOG | sed 's/.*\///'`.gz\"" -S 100000000
   sleep 5s
   rm /tmp/`echo $LOG | sed 's/.*\///'`.gz
done

Per estrarli dalla mail dall'altra parte, e salvarli dove si vuole, mantenendo il filename originale (path escluso), si puo` mettere nel .forward dell'utente una cosa tipo:

| /usr/bin/munpack -C <path di destinazione>

Per fare questo occorre avere installati i programmi che fanno parte del pacchetto metamail. Il nome del file che verra` visto dal ricevente e` generato dal sender, nella parte name=xxxx. Attenzione che occorre mettere fra virgolette (") il nome del file se contiene caratteri che non siano alfanumerici.

Usare un router generico su una Alice Business

Per prendere, in pppoe o pppoa, l'IP statico assegnato a una Alice Business usando un router non fornito da Telecom. Procedura mai verificata, non so se funzioni davvero.

È sufficiente impostare i seguenti valori per l'username e password:

Il Mac Adrress non dovrà contenere alcun simbolo (due punti o trattini), esempio: "3039F2C276D2-0013C8-t@alicebiz.it"

Error2 in Java e Entratel

Aprire C:\ProgramData\Oracle\Java (hidden) e rinominare la directory javapath in javapath2 o altro. Non so perche` funzioni e cosa altro possa rompere.

Hacks (last edited 2017-01-04 11:12:46 by Kurgan)