You are on page 1of 29

TP0:

echo "**TP0: Get command name & path & parent command**"

get_command_info(){

local command_name="$1"

local command_path="$(which $command_name)"

#or command_path="$(command -v "$command_name")"

if [ -n "$command_path" ]; then

echo "Command Name: $command_name"

echo "Command Path: $command_path"

#getting the parent process ID

parent_pid=$(ps -o ppid= -p $$ 2> /dev/null)

if [ -n "$parent_pid" ]; then

parent_name=$(ps -o comm= -p $parent_pid 2> /dev/null)

if [ -n "$parent_name" ]; then

echo "Parent Command Name: $parent_name"

parent_path="$(command -v "$parent_name")"

echo "Parent Command Path: $parent_path"

fi

fi

else

echo "Command '$command_name' not found"


Fi

read -p "Enter command name: " name

get_command_info "$name"

TP1:
while true

do

echo "**TP1: Gestion de modules**"

echo "1. Lister les modules actifs (lsmod) "

echo "2. Desactiver un module (rmmod)"

echo "3. Activer un module (insmod)"

echo "4. Lister des modules supprimés"

echo "5. quitter"

disabled_modules=()

read -p "Entrez votre choix: " choice

case $choice in

1) lsmod | while read -r line; do

module_name=$(echo $line | awk '{print $1}')

description=$(modinfo $module_name | grep -E "^description:" | awk -F ": "


'{print $2}')
#check if the module is not in the disabled_modules array

if ! [[ " ${disabled_modules[@]}" =~ " $module_name" ]]; then

echo "$module_name - $description"

fi

Done ;;

2) read -p "Entrez un module a desactiver: " module_name

sudo rmmod $module_name

disabled_modules+=("$module_name") ;;

3) if [ ${#disabled_modules[@]} -eq 0 ]; then

echo "Aucun module désactivés"

else

read -p "Entrez le nom du module a activer: " module_name

if [[ "${disabled_modules[@]}" =~ " $module_name " ]]; then

sudo insmod $module_name

disabled_modules=("${disabled_modules[@]/$module_name}")

else

echo "le module n'est pas dans la liste des modules desactivés"

fi

Fi ;;

4) echo "Modules désacctivés: "


for module in "{$disabled_modules[@]}"; do

echo "$module"

Done ;;

5) exit ;;

esac

done

TP2
while true

do

echo "**TP2: Administration arret & demarrage du système**"

echo "1: Lister Ies applications de demarrage et arret."

echo "2: Afficher le niveau d 'execution actuel."

echo "3: Runlevels"

echo "99: quitter"

echo "tapez votre choix "

read choix

case $choix in

1) init 0 ;;

2) r=$(who -r)

echo "le niveau d'execution actuel est $r " ;;


3) while true

do

echo "31: Afficher le niveau d'execution par defaut."

echo "32: Afficher dans l'ordre les apps d'arret du systeme. "

echo "33: Afficher toutes les applications arret & demarrage"

echo "39: Revenir au menu precedant."

echo "99: Quitter."

read -p "tapez votre choix: " choice

case $choice in

31) grep "id:.*:initdefault:" /etc/inittab ;;

