Commit b10879398daef21e02a107c0faf1e2c25d76c9fd
1 parent
3e470988
Ajout commandes
Showing
14 changed files
with
92 additions
and
43 deletions
Show diff stats
baleine.sh
... | ... | @@ -7,8 +7,9 @@ |
7 | 7 | #script qui va traiter ces cas, on garde les fichiers courts mais simples |
8 | 8 | |
9 | 9 | |
10 | -export PATH_BALEINE=/var/lib/baleine | |
11 | -export PATH_MANIFEST=$PATH_BALEINE/manifest | |
10 | +export PATH_BALEINE="/var/lib/baleine" | |
11 | +export PATH_MANIFEST="$PATH_BALEINE/manifest" | |
12 | + | |
12 | 13 | |
13 | 14 | if [ $# -lt 1 ]; then |
14 | 15 | printf "Baleine est un outil simple de gestion de conteneur.\n" |
... | ... | @@ -16,7 +17,7 @@ if [ $# -lt 1 ]; then |
16 | 17 | printf "\t \t baleine <commande> [arguments]\n" |
17 | 18 | printf "Les commandes sont :\n \n" |
18 | 19 | printf "\t \t %-10s %-10s \n" "container" "Lance ou stoppe un contenneur." |
19 | - printf "\t \t %-10s %-10s \n" "network" "Créée ou supprime des interfaces réseau." | |
20 | + printf "\t \t %-10s %-10s \n" "bridge" "Créée ou supprime des commutateurs linux virtuels." | |
20 | 21 | printf "\t \t %-10s %-10s \n \n" "image" "Créer ou supprime des images de contenneurs." |
21 | 22 | printf "Utilisez baleine <commande> help pour plus d'informations à propos d'une commande.\n" |
22 | 23 | fi |
... | ... | @@ -28,9 +29,6 @@ case "$1" in |
28 | 29 | #autrement dit, ./baleine.sh container create apellera le script container.sh avec les arguments $1=container et $2=create |
29 | 30 | bash container.sh "$@" |
30 | 31 | ;; |
31 | - "network") | |
32 | - bash network.sh "$@" | |
33 | - ;; | |
34 | 32 | "image") |
35 | 33 | bash image.sh "$@" |
36 | 34 | ;; |
... | ... | @@ -40,4 +38,7 @@ case "$1" in |
40 | 38 | "help") |
41 | 39 | bash help.sh "$@" |
42 | 40 | ;; |
41 | + "test") | |
42 | + bash test.sh "$@" | |
43 | + ;; | |
43 | 44 | esac |
44 | 45 | \ No newline at end of file | ... | ... |
container.sh
create_bridge.sh
1 | 1 | #!/bin/bash |
2 | 2 | NOM_BRIDGE=$3; |
3 | 3 | ADDR_IPV4=$4; |
4 | -REPERTOIRE=${PWD} | |
4 | + | |
5 | 5 | |
6 | 6 | |
7 | 7 | #condition sur le nbre d'arguments |
... | ... | @@ -14,12 +14,12 @@ ip link add $NOM_BRIDGE type bridge |
14 | 14 | ip a add dev $NOM_BRIDGE $ADDR_IPV4 |
15 | 15 | ip link set $NOM_BRIDGE down |
16 | 16 | ip link set $NOM_BRIDGE up |
17 | - | |
18 | -touch $NOM_BRIDGE.manifest # On crée un fichier contenant les infos du bridge | |
19 | -echo "$NOM_BRIDGE" >> $NOM_BRIDGE.manifest #nom du bridge | |
17 | +FILE= $NOM_BRIDGE.manifest | |
18 | +touch FILE # On crée un fichier contenant les infos du bridge | |
19 | +echo "$NOM_BRIDGE" >> FILE #nom du bridge | |
20 | 20 | |
21 | 21 | #condition de bordure pour le dossier Bridges |
22 | -if [[ ! -d "$REPERTOIRE/baleine/Bridges" ]]; then | |
23 | - mkdir -p $REPERTOIRE/baleine/Bridges && mv $NOM_BRIDGE.manifest $REPERTOIRE/baleine/Bridges | |
22 | +if [[ ! -d "$PATH_MANIFEST/bridges" ]]; then | |
23 | + mkdir -p $PATH_MANIFEST/bridges #&& mv FILE $PATH_MANIFEST/bridges | |
24 | 24 | fi |
25 | -mv $NOM_BRIDGE.manifest $REPERTOIRE/baleine/Bridges | |
26 | 25 | \ No newline at end of file |
26 | +mv FILE $PATH_MANIFEST/bridges | |
27 | 27 | \ No newline at end of file | ... | ... |
create_container.sh
... | ... | @@ -13,7 +13,7 @@ PROGRAM=$7; |
13 | 13 | |
14 | 14 | |
15 | 15 | #On veut récupérer le chemin de l'image |
16 | -PATH_IMAGE= grep chemin $PATH_MANIFEST/$NOM_IMAGE.manifest | cut -d':' -f2 | |
16 | +PATH_IMAGE= grep chemin $PATH_MANIFEST/images/$NOM_IMAGE.manifest | cut -d':' -f2 | |
17 | 17 | |
18 | 18 | #on fait une copie dans /var/BaleineImages pour mount depuis le conteneur |
19 | 19 | if [[ ! -d "$PATH_BALEINE/containers/$NOM_CONTAINER" ]]; then |
... | ... | @@ -48,6 +48,15 @@ echo "nom_image:$NOM_IMAGE" >> $FILE #nom de son image |
48 | 48 | echo "pid:$PID" >> $FILE #Son PID |
49 | 49 | echo "nom_bridge:$NOM_BRIDGE" >> $FILE #SON BRIDGE |
50 | 50 | |
51 | +#temps d'exécution du container ? | |
52 | +# start_time=`date +%s` | |
53 | +# <command-to-execute> | |
54 | +# end_time=`date +%s` | |
55 | +# echo execution time was `expr $end_time - $start_time` s. | |
56 | +# ou | |
57 | +#start_time=`date +%s` | |
58 | +#<command-to-execute> && echo run time is $(expr `date +%s` - $start_time) s | |
59 | + | |
51 | 60 | if [[ ! -d "$PATH_MANIFEST/containers" ]]; then |
52 | 61 | mkdir -p $PATH_MANIFEST/containers |
53 | 62 | fi | ... | ... |
create_image.sh
1 | 1 | #!/bin/bash |
2 | -#TOUT MARCHE BIEN ICI | |
3 | 2 | |
4 | 3 | NOM_IMAGE=$3; # L'utilisateur devra spécifier le nom de l'image |
5 | 4 | SIZE=$4; #L'utilisateur devra spécifier la taille du disque qu'il souhaite allouer |
... | ... | @@ -15,12 +14,12 @@ if [ "$SIZE" -lt 0 ] || [ "$SIZE" -gt 10240 ] || [ -z $SIZE ]; then #vérifie qu |
15 | 14 | $SIZE=10240 |
16 | 15 | fi |
17 | 16 | |
18 | -mkdir -p /usr/lib/baleine/images | |
17 | +mkdir -p $PATH_BALEINE/images | |
19 | 18 | |
20 | 19 | #condition pour le répertoire |
21 | 20 | if [[ -z $REPERTOIRE ]]; then #si l'utilisateur oublie de donner le path on utilise celui-ci par défaut |
22 | 21 | echo "Il n'y pas eu d'argements donnés pour répertoire, je fais moi même le chemin" |
23 | - REPERTOIRE=/var/lib/baleine/images | |
22 | + REPERTOIRE=$PATH_BALEINE/images | |
24 | 23 | fi |
25 | 24 | |
26 | 25 | #vérification que l'utilisateur donne bien un nom à l'image |
... | ... | @@ -28,29 +27,32 @@ if [[ -z "$NOM_IMAGE" ]]; then |
28 | 27 | echo "Il faut donner le nom de l'image ! Relancez la commande avec les bons arguments." |
29 | 28 | exit |
30 | 29 | fi |
31 | -#génération de nombres aléatoires afin de créer à chaque fois un fichier avec un nombre unique (éviter qu'un soit écraser) | |
32 | -NUMBER=$(cat /dev/urandom | tr -dc '0-9' | fold -w 256 | head -n 1 | sed -e 's/^0*//' | head --bytes 3) | |
33 | -if [ "$NUMBER" == "" ]; then | |
34 | - NUMBER=0 | |
35 | -fi | |
36 | -echo $REPERTOIRE | |
30 | +# #génération de nombres aléatoires afin de créer à chaque fois un fichier avec un nombre unique (éviter qu'un soit écraser) | |
31 | +# NUMBER=$(cat /dev/urandom | tr -dc '0-9' | fold -w 256 | head -n 1 | sed -e 's/^0*//' | head --bytes 3) | |
32 | +# if [ "$NUMBER" == "" ]; then | |
33 | +# NUMBER=0 | |
34 | +# fi | |
35 | +echo "Le repertoire est $REPERTOIRE" | |
37 | 36 | #Crée image |
37 | +FILE=$NOM_IMAGE.manifest | |
38 | 38 | echo "Je vais commencer à allouer !" |
39 | 39 | dd if=/dev/zero of=$REPERTOIRE/$NOM_IMAGE bs=1024k count=$SIZE |
40 | -touch $NOM_IMAGE.$NUMBER.manifest | |
41 | -echo "$NOM_IMAGE" >> $NOM_IMAGE.$NUMBER.manifest #nom de l'image | |
42 | -echo "$SIZE">> $NOM_IMAGE.$NUMBER.manifest #taille de l'image | |
43 | -echo "$REPERTOIRE/$NOM_IMAGE">> $NOM_IMAGE.$NUMBER.manifest #son chemin | |
40 | +touch FILE | |
41 | +echo "nom image:$NOM_IMAGE" >> FILE #nom de l'image | |
42 | +echo "taille:$SIZE">> FILE #taille de l'image | |
43 | +echo "chemin:$REPERTOIRE">> FILE #son chemin | |
44 | + | |
45 | + | |
44 | 46 | |
45 | -if [[ ! -d "$REPERTOIRE/baleine/Images" ]]; then | |
46 | - mkdir -p $REPERTOIRE/baleine/Images && mv $NOM_IMAGE.$NUMBER.manifest $REPERTOIRE/baleine/Images | |
47 | +if [[ ! -d "$PATH_MANIFEST/images" ]]; then | |
48 | + mkdir -p $PATH_MANIFEST/images #&& mv $NOM_IMAGE.$NUMBER.manifest $REPERTOIRE/images | |
47 | 49 | fi |
48 | -mv $NOM_IMAGE.$NUMBER.manifest $REPERTOIRE/baleine/Images | |
50 | +mv $NOM_IMAGE.manifest $PATH_MANIFEST/images | |
49 | 51 | |
50 | 52 | |
51 | 53 | |
52 | 54 | #création du système de fichiers au format "ext4" |
53 | -mkfs.ext4 $REPERTOIRE/$NOM_IMAGE | |
55 | +mkfs.ext4 $REPERTOIRE/images/$NOM_IMAGE | |
54 | 56 | |
55 | 57 | |
56 | 58 | |
... | ... | @@ -59,7 +61,7 @@ export http_proxy=http://proxy.polytech-lille.fr:3128 |
59 | 61 | |
60 | 62 | #Création de l'arborescence Debian avec debootstrap |
61 | 63 | echo "Je vais faire le debootstrap" |
62 | -debootstrap --include=apache2,vim,nano stable /mnt/$NOM_IMAGE | |
64 | +debootstrap --include=apache2,vim,nano stable /mnt/baleine/$NOM_IMAGE | |
63 | 65 | |
64 | 66 | #On renseigne le fichier fstab du conteneur |
65 | 67 | echo "proc /proc proc defaults 0 0" >> /mnt/$NOM_IMAGE/etc/fstab |
66 | 68 | \ No newline at end of file | ... | ... |
list_bridges.sh
list_container.sh
list_images.sh
remove_bridge.sh
1 | 1 | #!/bin/bash |
2 | 2 | NOM_BRIDGE_TO_REMOVE=$3; |
3 | -REPERTOIRE=${PWD} | |
3 | + | |
4 | 4 | |
5 | 5 | #vérification que l'utilisateur donne bien un nom à l'image |
6 | 6 | if [[ -z "$NOM_BRIDGE_TO_REMOVE" ]]; then |
7 | 7 | echo "Il faut donner le nom du bridge à supprimer ! Relancez la commande avec les bons arguments." |
8 | 8 | exit |
9 | 9 | fi |
10 | -chmod -R 755 $REPERTOIRE/baleine | |
11 | -rm $REPERTOIRE/baleine/Bridges/$NOM_BRIDGE_TO_REMOVE.* | |
10 | +chmod -R 755 $PATH_MANIFEST | |
11 | +rm $PATH_MANIFEST/bridges/$NOM_BRIDGE_TO_REMOVE.* | |
12 | 12 | ip link delete $NOM_BRIDGE_TO_REMOVE type bridge |
13 | -delbr | |
13 | +#delbr | ... | ... |
... | ... | @@ -0,0 +1,13 @@ |
1 | +#!/bin/bash | |
2 | +NOM_CONTAINER_TO_REMOVE=$3; | |
3 | + | |
4 | +#vérification que l'utilisateur donne bien un nom à l'CONTAINER | |
5 | +if [[ -z "$NOM_CONTAINER_TO_REMOVE" ]]; then | |
6 | + echo "Il faut donner le nom du conteneur! Relancez la commande avec les bons arguments." | |
7 | + exit | |
8 | +fi | |
9 | +chmod -R 755 $PATH_MANIFEST | |
10 | +rm $PATH_MANIFEST/containers/$NOM_CONTAINER_TO_REMOVE.manifest | |
11 | +rm $PATH_BALEINE/containers/$NOM_CONTAINER_TO_REMOVE | |
12 | + | |
13 | +#il doit remove aussi l'image, les manifessts les bridges supprime la copie? | ... | ... |
remove_image.sh
1 | 1 | #!/bin/bash |
2 | 2 | NOM_IMAGE_TO_REMOVE=$3; |
3 | -REPERTOIRE=${PWD} | |
4 | 3 | |
5 | 4 | #vérification que l'utilisateur donne bien un nom à l'image |
6 | 5 | if [[ -z "$NOM_IMAGE_TO_REMOVE" ]]; then |
7 | 6 | echo "Il faut donner le nom de l'image ! Relancez la commande avec les bons arguments." |
8 | 7 | exit |
9 | 8 | fi |
10 | -chmod -R 755 $REPERTOIRE/baleine | |
11 | -rm $REPERTOIRE/baleine/Images/$NOM_IMAGE_TO_REMOVE.manifest | |
12 | -rm $REPERTOIRE/$NOM_IMAGE_TO_REMOVE | |
13 | 9 | \ No newline at end of file |
10 | +chmod -R 755 $PATH_MANIFEST | |
11 | +rm $PATH_MANIFEST/images/$NOM_IMAGE_TO_REMOVE.manifest | |
12 | +rm $PATH_BALEINE/images/$NOM_IMAGE_TO_REMOVE | |
14 | 13 | \ No newline at end of file | ... | ... |
... | ... | @@ -0,0 +1,10 @@ |
1 | +#!/bin/bash | |
2 | +NOM_CONTAINER=$3; | |
3 | +NOM_IMAGE=$4; | |
4 | + | |
5 | +mount -t ext4 -o loop $PATH_BALEINE/containers/$NOM_CONTAINER/$NOM_IMAGE /mnt/baleine/$NOM_CONTAINER | |
6 | + | |
7 | +nohup unshare -p -f -m -n -u chroot /mnt/baleine/$NOM_CONTAINER $PROGRAM -c "mount /proc" & | |
8 | +PID=$! | |
9 | + | |
10 | +ps axo ppid,pid | grep "^ *$PID" | sed -e 's/.* //' | ... | ... |