Outils pour utilisateurs

Outils du site


ubu:ubg

Table des matières

Test 1


Q1


#!/bin/bash
# take in param a file type "user group password"
# if no param, ask a filename
# create users using this file
# if the second param is "-d", delete all users and groups

# if no param, ask a filename set the variable file, else set the variable file with the first param
[ $# -eq 0 ] && read -p "Please enter a file name : " file || file="$1"

# CREATE USERS
# check if the file is not null, if it's a file and it's readable and read the user name, the group name and the password
[ $# -lt 2 ] && [ "$file" ] && [ -f "$file" ] && [ -r "$file" ] && while read new_user new_group new_password; do
        echo -n "$new_user: "

        # check if the group exists else create it
        if grep -q "^$new_group:" /etc/group; then
                echo -n "(group $new_group) "
        else
                groupadd "$new_group"
                echo -n "(group $new_group created) "
        fi

        # check if the user exists else create it
        if grep -q "^$new_user:" /etc/passwd; then
                echo "already exists"
        else
                # create user with home directory (-m) and bash shell
                useradd "$new_user" -m -g "$new_group" -s /bin/bash
                echo "$new_user:$new_password" | chpasswd
                echo "created!"
        fi
done < "$file"

# DELETE USERS
[ $# -eq 2 ] && [ $2 = -d ] && [ "$file" ] && [ -f "$file" ] && [ -r "$file" ] && while read line; do
        old_user=$(echo "$line" | cut -d " " -f1)

        # check if user exists then delete the user and its home directory with all its content (ou userdel -r)
        if grep -q "^$old_user:" /etc/passwd; then
                rm -rf "/home/$old_user"
                userdel "$old_user"
                echo "$old_user deleted"
        else
                echo "$old_user does not exist"
        fi
done < "$file"
exit

CORRECTION

sudo groupadd student
sudo useradd test -m -g student -s /bin/bash -p $(openssl passwd -1 test123)

[ $1 ] && fichier=$1 || read -p “entrer le nom du fichier :” fichier

if [ $# -eq 2 ] && [ $2 = “-d” ]
then
etc passwd …  userdel -r $user >2/dev/null

else

[ $fichier ] && while read user group password; do
    echo -: $user
[ $(grep “^$group:” /etc/group) ] && echo -n “ (groupe $group) ” || echo -n “ (creation du groupe $group) ”; groupadd $group
[ $(grep “^$user:” /etc/passwd) ] && echo “ creation de l’utilisateur $user”; useradd $user -m -g $group -s /bin/bash -p $(openssl passwd -1 $password)
done < $fichier || echo “$fichier n’existe pas”

fi

Q2


#!/bin/bash

# for each user created at Q1, copy in the home directory the files form /etc that the size is:
#       - for the 1st user, between 1000 and 2000 bytes
#       - for the 2nd user, between 2000 and 3000 bytes
#       - etc

file="./users.txt"
min_size=1000
max_size=2000

while read line; do
        user=$(echo "$line" | cut -d " " -f1)
        files_copied=0
        for file in $(sudo find /etc -type f -size +"$min_size"c -size -"$max_size"c); do
                cp $file /home/$user
                files_copied=$(($files_copied+1))
        done

        echo "$user: $files_copied files copied"
        min_size=$(($min_size+1000))
        max_size=$(($max_size+1000))
done < "$file"
  • J’ai d’abord dû résoudre mon problème de place avec LVM :
sudo lvresize -L +2G --resizefs /dev/mapper/ubuntu--vg-ubuntu--lv
  • Je vérifie que les home directories sont bien vides avant de lancer le script :
for user in $(cat users.txt | cat -d " " -f1); do echo "$user:"; ls -l /home/$user; done

Ubuntu Serveur

ubu/ubg.txt · Dernière modification : de 127.0.0.1