#!/bin/bash cd $(dirname $0) usage () { Res=$1 case $Res in 1) echo "root for use" ;; 2) echo "Check bin : $BinNeed" ;; 0) echo "Everything's Gonna Be Alright" ;; *) echo "Something strange just happend ... "; Res=666 ;; esac exit $Res } [[ "$(whoami)" != "root" ]] && usage 1 Liste=./data/liste ListeMachinaUser=./data/Machina ID=2000 tID=2 TMP=$(dirname $0)/tmp/ TMP=/tmp [[ ! -d $TMP ]] && mkdir $TMP [[ $(whoami) != "root" ]] && usage cp docker-compose.yml.template.head ${TMP}/docker-compose.yml rm -f ${TMP}/hostname BinNeed="figlet mke2fs truncate docker docker-compose " CheckBinCpt=0 for CheckBin in ${BinNeed} do [[ -z $(which $CheckBin) ]] && ((CheckBinCpt++)) done [[ ${CheckBinCpt} -ne 0 ]] && usage 2 [[ "$1" == "del" ]] && read -p "ARE YOU SURE BIATCH ?????? (yes/no) : " ans for User in $(cat ${Liste} | grep ^[A-Z][A-Z].*\ [A-Z][a-z] | sed "s#[a-z]#|#g" | cut -d"|" -f1 | sed "s#-# #g"| sed "s# \+#-#g"| iconv -f utf8 -t ascii//TRANSLIT ) do echo -e "USER : $User" for Machina in $(cat ${ListeMachinaUser}) do tID=$(($tID+1)) if [[ "$1" == "mount" ]] then mount ./data/students/part/${User}_${Machina} ./data/students/part/${User}_${Machina}_part #if [[ ! -z $(mount | grep ${User}_${Machina}) ]] && [[ "$1" == "del" ]] elif [[ "$1" == "del" ]] then echo -e "\tDEL : $Machina [10.10.10.${tID}]" for var in $(docker-compose ps | grep -v NAME | awk '{print $1}' | grep ${User}_${Machina}); do docker stop $var;docker rm $var; done &> /dev/null umount ./data/students/part/${User}_${Machina}_part rm -Rf ./data/students/part/${User}_${Machina}_part rm ./data/students/part/${User}_${Machina} [[ ! -z $(mount | grep ${User}_part) ]] && umount ./data/students/part/${User}_part [[ -d ./data/students/part/${User}_part ]] && rm -Rf ./data/students/part/${User}_part [[ -f ./data/students/part/${User} ]] && rm ./data/students/part/${User} else if [[ ! -f ./data/students/part/${User}_${Machina} ]] then echo -e "\t GEN : $Machina [10.10.10.${tID}]" touch ./data/students/part/${User}_${Machina} mkdir ./data/students/part/${User}_${Machina}_part truncate -s 200M ./data/students/part/${User}_${Machina} &> /dev/null mke2fs -t ext4 -F ./data/students/part/${User}_${Machina} &> /dev/null mount ./data/students/part/${User}_${Machina} ./data/students/part/${User}_${Machina}_part cp -Rf ./data/skel/. ./data/students/part/${User}_${Machina}_part/ mkdir ./data/students/part/${User}_${Machina}_part/.gen/ mv ./data/students/part/${User}_${Machina}_part/backup.sh ./data/students/part/${User}_${Machina}_part/.gen/ echo "host : ${User^^}" | figlet -f small > ${TMP}/motd #echo "---------" | figlet >> /${TMP}/motd echo "Isen 2022 - MTN"| figlet -f small >> ${TMP}/motd cp -rfp ./data/ssh/ ./data/students/part/${User}_${Machina}_part/.gen/.ssh cp -rfp ./data/ssh/ ./data/students/part/${User}_${Machina}_part/.ssh cp ${TMP}/motd ./data/students/part/${User}_${Machina}_part/.gen/ mkdir -p ./data/students/part/${User}_${Machina}_part/Notes/{C01,C02,C03,C04}/ [[ -z $(echo $User | grep -iE "astier|lefebvre|catanese") ]] && rm -f ./data/students/part/${User}_${Machina}_part/.gen/.ssh/id* ./data/students/part/${User}_${Machina}_part/.ssh/id* chown -Rf 1000:1000 ./data/students/part/${User}_${Machina}_part/ echo "10.10.10.${tID} ${User,,}"-${Machina} >> ${TMP}/hostname echo "Generate $User" mkdir -p ./data/students/part/ touch ./data/students/part/${User} mkdir -p ./data/students/part/${User}_part truncate -s 200M ./data/students/part/${User} &> /dev/null mke2fs -t ext4 -F ./data/students/part/${User} &> /dev/null mount ./data/students/part/${User} ./data/students/part/${User}_part cp -Rf ./data/skel/. ./data/students/part/${User}_part/ mkdir -p ./data/students/part/${User}_part/.gen/ mv ./data/students/part/${User}_part/backup.sh ./data/students/part/${User}_part/.gen/ if [[ -f ./data/motd ]] then cat ./data/motd | sed "s#__MOTD__#$User#g" | figlet | tee ./data/students/part/${User}_part/.gen/motd &> /dev/null else echo "host : ${User^^}" | figlet | tee /tmp/motd &> /dev/null echo "---------" | figlet | tee -a /tmp/motd &> /dev/null echo "Isen 2021 - M 1"| figlet | tee -a /tmp/motd &> /dev/null cp /tmp/motd ./data/students/part/${User}_part/.gen/ fi cp -rfp ./data/ssh/ ./data/students/part/${User}_part/.gen/.ssh cp -rfp ./data/ssh/ ./data/students/part/${User}_part/.ssh [[ -z $(echo $User | grep -iE "astier|lefebvre|catanese") ]] && rm -f ./data/students/part/${User}_part/.gen/.ssh/id* ./data/students/part/${User}_part/.ssh/id* chown -Rf 1000:1000 ./data/students/part/${User}_part/ echo "10.10.10.${tID} ${User,,}" | tee -a /tmp/hostname &> /dev/null echo " ${User}_${Machina}: image: isensshbase hostname: ${User,,}-${Machina} mem_limit: 256m mem_reservation: 128M cpus: 0.5 storage_opt: size: '2G' volumes: - './data/students/part/${User}_${Machina}_part:/home/isen' networks: vpcbr: ipv4_address: 10.10.10.${tID} " >> ${TMP}/docker-compose.yml else mount ./data/students/part/${User}_${Machina} ./data/students/part/${User}_${Machina}_part fi fi done done cat docker-compose.yml.template.footer >> ${TMP}/docker-compose.yml cp ${TMP}/docker-compose.yml . for Dir in $( ls -1 ./data/students/part/ | grep _part) do cp ${TMP}/hostname ./data/students/part/${Dir}/.gen done chmod 777 ./docker-compose.yml cat docker-compose.yml.template.footer | tee -a /tmp/docker-compose.yml &> /dev/null cp /tmp/docker-compose.yml . for Dir in $( ls -1 ./data/students/part/ | grep _part) do [[ -f /tmp/hostname ]] && cp /tmp/hostname ./data/students/part/${Dir}/.gen done usage 0