scr c de la merde

This commit is contained in:
2023-02-10 12:17:29 +01:00
parent d1f5da5d24
commit 8c8c4e163f
91 changed files with 5089 additions and 0 deletions

View File

View File

View File

@@ -0,0 +1,8 @@
#!/bin/bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
[[ $1 == "add" ]] || exit 0
[[ $2 ]] || exit 1
exec depmod -a "$2"

View File

@@ -0,0 +1,12 @@
#!/bin/sh
case $1 in
add)
mkinitcpio -k "$2" -g "$3"/initrd
;;
remove)
rm -f -- "$3"/initrd
;;
esac
# vim: set ft=sh ts=4 sw=4 et:

View File

@@ -0,0 +1,89 @@
#!/bin/bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
COMMAND="$1"
KERNEL_VERSION="$2"
BOOT_DIR_ABS="$3"
KERNEL_IMAGE="$4"
if [[ -f /etc/machine-id ]]; then
read MACHINE_ID < /etc/machine-id
fi
if ! [[ $MACHINE_ID ]]; then
exit 1
fi
BOOT_DIR="/$MACHINE_ID/$KERNEL_VERSION"
LOADER_ENTRY="/boot/loader/entries/$MACHINE_ID-$KERNEL_VERSION.conf"
if [[ $COMMAND == remove ]]; then
exec rm -f "$LOADER_ENTRY"
fi
if ! [[ $COMMAND == add ]]; then
exit 1
fi
if ! [[ $KERNEL_IMAGE ]]; then
exit 1
fi
if [[ -f /etc/os-release ]]; then
. /etc/os-release
elif [[ -f /usr/lib/os-release ]]; then
. /usr/lib/os-release
fi
if ! [[ $PRETTY_NAME ]]; then
PRETTY_NAME="Linux $KERNEL_VERSION"
fi
declare -a BOOT_OPTIONS
if [[ -f /etc/kernel/cmdline ]]; then
readarray -t BOOT_OPTIONS < /etc/kernel/cmdline
fi
if ! [[ ${BOOT_OPTIONS[*]} ]]; then
readarray -t line < /proc/cmdline
for i in ${line[*]}; do
if [[ "${i#initrd=*}" == "$i" ]]; then
BOOT_OPTIONS[${#BOOT_OPTIONS[@]}]="$i"
fi
done
fi
if ! [[ ${BOOT_OPTIONS[*]} ]]; then
echo "Could not determine the kernel command line parameters." >&2
echo "Please specify the kernel command line in /etc/kernel/cmdline!" >&2
exit 1
fi
cp "$KERNEL_IMAGE" "$BOOT_DIR_ABS/linux" &&
chown root:root "$BOOT_DIR_ABS/linux" &&
chmod 0644 "$BOOT_DIR_ABS/linux" || {
echo "Could not copy '$KERNEL_IMAGE to '$BOOT_DIR_ABS/linux'." >&2
exit 1
}
mkdir -p "${LOADER_ENTRY%/*}" || {
echo "Could not create loader entry directory '${LOADER_ENTRY%/*}'." >&2
exit 1
}
{
echo "title $PRETTY_NAME"
echo "version $KERNEL_VERSION"
echo "machine-id $MACHINE_ID"
echo "options ${BOOT_OPTIONS[*]}"
echo "linux $BOOT_DIR/linux"
[[ -f $BOOT_DIR_ABS/initrd ]] && \
echo "initrd $BOOT_DIR/initrd"
:
} > "$LOADER_ENTRY" || {
echo "Could not create loader entry '$LOADER_ENTRY'." >&2
exit 1
}
exit 0

View File

@@ -0,0 +1,48 @@
#!/bin/bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
[[ $1 == "add" ]] || exit 0
[[ $2 ]] || exit 1
exec depmod -a "$2"
#!/bin/bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
[[ $1 == "add" ]] || exit 0
[[ $2 ]] || exit 1
exec depmod -a "$2"
#!/bin/bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
[[ $1 == "add" ]] || exit 0
[[ $2 ]] || exit 1
exec depmod -a "$2"
#!/bin/bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
[[ $1 == "add" ]] || exit 0
[[ $2 ]] || exit 1
exec depmod -a "$2"
#!/bin/bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
[[ $1 == "add" ]] || exit 0
[[ $2 ]] || exit 1
exec depmod -a "$2"
#!/bin/bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
[[ $1 == "add" ]] || exit 0
[[ $2 ]] || exit 1
exec depmod -a "$2"

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

View File

@@ -0,0 +1,16 @@
#!/bin/bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
[[ $1 == "add" ]] || exit 0
[[ $2 ]] || exit 1
exec depmod -a "$2"
#!/bin/bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
[[ $1 == "add" ]] || exit 0
[[ $2 ]] || exit 1
exec depmod -a "$2"

View File

@@ -0,0 +1,24 @@
#!/bin/bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
[[ $1 == "add" ]] || exit 0
[[ $2 ]] || exit 1
exec depmod -a "$2"
#!/bin/bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
[[ $1 == "add" ]] || exit 0
[[ $2 ]] || exit 1
exec depmod -a "$2"
#!/bin/bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
[[ $1 == "add" ]] || exit 0
[[ $2 ]] || exit 1
exec depmod -a "$2"

151
SCR.1.2/corection/TaF Normal file
View File

@@ -0,0 +1,151 @@
------------------------ INSTRUCTIONS A LIRE JUSQU'AU BOUT -------------------
Cher lecteur, si vous etes en train de me lire par vim ou par un autre
editeur de texte, je vous demanderai de sortir de l'editeur de texte et
de m'ouvrir simplement par la commande less qui fait peser moins de risque
sur moi et sur vous.
Avec less, on avance/recule avec les fleches haut/bas et on avance/recule
page par page par CTRL-V/CTRL-B
----------------------------------------------------------------------------
On rendra l'archive <login>-scr.1.2-1.tar contenant le fichier reponses et
le script <login>-utf8tocode.sh, qui fait l'objet d'un exercice.
A la fin de l'epreuve se reporter au fichier README pour, en particulier,
appliquer correctement la commande d'archivage.
-----------------------------------------------------------------------------
--------------------------------------------------------------------------
/Nom/Prenom/nom_machine/ est-il place au debut du fichier
reponses ?
Preceder chaque reponse par le numero de la question traitee. Ce n'est
pas la longueur de la reponse qui compte mais sa pertinence.
----------------------------------------------------------------------------
------------------------------------------------------------------------------
TOUTES LES QUESTIONS DOIVENT ETRE TRAITEES SANS BOUGER
DU REPERTOIRE DE BASE.
---------------------------------------------------------------------------
1/
Consulter la page manuel de ls pour savoir comment afficher les dates de
derniere modification comme dans :
2022-11-16 15:49:40.036307437 +0100
puis, a l'aide de ls uniquement, donner la ligne de
commandes permettant d'afficher le contenu de toute l'arborescence qui
commence en TR/ en donnant pour chaque element, entre autres, la date de
derniere modification au format indique ci-dessus.
La ligne de commandes ls demandee doit etre non composee, c'est a dire,
sans les symboles ; , | , ||, &&, ...
Placer la ligne de commandes dans le fichier reponses.
Inutile de recopier le resultat de la ligne de commandes.
-------------------------------------------------------------------------------
2/
SANS BOUGER DU REPERTOIRE DE BASE, a l'aide uniquement d'une seule ligne de
commandes ls et sans descendre dans les repertoires dont le nom correspond au motif,
afficher la liste de tous les elements de TR/lib/krb5/ et de TR/lib/kernel/
dont le nom contient deux chiffres qui se suivent formant un nombre de valeur
comprise entre 54 et 67 inclus.
La ligne de commandes ls demandee doit etre non composee, c'est a dire,
sans les symboles ; , | , ||, &&, ...
On doit utiliser les notations standards pour les classes
de caracteres : [:upper:], [:lower:], ...
Les motifs proposes devront fonctionner dans n'importe quel repertoire
ou on chercherait les memes configurations dans les noms des entrees
(fichiers/repertoires) qu'il contient.
Placer la ligne de commandes dans le fichier reponses.
Inutile de recopier le resultat de la ligne de commandes.
----------------------------------------------------------------------------------
3/
SANS BOUGER DU REPERTOIRE DE BASE et a l'aide uniquement d'une seule ligne de
commandes find, sans utiliser xargs et sans aucun pipeline :
afficher la liste de tous les elements de l'arborescence qui commence en TR/
qui se trouvent a une profondeur au moins 6 et dont la date de derniere modification
est posterieure a (plus recente que) celle du fichier inout.dev
Placer la ligne de commandes dans le fichier reponses.
Inutile de recopier le resultat de la ligne de commandes.
-----------------------------------------------------------------------------------
4/
SANS BOUGER DU REPERTOIRE DE BASE et a l'aide uniquement d'une seule ligne de
commandes find, sans utiliser xargs et sans aucun pipeline :
Creer un repertoire NEW dans chaque repertoire se trouvant a une profondeur exactement 8
de l'arborescence qui commence en TR/
Placer la ligne de commandes dans le fichier reponses.
Inutile de recopier le resultat de la ligne de commandes.
---------------------------------------------------------------------------------------
5/
SANS BOUGER DU REPERTOIRE DE BASE et a l'aide uniquement d'une seule ligne de
commandes find, sans utiliser xargs et sans aucun pipeline :
Dans chaque repertoire contenant des fichiers reguliers se trouvant
a une profondeur exactement de 8 de l'arborescence qui commence en TR/
creer une archive appelee archive.tar de ces fichiers-la.
Placer la ligne de commandes dans le fichier reponses.
Inutile de recopier le resultat de la ligne de commandes.
---------------------------------------------------------------------------
6/
On veut ecrire un script <login>-utf8tocode.sh qui prend deux arguments
a la ligne de commandes. Le deuxieme argument est le nom d'un fichier contenant
des encodages UTF-8, un par ligne. Le script affiche en hexadecimal, pour chaque
encodage dans le fichier, la valeur du point de code correspondant. Le premier
argument est un indicateur soumis par l'utilisateur sous la forme 1 ou 2, ou 2
signifie que le point code doit etre prefixe par la notation U+, et 1 signifie
qu'il n'y a aucun prefixe a ajouter lors de l'affichage.
Ecrire le script <login>-utf8tocode.sh en gerant toutes les erreurs
sur les parametres a la ligne de commandes.
-----------------------------------------------------------------------
PLACER NOM/PRENOM/NOM_MACHINE en commentaire VERS LE DEBUT DU script.
----------------------------------------------------------------------
Le fichier utf8.dat est fourni pour faire des tests rapidement.
ATTENTION : Le script ne doit pas etre adapte au contenu de utf8.dat.
On suppose que tous les encodages UTF-8 dans le fichier source sont corrects.
On pourra utiliser la commande printf du shell qui utilise les formats
d'affichage comme le fait printf du C.
$ ./utf8tocode.sh
Usage: ./utf8tocode.sh <display_format> <SCR_FILE>
$ ./utf8tocode.sh 1 mimi.dat
File mimi.dat doesn't exist or is not regular
$ ./utf8tocode.sh 3 utf8.dat
Unknown display format. Please submit 1 if no prefix, 2 for prefix U+
$ ./utf8tocode.sh 1 utf8.dat
4b5
9f74
5b
12bd7c
$ ./utf8tocode.sh 2 utf8.dat
U+4b5
U+9f74
U+5b
U+12bd7c
----------------------------- C'EST FINI -----------------------------------
-----------------------------------------------------------------------------

View File

@@ -0,0 +1,60 @@
Taf
ex 1:
ls -R --full-time TR/
ls -lR --time-style=full-iso TR/
ex 2:
ls -d TR/lib/host/*5[4-9]* TR/lib/krb5/*[6][0-4]* TR/lib/kernel/*5[4-9]* TR/lib/kernel/*[6][0-7]*
ex 3:
find TR/ -name "inout.dev" -> TR/lib/krb5/plugin/inout.dev
find TR/ -mindepth 6 -newer TR/lib/krb5/plugins/inout.dev
ex 4:
find TR/ -mindepth 8 -maxdepth 8 -type d -exec mkdir '{}'/NEW \;
ex 5:
find TR/ -mindepth 8 -maxdepth -type f -execdir tar cvf archive.tar '{}'
ex 6:
#!/bin/bash
if [[ $# -lt 2 ]]
then
echo "Usage: $0 <display.format> <SRC_FILE>"
exit
fi
if [[ ! -f $2 ]]
then
echo "File $2 doesnt exist or is not regular."
exit
fi
if [[ $1 != "1" && $1 != "2"]]
then
echo "Uknown display format. Please submit 1 if no prefix, 2 for prefix"
exit
fi
Cf [[ $1 == "2"]]
then
pref = "U+"
fi
while read adde
do
l=$(expr legnth $addr)
p=$(expr index $addr "Q")
count=$(expr substr $addr $((p+1)) $((8-p)))
p=11
while [[ $p - lt $l ]]
do
cont=$count $(expr $substr $addr $p 6)
p=$((p+2))
done
printf "$pef%x\n" $count
done <$2

Binary file not shown.

View File

@@ -0,0 +1,4 @@
1101001010110101
111010011011110110110100
01011011
11110100101010111011010110111100