Archive for the ‘Generico’ Category

Creare un server FTP

Creare un server FTP può sembrare banale, ma servono alcuni accorgimenti per farlo funzionare correttamente.

Installare il server FTP con:

aptitude install proftpd

e cambiare il file di configurazione con:

nano /etc/proftpd/proftpd.conf

Cambiare le seguenti impostazioni nel file:

ServerName                      "Azienda"

questo cambia il nome del server visualizzato quando un client si connette.

ServerType                      standalone

questo cambia l’avvio del server, nel qual caso viene gestito come un servizio.

DefaultRoot                     ~

questo impedisce agli utenti collegati di navigare al di fuori della loro home.

Port                            5021

questo cambia la porta di default.

PassivePorts                  5022 5050

questo cambia le porte passive in ascolto

MasqueradeAddress               1.2.3.4

questo cambia l’ip pubblico con cui il server figura in ascolto.

A questo punto riavviare il server con:

service proftpd restart

Nel caso in cui si abbia un firewall bisogna impostare il forward delle porte dal 5021 al 5050 verso il server FTP.

NB: Il client funzionerà solo in modo passivo, di conseguenza bisogna impostare tale modalità al momento della connessione.

Manager mount ssh

Questo script monta una condivisione sshfs scelta da una lista, quindi apre thunar nella cartella montata.

#!/bin/bash
string=$(zenity --text "SSH Client:" --width 0 --height 200 --list --radiolist --hide-header --hide-column 3 --print-column 3 --column "check" --column "name" --column "command" \
FALSE Server1 "sshfs root@192.168.1.1:/media/dati /mnt/server1" \
FALSE Server2 "sshfs root@192.168.1.2:/ /mnt/server2")
$string
thunar $(echo $string | gawk -F" " '{print $3}')

Ovviamente i server e gli indirizzi ip sono solo un esempio, basta sostituirli con quelli reali.

Backup maildir con notifica dettagliata

Lo scopo di questo script è di creare un backup tar.gz della cartella maildir di ogni utente, posizionandolo nella cartella home dell’utente stesso. Inoltre avvisa con una mail riepilogativa la dimensione e la quantità di messaggi cancellabili, in modo da poter intervenire e risolvere eventuali criticità di spazio utilizzato.

#!/bin/bash
date '+Maildir backup del %d.%m.%Y %a inizio ore %R' > /root/backup_maildir.log
echo "" >> /root/backup_maildir.log
echo "" >> /root/backup_maildir.log
echo -e "Utente\\t\\tCompleato\\tSpam\\t\\tTrash\\t\\tDimensione" >> /root/backup_maildir.log
echo "" >> /root/backup_maildir.log
for X in /home/* ; do
        if [ ! "$X" = "/home/utente_principale" ] ; then
                rm $(echo $X)/mdbk_$(echo $X | awk -F / {'print $3'}).tar.gz
                tar -czf $(echo $X)/mdbk_$(echo $X | awk -F / {'print $3'}).tar.gz $(echo $X)/Maildir/
                echo -e -n $(echo $X | awk -F / {'print $3'})"    "\\t >> /root/backup_maildir.log
                echo -e -n $(date '+%R')\\t\\t >> /root/backup_maildir.log
                echo -e -n $(find $(echo $X)/Maildir/.Spam/cur/ | grep -c \n)\\t\\t >> /root/backup_maildir.log
                echo -e -n $(find $(echo $X)/Maildir/.Trash/cur/ | grep -c \n)\\t\\t >> /root/backup_maildir.log
                echo -e $(du -s -BMB $X/Maildir | awk -F " " {'print $1'}) >> /root/backup_maildir.log
        fi
done
echo "" >> /root/backup_maildir.log
date '+Maildir backup del %d.%m.%Y %a fine ore %R' >> /root/backup_maildir.log
cat /root/backup_maildir.log | /usr/bin/nail -s "$(date '+Maildir backup del %d.%m.%Y %a')" admin@example.com

Da notare che il backup non viene fatto per la cartella “utente_principale” che di norma è l’utente utilizzato per amministrare il sistema, ma che in questo caso non possiede una casella di posta. Infine la mail di notifica è mandata a admin@example.com incaricato di monitorare il processo schedulato.

Copia ricorsiva

Ad esempio se si vuole copiare in un’unica cartella Immagini tutti file chiamati screen*.jpg sparsi in varie sottocartelle, si può usare il solo comando find come segue:

find . -name screen*.jpg -exec cp '{}' ~/Immagini/ \;

Rimuove la richiesata password di sudo

Ci sono programmi che necessitano di essere eseguiti con i privilegi di root. Per lanciarli da utente normale di solito si usa il comando sudo con:

sudo comando

In questo modo sudo esegue il comando come fosse root. Per farlo però richiede la password dell’utente sudoers (l’utente principale) e questa cosa non è possibile passarla all’interno di uno script. Per risolvere la cosa dobbiamo escludere il programma dalla richiesta password di sudo nel seguente modo:
Editare il file /est/sudoers con:

sudo visudo

e aggiungere il programma come riportato in seguito alla fine del file:

%admin ALL=NOPASSWD: /sbin/reboot

In questo modo potremo digitare sudo reboot senza che sudo richieda la password. Perciò possiamo anche inserire il comando in uno script eseguibile da utente normale.