#!/bin/bash # uso: creautente # se password e` un numero singolo, crea una password casuale di N caratteri # se è una stringa, usa quella stringa come password # Se non ho esattamente due argomenti, esco con un errore if [ "$#" -ne 2 ]; then echo "Numero di argomenti errato" echo "USO: $0 " echo "Oppure $0 " echo "Esempio: $0 utente password oppure $0 utente 8" exit 1 fi # se esite già un file di QR code con lo stesso nome dell'utente che sto creando, esco con un errore if [ -f $1.png ]; then echo "Errore: esiste già un file di QR code con nome $1.png." exit 1 fi # se la password e` un numero e non una stringa, genera una password casuale # di enne caratteri la quale non contiene numeri (per semplificare la vita all'utente) case $2 in ''|*[!0-9]*) password=$2 ;; *) password="`pwgen -0 $2 1`" ;; esac # creiamo una stringa per il TOTP di 9 caratteri e la convertiamo in base32 # uso 9 caratteri che producono 16 caratteri in base32, e` lo standard che usa MS totp=`pwgen -sy 9 1 | base32` echo "Creo utente $1 con password $password e otp-secret $totp" echo "Il QR code relativo è creato in un file con nome $1.png" echo "la riga per creare l'utente su Mirkotik è accodata al file utenti-mirkotik.txt" qrencode -o $1.png -d 300 -s 10 "otpauth://totp/$1?secret=$totp" echo "/user-manager/user/add name=$1 otp-secret=$totp password=$password" >> utenti-mirkotik.txt exit 0