Test Système Semestre 2 partie B

Transcription

Test Système Semestre 2 partie B
Test Système Semestre 2
1 sur 3
file:///C:/D_PCML/TDSysteme/2009-2010/2010_S2B_Test.htm
Test Système Semestre 2 partie B
(22 mai 2010 – durée conseillée : 1h)
© M. Laporte
[email protected]
I.U.T.d'Aix en Provence - Département Informatique
Créé le 19/05/2010 - Dernière mise à jour : le 19/05/2010
Tout document autorisé. Les exercices sont totalement indépendants.
Sommaire
1)
2)
3)
4)
5)
-
Services TCP
3 Lignes d'un fichier
Type d'un fichier
Supression de fichiers de sauvegardes
Tri d'un fichier
1) - Service TCP
Le fichier /etc/services d'un système Unixlike se présente sous la forme :
smtp
time
time
rlp
nameserver
whois
tacacs
25/tcp
37/tcp
37/udp
39/udp
42/tcp
43/tcp
49/tcp
mail
timserver
timserver
resource
name
nicname
# resource location
# IEN 116
# Login Host Protocol (TACACS)
la première colonne (smtp, time, ...) contient les noms des services ;
la deuxième colonne (25/tcp, 37/tcp, ...) contient le numéro de port (25, 37, ...) suivi du type de service
(tcp, udp, ..) séparés par un / ;
la troisième colonne (mail, timeserver, ...) contient des alias du nom de service ;
puis, à partir du #, c'est un commentaire pour expliquer le service.
Ecrire une commande qui n'affiche que les noms et numéros de port de tous les services tcp du système
UNIXlike sur lequel on se trouve.
2) - 3 lignes d'un fichier
La question 10 de l'exercie 3 du TP 5 demande d'écrire la commande qui affiche les lignes 5, 6 et 7 du fichier
des_lignes.txt. Le corrigé fourni est :
tail -n +5 des_lignes.txt | head -n 3
Donner 2 autres corrigés possibles.
06/04/2011 14:34
Test Système Semestre 2
2 sur 3
file:///C:/D_PCML/TDSysteme/2009-2010/2010_S2B_Test.htm
3) - Type d'un fichier
L'exercice 3 du TP 8 demande d'écrire un script ftype.bash qui prend un argument et qui renvoie comme code de
retour :
1 si l’argument est un fichier ordinaire ;
2 si c’est un répertoire ;
3 si c’est un fichier spécial ;
0 dans tous les autres cas (fichier inexistant ou inaccessible, nombre d’arguments différent de 1).
Le corrigé fourni en est :
#!/bin/bash
# Script : ftype.bash
if (($# != 1)); then
exit 0
fi
if [ -e "$1" ]; then
if [ -f "$1" ]; then
exit 1
elif [ -d "$1" ]; then
exit 2
else
exit 3
fi
else
exit 0
fi
Récrire le même script, mais sans utiliser la commande if.
4) - Supression de fichiers de sauvegardes
Ecrire le script rmsav.bash qui détruit récursivement (avec demande de confirmation) tous les fichiers de la
forme .nnn.swx (nnn représente une suite quelconque de caractères et x est un caractère alphabétique, exemple
.nom.swp), à partir du répertoire passé en argument de la commande .
On vérifiera qu'il n'y a bien qu'un seul argument à la commande et que celui-ci correspond bien à un nom de
répertoire. Avant de détruire un fichier, on vérifiera également que le fichier, correspondant à ce fichier de
sauvegarde à supprimer, existe bien (dans notre exemple le fichier nom). Si ce n'est pas le cas, on n'effectue pas la
suppression.
Indications
On écrira la fonction récursive rmrec (son paramètre est un nom de répertoire) qui :
sauvegarde le répertoire courant ;
se place sur le répertoire passé en paramètre ;
détruit, s'il y a lieu, les fichiers de sauvegardes ;
fait la même chose sur tous les répertoire contenus dans le répertoire courant ;
retourne sur le répertoire sauvegardé.
On s'arrangera pour que les changements de répertoire soient muets.
06/04/2011 14:34
Test Système Semestre 2
3 sur 3
file:///C:/D_PCML/TDSysteme/2009-2010/2010_S2B_Test.htm
5) - Tri d'un fichier
L'exercice 10 du TP 8 demande d'écrire un script tri.bash qui trie ses arguments et les écrit dans l’ordre
croissant. Pour cela, il sera bien plus confortable de stocker les arguments dans un tableau que l’on triera. Ce script
admet l’option -n qui demande de traiter les arguments comme des entiers et non comme des chaînes. Il n’est pas
demandé de vérifier dans ce cas que les arguments sont bien des entiers.
Le corrigé vous est fourni plus bas.
Modifier le (#TODO) pour qu'il ne trie plus les arguments de la commande, mais les valeurs lues au clavier
(jusqu'à fin du fichier clavier).
Le fichier qui contient ce nouveau script s'appelle tri.bash, écrire la commande qui permet de trier le fichier
a_trier qui contient des nombres, à l'aide de tri.bash.
Fichier tri.bash à modifier :
#!/bin/bash
# Script : tri.bash
comparaison="<"
if (($# != 0)) && [ "$1" == -n ]; then
comparaison="-lt"
shift
fi
# il est plus simple de passer par un tableau...
#tab=("$@")
# qu’on va trier (on évite de le recréer) par un tri classique
# par selection.
#TODO
for ((i = 0; i < ${#tab[*]} - 1; i++))
do
indmin=$i
for ((j = i+1; j < ${#tab[*]}; j++))
do
if [ "${tab[j]}" $comparaison "${tab[indmin]}" ]; then
indmin=$j
fi
done
# permutation élément i et indmin
tmp="${tab[i]}"
tab[i]="${tab[indmin]}"
tab[indmin]="$tmp"
done
echo "${tab[@]}" # remarque : écrit une ligne vide si aucun élément à trier...
06/04/2011 14:34

Documents pareils