ubu:ubf
Table des matières
Exercices Chapitre 6
1. Log
Le fichier dmesg.log contient un log des messages système d’une machine Linux. Le champ entre [ ] indique le temps en secondes depuis le démarrage du système. Par exemple [ 2.878733] signifie 2 secondes 878,733 ms.
- On vous demande de filtrer ce fichier au moyen d’un script afin de ne montrer que les lignes qui contiennent le mot eth0 et qui aient été enregistrées à moins de X sec du démarrage. X sera demandé en début de script.
- Votre script devra être commenté !
#!/bin/bash
# shows the lines containing 'eth0' between the start of the machine and the number of seconds entered as parameter
grep eth0 dmesg.log | while IFS= read -r line; do
seconds="$(sed 's/^\[ *\([0-9]*\)\..*$/\1/' <<< "$line")"
[ $seconds -gt $1 ] && break || echo $line
done
exit
2. Créations des users, setgid
Créer un script qui réalisera les opérations suivantes :
- Création d’un groupe students
- Création d’un groupe profs
- Création d’un répertoire students au dossier /home.
- Les membres du groupe students auront un accès en RW à ce dossier.
- Les autres utilisateurs n’auront aucun accès.
- Les fichiers/dossiers créés dans ce dossier appartiendront automatiquement au groupe students.
- Création d’un répertoire profs au dossier /home.
- Les membres du groupe profs auront un accès en RW à ce dossier. Les autres utilisateurs n’auront aucun accès.
- Les fichiers/dossiers créés dans ce dossier appartiendront automatiquement au groupe profs.
- Création des utilisateurs listés dans le fichier users.txt (premier champ) appartenant au groupe listé dans le fichier users.txt (second champ)
- Ajout du mot de passe listé dans le fichier users.txt (troisième champ) aux utilisateurs précédemment créés.
- Votre script devra être commenté !
#!/bin/bash
set -eu # if one of the commands have an non 0 return the script stops
file='/home/sivananda/ex-ch6/users.txt'
groups=$(cat "$file" | cut -d " " -f2 | sort -u)
for group in $groups
do
echo "création du groupe $group"
groupadd "$group"
echo "création du répertoire /home/$group"
mkdir "/home/$group"
chgrp "$group" "/home/$group"
chmod 2770 "/home/$group"
users=$(cat "$file" | grep "$group" | cut -d " " -f1)
for user in $users
do
echo "création de l'utilisateur utilisateur $user dans le groupe $group"
password=$(cat "$file" | grep "$user" | cut -d " " -f3)
newpassword="$user:$password"
useradd "$user" -U -G "$group" -s /bin/bash
echo "$newpassword" | chpasswd
done
done
SUPPRESSION DES UTILISATEURS
#!/bin/bash
set -e # if one of the commands have an non 0 return the script stops
file='/home/sivananda/ex-ch6/users.txt'
groups=$(cat "$file" | cut -d " " -f2 | sort -u)
for group in $groups
do
echo "suppression du répertoire /home/$group"
rmdir "/home/$group"
users=$(cat "$file" | grep "$group" | cut -d " " -f1)
for user in $users
do
echo "suppression de l'utilisateur utilisateur $user"
userdel "$user"
done
echo "suppression du groupe $group"
groupdel "$group"
done
3. Gestion des Users
Créer un script qui réalisera les opérations suivantes :
- Affichage du nom des utilisateurs qui ne se sont plus logués depuis 1 semaine
- Archivage dans le dossier /home du dossier personnel des utilisateurs qui ne se sont plus logués depuis 1 semaine (au format .tar.gz).
- Votre script devra être commenté !
sudo timedatectl set-ntp false sudo date --set "Jan 1 11:57:03 UTC 2019" ssh olduser3@127.0.0.1 exit sudo timedatectl set-ntp true
#!/bin/bash
set -eu
users=$(cat /etc/passwd | cut -d : -f1)
for user in $users
do
lst=$(last $user | head -1)
lst=${lst:43:12}
if [ -n "$lst" ]; then
echo "$user: $lst"
fi
done
- Archivage :
https://www.tldp.org/LDP/abs/html/filearchiv.html
–after-date only process files with a date stamp after specified date
-z gzip the archive
tar -zcf archive-name.tar.gz directory-name
Where,
- -z : Compress archive using gzip program in Linux or Unix
- -c : Create archive on Linux
- -f : Archive File name
- Désarchiver :
tar -zxf old-directory.tar.gz
- -x: Extract files from given archive
- Extraire dans un directory en particulier :
tar -zxf old-directory.tar.gz -C /tmp
https://www.cyberciti.biz/faq/how-do-i-compress-a-whole-linux-or-unix-directory/
ubu/ubf.txt · Dernière modification : de 127.0.0.1
