mercoledì 3 settembre 2008

Inserire le password in automatico in smbpasswd

E' molto utile poter inserire le password di utenti in modo automatico, così da poter processare un foglio di calcolo o un file CSV in modo batch. Mentre passwd accetta la password direttamente come parametro, il comando smbpasswd no, ed è quindi necessario usare una concatenazione di comandi per fornire a smbpasswd la password da STDIN, come si farebbe in modo interattivo.
Il seguente script processa un file CSV che si suppone abbia le colonne corrispondenti a username e password:

#! /bin/bash

cat $1 | while read ;
do
echo "Processo l'utente $REPLY"
echo $REPLY | awk 'BEGIN {FS=";"}{print "smbpasswd -a -s "$1"\n"$2"\n"$2"\n"}' | /bin/bash

done

L'idea dello script è abbastanza semplice: si legge il file passato come primo argomento, e la relativa linea viene messa automaticamente nella variabile REPLY dal comando read. Successivamente si usa awk per splittare la linea nei campi separati da ; (cambiando il separatore di campo) e infine si passano i valori a smbpasswd facendoli seguire da un'andata a capo che simula la pressione del tasto INVIO da parte dell'utente.

Nessun commento: