lunedì 7 maggio 2012

Script "copia e sposta"

Problema:
Copiare da una directory i files e le directory in ordine di eta`, dal piu` vecchio al piu` recente, in una chiavetta usb, spostandoli infine in una diversa posizione

Ho pensato ad un utilizzo, sia con parametri da linea di comando, che inserimento manuale con relativa domanda, per questo ho lasciato alcune parti dello script, che, anche se non utilizzate o utilizzate solo in parte, possono servire per combinarlo come meglio si ritiene opportuno.

copy-and-move.sh
#!/bin/bash

# Help
if [[ $# -ne 3 || $1 = "-h" ]]; then
    echo "uso: $0 <directory e/o nomefile sorgente> \
<destinazione/percorso completo della directory dove copiare> \
<destinazione/percorso completo della directory dove spostare>"
    echo ""
    exit 1
fi

# Fixed ?
SOURCE="$1"
DESTCP="$2"
DESTMV="$3"


echo -n "Name of the source directory [$SOURCE]: "
read SOURCE
if [ "$SOURCE"x = x ]; then SOURCE="$1"; fi
echo -n "Name of the copy destination directory [$DESTCP]: "
read DESTCP
if [ "$DESTCP"x = x ]; then DESTCP="$2"; fi
echo -n "Name of the move destination directory [$DESTMV]: "
read DESTMV
if [ "$DESTMV"x = x ]; then DESTMV="$3"; fi

NOME="`ls -tr $SOURCE | cut -f1 | head -n 1`"


while [ "$NOME" != "" ]
    do
 echo "Inizio copia .."
 cp -v -R "$SOURCE/$NOME" "$DESTCP";
 if [ "$?" != "1" ]
     then
  echo "Inizio sposta .."
  mv -v "$SOURCE/$NOME" "$DESTMV"
  NOME="`ls -tr $SOURCE | cut -f1 | head -n 1`"
     else
  echo "Ended at: $SOURCE/$NOME"
  exit 1
 fi
done

L'uso e` semplice, richiamato senza parametri o con "-h", visualizza l'help.
Una volta eseguito con parametri, viene chiesta conferma per ogniuno e data la possibilita` di correggerlo, ma: attenzione a non sbagliare.
Quando la chiavetta e` piena, il comando copia va` in errore e mi fermo, visualizzando l'ultima copia in corso senza spostarla, cosi` da poterla eliminare dalla chiavetta ed averla ancora nella posizione originale per la volta successiva.

Dal primo "if", quello dell'help, si potrebbe eliminare la condizione dei parametri in avvio, la parte "$# -ne 3", optando per l'inserimento manuale alla richiesta.

Usatelo a vostro rischio, non mi assumo rensonsabilita`.
E se avete idee per perfezionarlo, usate il modulo commenti o scrivetemi una mail.
Se mi ricordo, poi vi "coloro" le scritte che passano a video quando ci sono tanti piccolo files ;)

venerdì 4 maggio 2012

Configurazione exim "mail sent by smarthost" (smtp.gmail.com)

Per prima cosa:
dpkg-reconfigure exim4-config











Poi, nasce un problema, che ho risolto leggendo "/usr/share/doc/exim4-base/README.Debian.gz", qua l'estratto della parte significativa:
2.3.1. Using Exim as SMTP-AUTH client

   If you want to set up Exim as SMTP AUTH client for delivery to your
   internet access provider's smarthost put the name of the server, your
   login and password in /etc/exim4/passwd.client. See the man page for
   exim4-config_files(5) for more information about the required format.

   If you need to enable AUTH PLAIN or AUTH LOGIN for unencrypted
   connections because your service provider does support neither TLS
   encryption nor the CRAM MD5 authentication method, you can do so by
   setting the AUTH_CLIENT_ALLOW_NOTLS_PASSWORDS macro. Please refer to
   Section 2.1.3, "Using Exim Macros to control the configuration" for
   an explanation of how best to do this.

   /etc/exim4/passwd.client needs to be readable for the exim user (user
   Debian-exim, group Debian-exim). It is suggested that you keep the
   default permissions root:Debian-exim 0640.

Allora, ho consultato pure:
man exim4_passwd_client
Trovando:
/etc/exim4/passwd.client
       contains account and password data for SMTP authentication when exim is authenticating as a client to some remote server.

       The file should contain lines of the form

       target.mail.server.example:login-user-name:password

       which  will  cause exim to use login-user-name and password when sending messages to a server with the canonical host name target.mail.server.examâ
       ple.  Please note that this does not configure the mail server to send to (this is determined in Debconf), but only creates the correlation between
       host name and authentication credentials to avoid exposing passwords to the wrong host.

       Please  note that target.mail.server.example is currently the value that exim can read from reverse DNS: It first follows the host name of the tarâ
       get system until it finds and IP address, and then looks up the reverse DNS for that IP address to use the outcome of this query (or the IP address
       itself should the query fail) as index into /etc/exim4/passwd.client.

       This goes inevitably wrong if the host name of the mail server is a CNAME (a DNS alias), or the reverse lookup does not fit the forward one.

       Currently,  you  need to manually lookup all reverse DNS names for all IP addresses that your SMTP server host name points to, for example by using
       the host command.  If the SMTP smarthost alias expands to multiple IPs, you need to have multiple lines for all the hosts.  When your  ISP  changes
       the alias, you will need to manually fix that.

       You may minimize this trouble by using a wild card entry or regular expressions, thus reducing the risk of divulging the password to the wrong SMTP
       server while reducing the number of necessary lines.  For a deeper discussion, see the Debian BTS #244724.

       password is your SMTP password in clear text. If you do not know about your SMTP password, you can try using your POP3 password as a first guess.

       This file must be readable for the Debian-exim user and should not be readable for others. Recommended file mode is root:Debian-exim 640.

       # example for CONFDIR/passwd.client
       # this will only match if the serverâs generic name matches exactly
       mail.server.example:user:password
       # this will deliver the password to any server
       *:username:password
       # this will deliver the password to servers whose generic name ends in
       # mail.server.example
       *.mail.server.example:user:password
       # this will deliver the password to servers whose generic name matches
       # the regular expression
       ^smtp[0-9]*.mail.server.example:user:password

Per verificare:
host smtp.gmail.com
smtp.gmail.com is an alias for gmail-smtp-msa.l.google.com.
gmail-smtp-msa.l.google.com has address 173.194.66.109
gmail-smtp-msa.l.google.com has address 173.194.66.108

Ho di conseguenza modificato il file "/etc/exim4/passwd.client" cosi`:
# password file used when the local exim is authenticating to a remote
# host as a client.
#
# see exim4_passwd_client(5) for more documentation
#
# Example:
### target.mail.server.example:login:password
gmail-smtp-msa.l.google.com:USERNAME@gmail.com:PASSWORD

mercoledì 2 maggio 2012

Software alternativi

Leggo spesso e sempre piu`, articoli che riguardano alternative al software proprietario con altri software liberi.
Molte volte si tratta di "questo libero" sostituisce "questo chiuso", tipicamente con titoli:
"NN" alternative ai programmi da ufficio.

Smettete di cercare il vostro software alternativo, cambiate direttamente il sistema operativo adottandone uno libero, cosi` sostituite tutto in una volta sola!

.. e non trovero` piu` articoli (ormai inutili ?) su "questo fa` quello che fa` qeull'altro", ma solamente "questo" fa` "quello".

Non so se mi son spiegato.
:)