#!/bin/bash DIR_USB=/media/usb_drive/ DIR_OPENSLX=/Openslx/ user_name=`users | cut -f 1 -d ' '` # prepares openslx partition to be used # mounts partition if not mounted # blocks program execution if it is not a openslx partition # param $1 is the devpath to be mounted # param $2 is the uuid of the partition # return is done via the mountpath global variable, which is also used here function prepare_usb { # get the usb_drive's path local devpath="/dev/"$1 mountpath="" if [ ! 0 -eq $(mount | grep -q $devpath) ]; then echo $0": Device $devpath is already mounted" mountpath=$(mount | grep -w $devpath | cut -d' ' -f3) else echo $0": Device $devpath is not mounted" mkdir -p /media/openslx/$2 if $(mount $devpath /media/openslx/$2); then echo $0": Device $devpath mounted successfully" mountpath="/media/openslx/"$2 else echo $0": Device $devpath could not be mounted" exit 1 fi fi if [ -e "$mountpath/Openslx/config" ]; then echo $0": $devpath is an openslx ready drive" else echo $0": $devpath is not ready to be used as an openslx drive" if [ $mountpath = "/media/openslx/$2" ]; then echo $0": umounting $devpath" umount $devpath fi exit 2 fi } sleep 3 #TIRAR FOR # list all the usb_drives, mounted or not mounted usb_drives=`ls -lt 2>/dev/null /dev/disk/by-id/usb* | rev | cut -f 3 -d ' ' | rev | head -1` prepare_usb echo $mount_path counter=0 for user_info in `eval cat "$mount_path"/Openslx/config`; do type=`eval echo $user_info | cut -f 1 -d '='` counter=$(($counter+1)) if [[ $type == "SLX_USB_PASSWD" ]] then passwd=`eval echo $user_info | cut -f 2 -d '='` user=` eval echo $user_info | cut -f 2 -d '=' | cut -f 1 -d ':'` gshadow=`echo $user:!::` echo "user"$user check_user=`cat /etc/shadow | grep -w $user` passwd=`eval echo $user_info | cut -f 2 -d '='` if [[ ( ! -n $check_user) ]]; then echo "não existe user" fi elif [[ $type == "SLX_USB_SHADOW" ]] then shadow=`eval echo $user_info | cut -f 2 -d '='` elif [[ $type == "SLX_USB_GROUP" ]] then group=`eval echo $user_info | cut -f 2 -d '='` fi mod=$(( $counter % 3)) if [[ $mod == 0 ]]; then #insert data in the files if [[ (! -n $check_user)&&(-n $passwd)&&(-n $shadow)&&(-n $group)&&(-n $gshadow) ]]; then echo "Insert $counter" echo $passwd >> /etc/passwd echo $shadow >> /etc/shadow echo $group >> /etc/group #echo $gshadow >> /etc/gshadow if [ ! -d "/home/"$user ]; then mkdir /home/$user chown $user:$user /home/$user fi fi passwd="" shadow="" group="" gshadow="" user="" fi done echo $shadow echo $group #user=` eval cat "$mount_path"/Openslx/config | head -n 1 | cut -f 2 -d '=' | cut -f 1 -d ':'` #gshadow=`echo $user:!::` #check_user=`cat /etc/shadow | grep -w $user` #echo $shadow #echo $group #echo $check_user