Para configurar el acceso de cada usuario, he preparado dos versiones de un mismo script:
El script addusuario.sh nos pide introducir login y password del usuario. Si el usuario es un profesor, le configura el acceso a la red wifi del centro, y si el usuario es un alumno, le configura el acceso a la red wifi de su aula. Además, cachea las credenciales, para que el usuario pueda entrar en el portátil en el caso de que no tenga conexión a la red. Este script lo coloco en el directorio /usr/local/sbin/ de los portátiles mediante puppet para poder usarlo cuando quiera.
addusuario.sh
#!/bin/bash
#
# addusuario.sh: Configura el acceso wifi del usuario y cachea sus credenciales
#
# Esteban M. Navas Martín
# IES Valle del Jerte
HOST=`hostname`
AULA=`expr substr $HOST 1 3`
USOPROFESOR=`grep "portatil-profesor" /etc/escuela2.0`
clear
DIALOG=${DIALOG=dialog}
tempfile=`tempfile 2>/dev/null` || tempfile=/tmp/test$$
trap "rm -f $tempfile" 0 1 2 5 15
$DIALOG --title "Portatil: $HOST" --clear \
--inputbox "Introduzca el login del usuario de este equipo:" 10 51 2> $tempfile
retval=$?
case $retval in
0)
USUARIO=`cat $tempfile`
if [ "$USUARIO" ] ; then
$DIALOG --title "Password del usuario" --clear \
--inputbox "Introduzca la password del usuario" 10 51 2> $tempfile
retval=$?
case $retval in
0)
PASSWORD=`cat $tempfile`
;;
*)
$DIALOG --title "ERROR" --clear \
--msgbox "Es necesario introducir la password del usuario." 12 46
exit 1
esac
fi
;;
*)
$DIALOG --title "ERROR" --clear \
--msgbox "Es necesario introducir el login del usuario." 12 46
exit 1
esac
cd /tmp
if [ "$USOPROFESOR" ]; then
wget -O /tmp/Auto\ IESVALLEDELJERTE3 http://servidor/ficheros/Auto\ IESVALLEDELJERTE3
retval=$?
if [ $retval -eq 0 ]; then
sed "s/USER/$USUARIO/" Auto\ IESVALLEDELJERTE3 > /tmp/Auto\ IESVALLEDELJERTE3.1
sed "s/PASSWORD/$PASSWORD/" /tmp/Auto\ IESVALLEDELJERTE3.1 > /etc/NetworkManager/system-connections/Auto\ IESVALLEDELJERTE3
chmod 600 /etc/NetworkManager/system-connections/Auto\ IESVALLEDELJERTE3
# Borramos los archivos de configuracion temporales por si volvemos a ejecutar el script
rm /tmp/Auto\ IESVALLEDELJERTE3 /tmp/Auto\ IESVALLEDELJERTE3.1
fi
else
if [ -f /etc/NetworkManager/system-connections/Auto\ IESVALLEDELJERTE3 ]; then
rm /etc/NetworkManager/system-connections/Auto\ IESVALLEDELJERTE3
fi
wget -O /tmp/Auto\ $AULA-iesvalledeljerte3 http://servidor/ficheros/Auto\ $AULA-iesvalledeljerte3
retval=$?
if [ $retval -eq 0 ]; then
sed "s/USER/$USUARIO/" Auto\ $AULA-iesvalledeljerte3 > /tmp/Auto\ $AULA-iesvalledeljerte3.1
sed "s/PASSWORD/$PASSWORD/" /tmp/Auto\ $AULA-iesvalledeljerte3.1 > /etc/NetworkManager/system-connections/Auto\ $AULA-iesvalledeljerte3
chmod 600 /etc/NetworkManager/system-connections/Auto\ $AULA-iesvalledeljerte3
# Borramos los archivos de configuracion temporales por si volvemos a ejecutar el script
rm /tmp/Auto\ $AULA-iesvalledeljerte3 /tmp/Auto\ $AULA-iesvalledeljerte3.1
fi
fi
if [ "$USUARIO" ] && [ "$PASSWORD" ]; then
# Cacheamos las credenciales de usuario
cc_test -store any $USUARIO $PASSWORD
fi
El script .bash_login hace lo mismo que el anterior, pero sólo va a realizar la configuración cuando el usuario root haga login en un terminal y no exista el fichero de configuración de acceso a la wifi en /etc/NetworkManager/system-connections/ o cuando forcemos la ejecución del mismo, poniendo a vacío la variable FICHEROCONFIG. Este script lo coloco en el directorio /root de los portátiles mediante puppet.
bash_login.portatil
HOST=`hostname`
AULA=`expr substr $HOST 1 3`
USOPROFESOR=`grep "portatil-profesor" /etc/escuela2.0`
if [ "$USOPROFESOR" ]; then
FICHEROCONFIG=`ls /etc/NetworkManager/system-connections/|grep IESVALLEDELJERTE3`
else
FICHEROCONFIG=`ls /etc/NetworkManager/system-connections/|grep $AULA`
fi
# "Des-comentar" esta condición cuando queramos forzar la reconfiguración de la wifi
#FICHEROCONFIG=""
# Si la wifi ya está configurada, cerramos y no hacemos nada
if [ -z "$FICHEROCONFIG" ]; then
clear
DIALOG=${DIALOG=dialog}
tempfile=`tempfile 2>/dev/null` || tempfile=/tmp/test$$
trap "rm -f $tempfile" 0 1 2 5 15
$DIALOG --title "Portatil: $HOST" --clear \
--inputbox "Introduzca el login del usuario de este equipo:" 10 51 2> $tempfile
retval=$?
case $retval in
0)
USUARIO=`cat $tempfile`
if [ "$USUARIO" ] ; then
$DIALOG --title "Password del usuario" --clear \
--inputbox "Introduzca la password del usuario" 10 51 2> $tempfile
retval=$?
case $retval in
0)
PASSWORD=`cat $tempfile`
;;
*)
$DIALOG --title "ERROR" --clear \
--msgbox "Es necesario introducir la password del usuario." 12 46
esac
fi
;;
*)
$DIALOG --title "ERROR" --clear \
--msgbox "Es necesario introducir el login del usuario." 12 46
esac
WIFICONFIGURADA=`grep $USUARIO "$FICHEROCONFIG"`
if [ -z "$WIFICONFIGURADA" ]; then
if [ "$USOPROFESOR" ] && [ "$USUARIO" ] && [ "$PASSWORD" ]; then
wget -O /tmp/Auto\ IESVALLEDELJERTE3 http://servidor/ficheros/Auto\ IESVALLEDELJERTE3
retval=$?
if [ $retval -eq 0 ]; then
sed "s/USER/$USUARIO/" /tmp/Auto\ IESVALLEDELJERTE3 > /tmp/Auto\ IESVALLEDELJERTE3.1
sed "s/PASSWORD/$PASSWORD/" /tmp/Auto\ IESVALLEDELJERTE3.1 > /etc/NetworkManager/system-connections/Auto\ IESVALLEDELJERTE3
chmod 600 /etc/NetworkManager/system-connections/Auto\ IESVALLEDELJERTE3
# Borramos los archivos de configuracion temporales por si volvemos a ejecutar el script
rm /tmp/Auto\ IESVALLEDELJERTE3 /tmp/Auto\ IESVALLEDELJERTE3.1
else
echo "No existe el fichero de configuración Auto\ IESVALLEDELJERTE3 en http://servidor/ficheros/"
fi
else
if [ "$USUARIO" ] && [ "$PASSWORD" ]; then
if [ -f /etc/NetworkManager/system-connections/Auto\ IESVALLEDELJERTE3 ]; then
rm /etc/NetworkManager/system-connections/Auto\ IESVALLEDELJERTE3
fi
wget -O /tmp/Auto\ $AULA-iesvalledeljerte3 http://servidor/ficheros/Auto\ $AULA-iesvalledeljerte3
retval=$?
if [ $retval -eq 0 ]; then
sed "s/USER/$USUARIO/" /tmp/Auto\ $AULA-iesvalledeljerte3 > /tmp/Auto\ $AULA-iesvalledeljerte3.1
sed "s/PASSWORD/$PASSWORD/" /tmp/Auto\ $AULA-iesvalledeljerte3.1 > /etc/NetworkManager/system-connections/Auto\ $AULA-iesvalledeljerte3
chmod 600 /etc/NetworkManager/system-connections/Auto\ $AULA-iesvalledeljerte3
# Borramos los archivos de configuracion temporales por si volvemos a ejecutar el script
rm /tmp/Auto\ $AULA-iesvalledeljerte3 /tmp/Auto\ $AULA-iesvalledeljerte3.1
else
echo "No existe el fichero de configuración Auto $AULA-iesvalledeljerte3 en http://servidor/ficheros/"
fi
fi
fi
fi
if [ "$USUARIO" ] && [ "$PASSWORD" ]; then
# Cacheamos las credenciales de usuario
cc_test -store any $USUARIO $PASSWORD
fi
fi
0 comentarios:
Publicar un comentario en la entrada