32) ls -l /etc/rcd0.d/* | awk '{ printf ("%s\n", $5);}' ;;

33) ls -l /etc/init.d/* | awk '{ printf ("%s\n", $5);}' ;;

39) break ;;

99) exit ;;

esac

Done ;;

99) exit ;;

esac

Done
TP3
echo "**TP3:Time of startup and shutdown of system **"

echo "start time"

grep "systemd: Started" /var/log/system.log

echo "shutdown time"

grep "systemd: Stopping" /var/log/system.log

TP4
echo "**TP4: process admin**"

while true

do

echo "Veuillez entrer votre choix :"

echo "1- Lister tous les processus."

echo "2- Lister les process par utilisateur triés par PID (PID, NomProcess, PPID)"

echo "3- Afficher le PID du processus de login de chacun des utilisateurs


connectés"

echo "4- Déconnecter un utilisateur"

echo "5- Lister les processus fils d'un processus donné (PID, NOM)"

echo "6- Lister les processus parents d'un processus donné (PID, NOM)"

echo "7- exit"


read choix;

case $choix in

1) ps -ef | awk '{printf("%d\t%s\n", $2,$8)}' ;;

2) u=$(whoami)

ps -ef | grep -w "^$u" | awk '{printf("%d\t%s\t%d\n", $2,$8,$3)}' | sort –n ;;

3) who | awk '{print $1, $6}' | sort -k2 | uniq | while read user tty;

Do

pid=$(ps -u $user | grep " $tty" | head -1 | awk '{print $1}')

echo "User: $user, TTY: $tty, PID du processus de login: $pid"

Done ;;

4) #kill current user

u=$(whoami)

f=$(ps -ef | grep -w "^$u" | awk '{printf("%d\t%s\t%d\n", $2, $8, $3)}' | awk
'{print $1}' | head -1)

kill -9 $f

#pkill -p -i $u ;;

5)

echo "Donner le num du process"

read process

ps --ppid $process -o pid,comm ;;


6) echo "Enter the process ID:"

read pid

parent_pid=$(ps -o ppid= -p $pid)

if [ -n "$parent_pid" ]; then

parent_name=$(ps -o comm= -p $parent_pid)

echo "Parent PID: $parent_pid, Parent Name: $parent_name"

else

echo "Process with PID $pid not found or has no parent."

Fi ;;

7) Exit ;;

esac

Done

TP5
echo "**TP5: Admin tool**"

while true

do

echo "1- Gestion des modules"

echo "2- Arret & Demarrage du systeme"

echo "3- Gestion des processus"

echo "999- Quitter"


read -p "Donner votre choix: " choice

case $choice in

1) echo "Gestion des modules"

while true

do

echo "11- Lister les modules actifs"

echo "12- Desactiver un module"

echo "13- Activer un module"

echo "14- Lister les modules supprimes"

echo "19- Revenir au menu precedent"

echo "999- Quitter"

disabled_modules=()

read -p "Tapez votre choix: " choice

case $choice in

11) lsmod | while read -r line; do

module_name=$(echo $line | awk '{print $1}')

description=$(modinfo $module_name | grep -E "^description:" | awk -F ": "


'{print $2}')

#check if the module is not in the disabled_modules array

if ! [[ " ${disabled_modules[@]}" =~ " $module_name" ]]; then


echo "$module_name - $description"

fi

Done ;;

12) read -p "Donnez le module a desactiver: " mod

sudo modprobe -r $mod ;;

13) read -p "Donnez le module a activer: " mod

sudo modprobe $mod

;;

14) echo "Modules désacctivés: "

for module in "{$disabled_modules[@]}"; do

echo "$module"

Done ;;

19) break ;;

999) exit ;;

esac

Done ;;

2) echo "Arret & Demarrage du systeme"

while true

do

echo "21- Arret du systeme"


echo "22- Afficher le niveau d'execution actuel"

echo "23- Runlevels"

echo "29- Revenir au menu precedent"

echo "999- Quitter"

read -p "Tapez votre choix: " choice

case $choice in

21) sudo init 0 ;;

22) r=$(who -r)

echo "Le niveau d'execution actuel est $r" ;;

23) while true

do

echo "231- Afficher le niveau d'execution par default"

echo "232- Afficher les applications qui entraine l'arret du systeme"

echo "233- Afficher toutes les applications arret & demarrage"

echo "239- Revenir au menu precedent"

echo "999- Quitter"

read -p "Tapez votre choix: " choice

case $choice in

231) grep "id:.*:initdefault:" /etc/inittab ;;

232) ls /etc/rc0.d \ | nl ;;
233) ls -l /etc/init.d/* \ | sed -n -e 's/^.*\///p' ;;

239) break ;;

999) exit ;;

Esac

Done ;;

29) break ;;

999) exit ;;

esac

Done ;;

3) echo "Gestion des processus"

while true

do

echo "31- Lister tous les processus"

echo "32- Lister les processus par utilisateur tries par PID (PID, Nom Process,
PPID)"

echo "33- Afficher le PID du processus de login de chacun des utilisateurs


connectes"

echo "34- Deconnecter un utilisateur"

echo "35- Lister les processus fils d'un processus donne (PID, Nom)"

echo "36- Lister les processus parents d'un processus donne (PID, Nom)"
echo "37- Gerer un processus"

echo "39- Revenir au menu precedent"

echo "999- Quitter"

read -p "Donner votre choix: " choice

case $choice in

31) ps -ef | awk '{printf("%s\t%s\n", $2, $8);}' ;;

32) u=$(whoami)

ps -ef | grep -w "^$u" | awk '{printf("%d\t%s\t%d\n", $2,$8,$3)}' ;;

33) ps -o uid,pid | head -1

users=$(ps -e -o uid= | sort -n | uniq)

for user in $users

do

ps -u $user -o uid,pid --no-headers | head -1

Done ;;

34) echo

read -p "Donner l'utilisateur: " user

if [[ -z "$user" ]]

then

user=$(whoami)

fi
pkill -p -i $user ;;

35) echo "Enter the process ID:"

read pid

parent_pid=$(ps -o ppid= -p $pid)

if [ -n "$parent_pid" ]; then

parent_name=$(ps -o comm= -p $parent_pid)

echo "Parent PID: $parent_pid, Parent Name: $parent_name"

else

echo "Process with PID $pid not found or has no parent."

Fi ;;

36) echo

read -p "Donner le PID du processus: " pid

if [[ -z "$pid" ]]

then

pid=$$

fi

ps -p $pid -o pid,cmd

pid=$(ps -p $pid -o ppid=)

while [ $pid -gt 0 ]

do
ps -p $pid -o pid,cmd --no-headers

pid=$(ps -p $pid -o ppid=)

Done ;;

37) echo

read -p "Donner le PID du processus: " pid

echo

echo "1- kill"

echo "2- stop"

echo "3- continue"

echo

read -p "Donner votre choix: " op

case $op in

1) op="SIGKILL" ;;

2) op="SIGSTOP" ;;

3) op="SIGCONT" ;;

esac

kill -s $op $pid ;;

39) break ;;

999) exit ;;

esac
Done ;;

999) exit ;;

esac

Done

TP6:
echo "**TP6: Net Admin **"

while true; do

echo "1. Lister les interfaces reseaux"

echo "2. Afficher l @ IP"

echo "3. Afficher l @ PHY"

echo "4. Changer l @ IP"

echo "5. Lister les ports et les services"

echo "6. Desactiver un port"

echo "7. Activer un port"

echo "8. Installer/ desinstaller un service (vsftpd,telnet,httpd,nfs-utils)"

echo "9. Troubleshoooting /tester une @ IP (ping)"

echo "10. Trouver l'@ IP d'une url (nslookup)"

echo "11. Transferer un fichier (FTP: file transfer protocol)"


echo "12. Se connecter sur une machine distante (telnet)"

echo "13. Quitter"

read -p "donner un choix: " choix

case $choix in

1) ifconfig -s | awk '{if (NR>1) print $1}' ;;

2) ip -o -4 addr show | awk '{print $2, $4}' ;;

3) for interface in $(ip link show | awk -F: '/^[0-9]+:/ {print $2}'); do

phy_address=$(ethtool -P $interface | awk '{print $3}')

echo "$phy_address - $interface"

done ;;

4) read -p "Choisir une interface: " interface

while true; do

read -p "Entrez la nouvelle @ IP: " addr

pattern="(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])"

addr_pattern="^(${pattern}\.){3}${pattern}(\/(3[0-2]|[12][0-9]|[0-9]))?$"

if [[ ! "$addr" =~ $addr_pattern ]]; then

echo "adresse ip invalide"

continue

fi
sudo ifconfig “$interface” “$addr”

break

done ;;

5) cat /etc/services | awk '{print $1, $2}' ;;

6) read -p "donner le nom du port a désactiver: " port

sudo sed -i "\,^[^#]*[[:space:]]${port}\(/\|[[:space:]]\|\$\), s,.,#&,"


/etc/services ;;

7) read -p "donner le nom du port a activer: " port

sudo sed -i "\,^\([[:space:]]*#\)*[^#]*[[:space:]]${port}\(/\|[[:space:]]\|\$\),


s,\([[:space:]]*#\)*,," /etc/services ;;

8) read -p "Enter the name of the service (vsftpd, telnet, httpd, nfs-utils): "
service_name

read -p "Do you want to install (install) or uninstall (uninstall) the service? "
action

if [ "$action" == "install" ]; then

sudo dnf install -y $service_name

elif [ "$action" == "uninstall" ]; then

sudo dnf remove --allowerasing -y $service_name

else

echo "Unrecognized action. Use 'install' or 'uninstall'."

fi ;;
9) while true; do

read -p "Entrez la nouvelle @ IP: " addr

pattern="(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])"

addr_pattern="^(${pattern}\.){3}${pattern}(\/(3[0-2]|[12][0-9]|[0-9]))?$"

if [[ ! "$addr" =~ $addr_pattern ]]; then

echo "adresse ip invalide"

continue

fi

ping $addr

break

done ;;

10) read -p "Donner l'url que vous cherchez l'@ IP: " URL

nslookup $URL ;;

11) read -p "Donner l'url du serveur ftp: " url

read -p "Donner le port 21: " port

if [[ -z "$port" ]]; then

port=21

fi

read -p "Donner le nom d'utilisateur ($USER): " username

if [[ -z "$username" ]]; then


username=$USER

fi

read -s -p "Donner le mot de passe: " password

read -p "Donner le nom du fichier locale: " local_file

read -p "Donner le nom du fichier distant (fichier remote): " remote_file

if [[ -z "$remote_file" ]]; then

remote_file=$local_file

Fi

open $url $port

user $username $password

put $local_file $remote_file" | ftp -n ;;

12) read -p "Donner le port 23: " port

if [[ -z "$port" ]]; then

port=23

fi

echo "donner url: "

read url

telnet $url $port ;;

13) exit ;;

Esac Done
TP7
echo "application secadmin"

while true; do

echo "1-Lister les fichiers SUID"

echo "2-Lister les fichiers GUID"

echo "3-Lister les répertoires Sticky"

echo "4-Lancer un sniffer (TCPDUMP)"

echo "5-Gérer un firewall (IPTables)"

echo "6-Check SUID"

echo "7-Check GUID"

echo "8-Check Sticky bit"

echo "99-Exit"

read -p "Choix: " choix

case $choix in

1) sudo find / -perm -4000 -type f -exec ls -l {} \; 2>/dev/null ;;

2) sudo find / -perm -2000 -type f -exec ls -l {} \; 2>/dev/null ;;

3) sudo find / -perm -1000 -type d -exec ls -ld {} \; 2>/dev/null ;;

4) read -p "Choisir une interface: " interface

sudo tcpdump -i $interface ;;


5) sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

sudo iptables -A INPUT -j DROP ;;

6) echo "Path:"

read path

found=0

for file in $(find "$path" -perm /4000 2>/dev/null); do

(cat ./suidfiles | grep "$file") > /dev/null

if (( $?!=0 )); then

echo "$file: New file"

found=1

fi

done

if (( $found==0 )); then

else

echo "New files were detected."

fi ;;

7)

echo "Checking GUID files..."

echo "Path:"

read path
found=0

for file in $(find "$path" -perm -2000 -type f 2>/dev/null); do

(cat ./guidfiles | grep "$file") > /dev/null

if (( $?!=0 )); then

echo "$file: New file"

found=1

fi

done

if (( $found==0 )); then

echo "No new files. You are safe"

else

echo "New files were detected."

fi ;;

8) echo "Checking Sticky bit directories..."

echo "Path:"

read path

found=0

for dir in $(find "$path" -perm -1000 -type d 2>/dev/null); do

(cat ./stickyfiles | grep "$dir") > /dev/null

if (( $?!=0 )); then


echo "$dir: New directory"

found=1

fi

done

if (( $found==0 )); then

echo "No new directories. You are safe"

else

echo "New directories were detected."

Fi ;;

99) Exit ;;

*) echo "Choix invalide";;

esac

Done

TP8
echo "**TP8: save admin**"

while true;

do

echo "1- Lister les fichiers les plus volumineux"

echo "2- Save/Restore avec tar"


echo "3- Save/Restore avec dd"

echo "4- Save/Restore avec cpio"

echo "5- Save/Restore avec dump/restore"

read -p "Donner votre choix: " choice

case $choice in

1) read -p "Donner un dossier (.): " dir

if [[ -z "$dir" ]]

then

dir=.

fi

find "$dir" -type f -exec wc -c {} \; 2> /dev/null \

| sort -r -n \

| head –5 ;;

2) echo "1- Save"

echo "2- Restore"

read -p "Donner votre choix (1): " choice

if [[ -z "$choice" ]]

then

choice=1

fi
case $choice in

21) read -p "Le dossier a sauvegarder: " input

read -p "Le chemin de sauvegarde: " output

cd "$input"

input=$(pwd)

cd - > /dev/null

tar -cvf "$output" "$input" ;;

22) read -p "Le chemin de sauvegarde: " input

if [[ ! "$input" = /* ]]

then

input="$(pwd)/$input"

Fi

cd /

tar -xvf "$input"

cd - > /dev/null ;;

Esac ;;

3) echo "1- Save"

echo "2- Restore"

echo

read -p "Donner votre choix (1): " choice


if [[ -z "$choice" ]]

then

choice=1

fi

case $choice in

1) read -p "Le dossier a sauvegarder: " input

read -p "Le chemin de sauvegarde: " output

cd "$input"

input=$(pwd)

cd - > /dev/null

find "$input" -type d -exec mkdir -p "$output{}" \;

find "$input" -type f -exec dd if="{}" of="$output{}" \;

;;

2) read -p "Le chemin de sauvegarde: " input

cd "$input

find . -type d -exec mkdir -p "/{}" \;

find . -type f -exec dd if="{}" of="/{}" \;

cd - > /dev/null ;;

Esac ;;

4)echo "1- Save"


echo "2- Restore"

read -p "Donner votre choix (1): " choice

if [[ -z "$choice" ]]

then

choice=1

fi

case $choice in

41) read -p "Le dossier a sauvegarder: " input

read -p "Le chemin de sauvegarde: " output

cd "$input"

input=$(pwd)

cd - > /dev/null

find "$input" | cpio -o > "$output" ;;

42) read -p "Le chemin de sauvegarde: " input

cd /

cpio -iu < "$input"

cd - > /dev/null ;;

Esac ;;

5) echo "1- Save"

echo "2- Restore"


read -p "Donner votre choix (1): " choice

if [[ -z "$choice" ]]

then

choice=1

fi

case $choice in

51) read -p "Le dossier a sauvegarder: " input

read -p "Le chemin de sauvegarde: " output

sudo dump -0f "$output" "$input" ;;

52) read -p "Le chemin de sauvegarde: " input

cd /

sudo restore -rf "$input"

cd - > /dev/null ;;

Esac ;;

9) exit;;

esac

done

You might also like