Commit 5721892d64e335fdfdb80eabea5ceedcc5170042

Authored by hmalti
1 parent 5cf93464

Avancées

baleine.sh 100755 → 100644
@@ -27,18 +27,18 @@ case "$1" in @@ -27,18 +27,18 @@ case "$1" in
27 #Si on a apelé ./baleine.sh container create par exemple, on va apeller le script container.sh qui va traiter les 27 #Si on a apelé ./baleine.sh container create par exemple, on va apeller le script container.sh qui va traiter les
28 #opérations sur les containers, et $@ permet de lui passer tous les arguments qu'on a passé à baleine.sh 28 #opérations sur les containers, et $@ permet de lui passer tous les arguments qu'on a passé à baleine.sh
29 #autrement dit, ./baleine.sh container create apellera le script container.sh avec les arguments $1=container et $2=create 29 #autrement dit, ./baleine.sh container create apellera le script container.sh avec les arguments $1=container et $2=create
30 - bash container.sh "$@" 30 + bash container.sh "${@:2}"
31 ;; 31 ;;
32 "image") 32 "image")
33 bash image.sh "${@:2}" 33 bash image.sh "${@:2}"
34 ;; 34 ;;
35 "bridge") 35 "bridge")
36 - bash bridge.sh "$@" 36 + bash bridge.sh "${@:2}"
37 ;; 37 ;;
38 "help") 38 "help")
39 - bash help.sh "$@" 39 + bash help.sh
40 ;; 40 ;;
41 "test") 41 "test")
42 - bash test.sh "$@" 42 + bash test.sh "${@:2}"
43 ;; 43 ;;
44 esac 44 esac
45 \ No newline at end of file 45 \ No newline at end of file
1 #!/bin/bash 1 #!/bin/bash
2 2
3 -case $2 in 3 +case $1 in
4 4
5 "create") 5 "create")
6 #Si on veut creer un bridge (qu'on a apellé le script ./balaine.sh bridge create) 6 #Si on veut creer un bridge (qu'on a apellé le script ./balaine.sh bridge create)
7 - bash create_bridge.sh "$@" 7 + bash create_bridge.sh "${@:2}"
8 ;; 8 ;;
9 "list") 9 "list")
10 #Si on veut lister les bridges (qu'on a apellé le script ./balaine.sh bridge list) 10 #Si on veut lister les bridges (qu'on a apellé le script ./balaine.sh bridge list)
11 - bash list_bridges.sh "$@" 11 + bash list_bridges.sh "${@:2}"
12 ;; 12 ;;
13 "remove") 13 "remove")
14 - bash remove_bridge.sh "$@" 14 + bash remove_bridge.sh "${@:2}"
15 ;; 15 ;;
16 "up") 16 "up")
17 - bash up_bridge.sh "$@" 17 + bash up_bridge.sh "${@:2}"
18 ;; 18 ;;
19 "down") 19 "down")
20 - bash down_bridge.sh "$@" 20 + bash down_bridge.sh "${@:2}"
21 esac 21 esac
22 \ No newline at end of file 22 \ No newline at end of file
1 #!/bin/bash 1 #!/bin/bash
2 2
3 -case $2 in 3 +case $1 in
4 4
5 "create") 5 "create")
6 #Si on veut creer un container (qu'on a apellé le script ./baleine.sh container create) 6 #Si on veut creer un container (qu'on a apellé le script ./baleine.sh container create)
7 - bash create_container.sh "$@" 7 + bash create_container.sh "${@:2}"
8 ;; 8 ;;
9 "list") 9 "list")
10 #Si on veut lister les containers qui tournent (qu'on a apellé le script ./baleine.sh container list) 10 #Si on veut lister les containers qui tournent (qu'on a apellé le script ./baleine.sh container list)
11 - bash list_container.sh "$@" 11 + bash list_container.sh "${@:2}"
12 ;; 12 ;;
13 "stop") 13 "stop")
14 - bash stop_container.sh "$@" 14 + bash stop_container.sh "${@:2}"
15 ;; 15 ;;
16 "remove") 16 "remove")
17 - bash remove_container.sh "$@" 17 + bash remove_container.sh "${@:2}"
18 ;; 18 ;;
19 "restart") 19 "restart")
20 - bash restart_container.sh "$@" 20 + bash restart_container.sh "${@:2}"
21 ;; 21 ;;
22 "exec") 22 "exec")
23 - bash exec_container.sh "$@" 23 + bash exec_container.sh "${@:2}"
24 ;; 24 ;;
25 25
26 esac 26 esac
27 \ No newline at end of file 27 \ No newline at end of file
1 #!/bin/bash 1 #!/bin/bash
2 -NOM_BRIDGE=$3;  
3 -ADDR_IPV4=$4;  
4 - 2 +while getopts b:a: o; do
  3 + case $o in
  4 + (b) NOM_BRIDGE=$OPTARG;;
  5 + (a) ADDR_IPV4=$OPTARG;;
  6 +
  7 + esac
  8 +done
5 9
6 10
7 #condition sur le nbre d'arguments 11 #condition sur le nbre d'arguments
@@ -11,15 +15,20 @@ if [[ -z "$NOM_BRIDGE" ]]; then @@ -11,15 +15,20 @@ if [[ -z "$NOM_BRIDGE" ]]; then
11 fi 15 fi
12 #création du bridge 16 #création du bridge
13 ip link add $NOM_BRIDGE type bridge 17 ip link add $NOM_BRIDGE type bridge
  18 +
  19 +#attribution d'une adresse ip au bridge
14 ip a add dev $NOM_BRIDGE $ADDR_IPV4 20 ip a add dev $NOM_BRIDGE $ADDR_IPV4
  21 +
  22 +#demarrage du bridge
15 ip link set $NOM_BRIDGE down 23 ip link set $NOM_BRIDGE down
16 ip link set $NOM_BRIDGE up 24 ip link set $NOM_BRIDGE up
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 25 +
  26 +MANIFEST=$NOM_BRIDGE.manifest
  27 +echo "nom_bridge:$NOM_BRIDGE" >> $MANIFEST #nom du bridge
20 28
21 #condition de bordure pour le dossier Bridges 29 #condition de bordure pour le dossier Bridges
22 if [[ ! -d "$PATH_MANIFEST/bridges" ]]; then 30 if [[ ! -d "$PATH_MANIFEST/bridges" ]]; then
23 mkdir -p $PATH_MANIFEST/bridges #&& mv FILE $PATH_MANIFEST/bridges 31 mkdir -p $PATH_MANIFEST/bridges #&& mv FILE $PATH_MANIFEST/bridges
24 fi 32 fi
25 -mv FILE $PATH_MANIFEST/bridges  
26 \ No newline at end of file 33 \ No newline at end of file
  34 +
  35 +mv $MANIFEST $PATH_MANIFEST/bridges
27 \ No newline at end of file 36 \ No newline at end of file
create_container.sh
1 #!/bin/bash 1 #!/bin/bash
2 -set -x 2 +
  3 +set -x
3 while getopts i:c:b:r:a:p: o; do 4 while getopts i:c:b:r:a:p: o; do
4 case $o in 5 case $o in
5 (i) NOM_IMAGE=$OPTARG;; 6 (i) NOM_IMAGE=$OPTARG;;
@@ -8,43 +9,56 @@ while getopts i:c:b:r:a:p: o; do @@ -8,43 +9,56 @@ while getopts i:c:b:r:a:p: o; do
8 (r) REPERTOIRE=$OPTARG;; 9 (r) REPERTOIRE=$OPTARG;;
9 (a) ADDRS_IPV4=$OPTARG;; 10 (a) ADDRS_IPV4=$OPTARG;;
10 (p) PROGRAM=$OPTARG;; 11 (p) PROGRAM=$OPTARG;;
11 -  
12 esac 12 esac
13 done 13 done
14 14
  15 +echo "Creation du container $NOM_CONTAINER basé sur l'image $NOM_IMAGE lancant le programme $PROGRAM connecté au(x) bridge(s) $BRIDGES avec les adresses $ADDRS_IPV4"
  16 +#/usr/local/apache2/bin
  17 +
15 #Check existence image, bridge 18 #Check existence image, bridge
16 -if [[ -z "$PATH_MANIFEST/images/$NOM_IMAGE.manifest" ]] || [ -z $NOM_IMAGE ]]; then 19 +if [ -z "$PATH_MANIFEST/images/$NOM_IMAGE.manifest" ] || [ -z $NOM_IMAGE ]; then
17 echo "Image non existante." 20 echo "Image non existante."
18 exit 21 exit
19 fi 22 fi
20 23
21 -if [[ ! -z $NOM_BRIDGE ]] [[ -z "$PATH_MANIFEST/bridges/$NOM_BRIDGE.manifest" ]]; then 24 +if [ ! -z $NOM_BRIDGE ] || [ -z "$PATH_MANIFEST/bridges/$NOM_BRIDGE.manifest" ]; then
22 echo "Bridge non existant." 25 echo "Bridge non existant."
23 exit 26 exit
24 fi 27 fi
25 28
26 #On veut récupérer le chemin de l'image 29 #On veut récupérer le chemin de l'image
27 -PATH_IMAGE= ${grep chemin $PATH_MANIFEST/images/$NOM_IMAGE.manifest | cut -d':' -f2} 30 +PATH_IMAGE="$(grep chemin $PATH_MANIFEST/images/$NOM_IMAGE.manifest | cut -d':' -f2)"
28 31
  32 +echo "PATH_IMAGE: $PATH_IMAGE"
29 #on fait une copie dans /var/baleine/images pour mount depuis le conteneur 33 #on fait une copie dans /var/baleine/images pour mount depuis le conteneur
30 if [[ ! -d "$PATH_BALEINE/containers/$NOM_CONTAINER" ]]; then 34 if [[ ! -d "$PATH_BALEINE/containers/$NOM_CONTAINER" ]]; then
31 mkdir -p $PATH_BALEINE/containers/$NOM_CONTAINER 35 mkdir -p $PATH_BALEINE/containers/$NOM_CONTAINER
32 fi 36 fi
33 37
34 -cp $PATH_IMAGE $PATH_BALEINE/containers/$NOM_CONTAINER/$NOM_IMAGE 38 +
  39 +#Copie de l'image physique dans le container
  40 +cp -r $PATH_IMAGE/$NOM_IMAGE $PATH_BALEINE/containers/$NOM_CONTAINER/$NOM_IMAGE
35 41
36 42
  43 +#création du du dossier de montage de l'image du container
  44 +
  45 +if [[ ! -d "/mnt/baleine/$NOM_CONTAINER" ]]; then
  46 + mkdir -p /mnt/baleine/$NOM_CONTAINER
  47 +fi
37 48
38 #on monte le système de fichiers 49 #on monte le système de fichiers
39 echo "Montage de l'image" 50 echo "Montage de l'image"
40 mount -t ext4 -o loop $PATH_BALEINE/containers/$NOM_CONTAINER/$NOM_IMAGE /mnt/baleine/$NOM_CONTAINER 51 mount -t ext4 -o loop $PATH_BALEINE/containers/$NOM_CONTAINER/$NOM_IMAGE /mnt/baleine/$NOM_CONTAINER
41 52
42 #On renseigne le fichier fstab du conteneur 53 #On renseigne le fichier fstab du conteneur
43 -echo "proc /proc proc defaults 0 0" >> /mnt/$NOM_IMAGE/etc/fstab  
44 -echo "$PROGRAM" >> /mnt/$NOM_IMAGE/etc/rc.local 54 +echo "proc /proc proc defaults 0 0" >> /mnt/baleine/$NOM_CONTAINER/etc/fstab
  55 +echo "$PROGRAM" >> /mnt/baleine/$NOM_CONTAINER/etc/rc.local
45 56
46 #On fait le unshare sur l'image passée en paramètre, 57 #On fait le unshare sur l'image passée en paramètre,
47 -nohup unshare -p -f -m -n -u chroot /mnt/baleine/$NOM_CONTAINER $PROGRAM -c "mount /proc" & 58 +#nohup unshare -p -f -m -n -u chroot /mnt/baleine/$NOM_CONTAINER "/bin/bash" -c "mount /proc" &
  59 +
  60 +
  61 +
48 PID=$! 62 PID=$!
49 echo "j'ai finis le unshare-nohup" 63 echo "j'ai finis le unshare-nohup"
50 64
@@ -57,7 +71,7 @@ date=${date} @@ -57,7 +71,7 @@ date=${date}
57 71
58 echo "nom_container:$NOM_CONTAINER" >> $FILE #nom de son image 72 echo "nom_container:$NOM_CONTAINER" >> $FILE #nom de son image
59 echo "nom_image:$NOM_IMAGE" >> $FILE #nom de son image 73 echo "nom_image:$NOM_IMAGE" >> $FILE #nom de son image
60 -echo "pid:$PID" >> $FILE #Son PID 74 +echo "pid:$PID" >> $FILE #Son PID
61 echo "nom_bridge:$NOM_BRIDGE" >> $FILE #SON BRIDGE 75 echo "nom_bridge:$NOM_BRIDGE" >> $FILE #SON BRIDGE
62 echo "starting_time: $date" >> $FILE #starting time 76 echo "starting_time: $date" >> $FILE #starting time
63 77
@@ -74,21 +88,24 @@ mv $NOM_CONTAINER.manifest $PATH_MANIFEST/containers/$NOM_CONTAINER.manifest @@ -74,21 +88,24 @@ mv $NOM_CONTAINER.manifest $PATH_MANIFEST/containers/$NOM_CONTAINER.manifest
74 #AWK pour récupèrer le nombre d'addresses IPV4 données en arguments 88 #AWK pour récupèrer le nombre d'addresses IPV4 données en arguments
75 #(https://unix.stackexchange.com/questions/144217/counting-comma-separated-characters-in-a-row) 89 #(https://unix.stackexchange.com/questions/144217/counting-comma-separated-characters-in-a-row)
76 90
77 -NOMBRE_INTERFACES=echo $ADDRS_IPV4 | awk -F '[,]' '{print NF}' 91 +NOMBRE_INTERFACES="$(echo $ADDRS_IPV4 | awk -F '[,]' '{print NF}')"
78 92
79 -NOMBRE_BRIDGES=echo $BRIDGES | awk -F '[,]' '{print NF}' 93 +NOMBRE_BRIDGES="$(echo $BRIDGES | awk -F '[,]' '{print NF}')"
80 94
81 -if [ NOMBRE_INTERFACES -ne NOMBRE_BRIDGES ]; do 95 +if [ $NOMBRE_INTERFACES -ne $NOMBRE_BRIDGES ]; then
82 echo "Erreur: Il n'y a pas autant de bridges que d'interfaces réseaux" 96 echo "Erreur: Il n'y a pas autant de bridges que d'interfaces réseaux"
83 exit 1 97 exit 1
84 -done 98 +fi
85 99
86 for i in $(seq 1 $NOMBRE_INTERFACES); do 100 for i in $(seq 1 $NOMBRE_INTERFACES); do
87 - ip link add $NOM_CONTAINER_$i type veth peer name eth$i 101 + echo "Nom de l'interface : $NOM_CONTAINER$i"
  102 + ip link add $NOM_CONTAINER$i type veth peer name eth$i
88 done 103 done
89 104
90 echo "J'ai fini de créer les interfaces chef" 105 echo "J'ai fini de créer les interfaces chef"
91 -NOMBRE_BRIDGES=echo $BRIDGES | awk -F '[,]' '{print NF}' 106 +
  107 +#Compte le nombre de bridges présents
  108 +NOMBRE_BRIDGES=$(echo $BRIDGES | awk -F '[,]' '{print NF}')
92 109
93 IFS="," 110 IFS=","
94 111
@@ -103,13 +120,21 @@ for a in $ADDRS_IPV4; do @@ -103,13 +120,21 @@ for a in $ADDRS_IPV4; do
103 ARRAY_IPV4+=(a) 120 ARRAY_IPV4+=(a)
104 done 121 done
105 122
106 -for (( i=0 ; i < ${#ARRAY_BRIDGES[*]} ; i++ )); do  
107 - ip link set $NOM_CONTAINER_$i master ${ARRAY_BRIDGES[i]}  
108 -done 123 +for (( i=0 ; i < ${#ARRAY_IPV4[*]} ; i++ )); do
  124 + #Creation de la veth
  125 + #ip link add dev $NOM_CONTAINER$i type veth peer name eth$i@$NOM_CONTAINER$i
  126 + ip link add dev vif1 type veth peer name eth0@vif1
  127 + #Ajout d'une des extrémités de la veth dans le namespace du container
  128 + #ip link set eth$i@$NOM_CONTAINER$i netns proc/$PID/ns/net name eth$i
  129 + ip link set eth0@vif1 netns proc/$PID/ns/net name eth0
  130 + #Attribution de l'adresse ip à l'interface du container
  131 + #ip netns exec proc/$PID/ns/net ip addr add ${ARRAY_IPV4[i]} dev eth$i
  132 + ip netns exec proc/$PID/ns/net ip addr add ${ARRAY_IPV4[i]} dev eth0
  133 + ip netns exec proc/$PID/ns/net ip link set dev eth0 down
  134 + ip netns exec proc/$PID/ns/net ip link set dev eth0 up
109 135
110 -#création de son interface réseau 136 +done
111 137
112 -ip link set $NOM_CONTAINER master $NOM_BRIDGE  
113 -ip link set $NOM_CONTAINER up  
114 -ip link set eth0@$NOM_CONTAINER netns /proc/$PID/ns/net name eth0  
115 -ip netns exec /proc/$PID/ns/net ip addr add $ADDR_IPV4 dev eth0 138 +for (( i=0 ; i < ${#ARRAY_BRIDGES[*]} ; i++ )); do
  139 + ip link set $NOM_CONTAINER$i master ${ARRAY_BRIDGES[i]}
  140 +done
116 \ No newline at end of file 141 \ No newline at end of file
1 -#!/bin/bash 1 + #!/bin/bash
2 2
3 3
4 while getopts i:s:r: o; do 4 while getopts i:s:r: o; do
@@ -15,7 +15,7 @@ if [ &quot;$SIZE&quot; == &quot;&quot; ] || [ &quot;$SIZE&quot; -lt 0 ] || [ &quot;$SIZE&quot; -gt 10240 ]; then @@ -15,7 +15,7 @@ if [ &quot;$SIZE&quot; == &quot;&quot; ] || [ &quot;$SIZE&quot; -lt 0 ] || [ &quot;$SIZE&quot; -gt 10240 ]; then
15 SIZE=10240 15 SIZE=10240
16 fi 16 fi
17 17
18 -echo "La size est de $SIZE" 18 +echo "Le size est de $SIZE"
19 mkdir -p $PATH_BALEINE/images 19 mkdir -p $PATH_BALEINE/images
20 20
21 if [[ -z $REPERTOIRE ]]; then 21 if [[ -z $REPERTOIRE ]]; then
@@ -33,9 +33,7 @@ MANIFEST=$NOM_IMAGE.manifest @@ -33,9 +33,7 @@ MANIFEST=$NOM_IMAGE.manifest
33 33
34 dd if=/dev/zero of=$REPERTOIRE/$NOM_IMAGE bs=1024k count=$SIZE 34 dd if=/dev/zero of=$REPERTOIRE/$NOM_IMAGE bs=1024k count=$SIZE
35 35
36 -touch $MANIFEST  
37 -  
38 -echo "nom image:$NOM_IMAGE" >> $MANIFEST 36 +echo "nom_image:$NOM_IMAGE" >> $MANIFEST
39 echo "taille:$SIZE">> $MANIFEST 37 echo "taille:$SIZE">> $MANIFEST
40 echo "chemin:$REPERTOIRE">> $MANIFEST 38 echo "chemin:$REPERTOIRE">> $MANIFEST
41 39
@@ -61,4 +59,8 @@ fi @@ -61,4 +59,8 @@ fi
61 59
62 #Création de l'arborescence Debian avec debootstrap 60 #Création de l'arborescence Debian avec debootstrap
63 echo "Je vais faire le debootstrap" 61 echo "Je vais faire le debootstrap"
64 -debootstrap --include=apache2,vim,nano stable /mnt/baleine/$NOM_IMAGE  
65 \ No newline at end of file 62 \ No newline at end of file
  63 +mkdir -p /mnt/baleine/$NOM_IMAGE
  64 +mount -t ext4 -o loop $REPERTOIRE/$NOM_IMAGE /mnt/baleine/$NOM_IMAGE
  65 +debootstrap --include=apache2,vim,nano stable /mnt/baleine/$NOM_IMAGE
  66 +umount /mnt/baleine/$NOM_IMAGE
  67 +rm -rf /mnt/baleine/$NOM_IMAGE
66 \ No newline at end of file 68 \ No newline at end of file
1 #!/bin/bash 1 #!/bin/bash
2 -NOM_BRIDGE=$3; 2 +while getopts b: o; do
  3 + case $o in
  4 + (b) NOM_BRIDGE=$OPTARG;;
  5 + esac
  6 +done
3 #vérification que l'utilisateur donne bien un nom à l'image 7 #vérification que l'utilisateur donne bien un nom à l'image
4 if [[ -z "$NOM_BRIDGE" ]]; then 8 if [[ -z "$NOM_BRIDGE" ]]; then
5 echo "Il faut donner le nom du bridge Relancez la commande avec les bons arguments." 9 echo "Il faut donner le nom du bridge Relancez la commande avec les bons arguments."
@@ -7,14 +7,14 @@ case $1 in @@ -7,14 +7,14 @@ case $1 in
7 ;; 7 ;;
8 "list") 8 "list")
9 #Si on veut lister les images (qu'on a apellé le script ./balaine.sh image list) 9 #Si on veut lister les images (qu'on a apellé le script ./balaine.sh image list)
10 - bash list_images.sh "$@" 10 + bash list_images.sh "${@:2}"
11 ;; 11 ;;
12 "import") 12 "import")
13 - bash import_container.sh "$@" 13 + bash import_container.sh "${@:2}"
14 ;; 14 ;;
15 "export") 15 "export")
16 - bash export_container.sh "$@" 16 + bash export_container.sh "${@:2}"
17 ;; 17 ;;
18 "remove") 18 "remove")
19 - bash remove_image.sh "$@" 19 + bash remove_image.sh "${@:2}"
20 esac 20 esac
21 \ No newline at end of file 21 \ No newline at end of file
1 #!/bin/bash 1 #!/bin/bash
2 -cd $PATH_MANIFEST/bridges  
3 -  
4 -for eachfile in ./*.manifest 2 +for eachfile in $PATH_MANIFEST/bridges/*.manifest
5 do 3 do
6 - echo $eachfile  
7 - val=$(cat "$eachfile")  
8 - echo $val  
9 -done  
10 \ No newline at end of file 4 \ No newline at end of file
  5 + NOM_BRIDGE=$(grep nom_bridge $eachfile | cut -d ':' -f2)
  6 + echo "----------------------"
  7 + brctl show $NOM_BRIDGE
  8 + echo "----------------------"
  9 +done
1 #!/bin/bash 1 #!/bin/bash
2 2
3 -cd $PATH_MANIFEST/images  
4 -  
5 -for eachfile in ./*.manifest 3 +for eachfile in $PATH_MANIFEST/images/*.manifest
6 do 4 do
7 - echo $eachfile  
8 - val=$(cat "$eachfile")  
9 - echo $val 5 + NOM_IMAGE=$(grep nom_image $eachfile | cut -d ':' -f2)
  6 + TAILLE=$(grep taille $eachfile | cut -d ':' -f2)
  7 + CHEMIN=$(grep chemin $eachfile | cut -d ':' -f2)
  8 + echo "----------------------"
  9 + echo "Nom image: $NOM_IMAGE"
  10 + echo "Taille: $TAILLE"
  11 + echo "Chemin: $CHEMIN"
  12 + echo "----------------------"
10 done 13 done
1 #!/bin/bash 1 #!/bin/bash
2 -NOM_BRIDGE_TO_REMOVE=$3;  
3 - 2 +NAME_BRIDGE_TO_REMOVE=$1;
4 3
5 #vérification que l'utilisateur donne bien un nom à l'image 4 #vérification que l'utilisateur donne bien un nom à l'image
6 -if [[ -z "$NOM_BRIDGE_TO_REMOVE" ]]; then 5 +if [[ -z "$NAME_BRIDGE_TO_REMOVE" ]]; then
7 echo "Il faut donner le nom du bridge à supprimer ! Relancez la commande avec les bons arguments." 6 echo "Il faut donner le nom du bridge à supprimer ! Relancez la commande avec les bons arguments."
8 exit 7 exit
9 fi 8 fi
10 -chmod -R 755 $PATH_MANIFEST  
11 -rm $PATH_MANIFEST/bridges/$NOM_BRIDGE_TO_REMOVE.*  
12 -ip link delete $NOM_BRIDGE_TO_REMOVE type bridge  
13 -#delbr 9 +
  10 +rm $PATH_MANIFEST/bridges/$NAME_BRIDGE_TO_REMOVE.manifest
  11 +ip link set $NAME_BRIDGE_TO_REMOVE down
  12 +brctl delbr $NAME_BRIDGE_TO_REMOVE
14 \ No newline at end of file 13 \ No newline at end of file
remove_container.sh
1 #!/bin/bash 1 #!/bin/bash
2 -NOM_CONTAINER_TO_REMOVE=$3; 2 +NAME_CONTAINER_TO_REMOVE=$1;
3 3
4 #vérification que l'utilisateur donne bien un nom à l'CONTAINER 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." 5 +if [[ -z "$NAME_CONTAINER_TO_REMOVE" ]]; then
  6 + echo "Il faut donner le NAME du conteneur! Relancez la commande avec les bons arguments."
7 exit 7 exit
8 fi 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 9 +rm -rf $PATH_MANIFEST/containers/$NAME_CONTAINER_TO_REMOVE.manifest
  10 +rm -rf $PATH_BALEINE/containers/$NAME_CONTAINER_TO_REMOVE
12 11
13 -#il doit remove aussi l'image, les manifessts les bridges supprime la copie? 12 +#umount /mnt/container
  13 +umount /mnt/baleine/$NAME_CONTAINER_TO_REMOVE
  14 +#supprime mnt/container
  15 +rm -rf /mnt/baleine/$NAME_CONTAINER_TO_REMOVE
  16 +#supprime l'image associé au container (manifest du container)
  17 +rm -rf /var/lib/baleine/containers/$NAME_CONTAINER_TO_REMOVE
1 #!/bin/bash 1 #!/bin/bash
2 -NOM_IMAGE_TO_REMOVE=$3; 2 +NAME_IMAGE_TO_REMOVE=$1;
3 3
4 #vérification que l'utilisateur donne bien un nom à l'image 4 #vérification que l'utilisateur donne bien un nom à l'image
5 -if [[ -z "$NOM_IMAGE_TO_REMOVE" ]]; then 5 +if [[ -z "$NAME_IMAGE_TO_REMOVE" ]]; then
6 echo "Il faut donner le nom de l'image ! Relancez la commande avec les bons arguments." 6 echo "Il faut donner le nom de l'image ! Relancez la commande avec les bons arguments."
7 exit 7 exit
8 fi 8 fi
9 -chmod -R 755 $PATH_MANIFEST  
10 -rm $PATH_MANIFEST/images/$NOM_IMAGE_TO_REMOVE.manifest  
11 -rm $PATH_BALEINE/images/$NOM_IMAGE_TO_REMOVE  
12 \ No newline at end of file 9 \ No newline at end of file
  10 +rm $PATH_MANIFEST/images/$NAME_IMAGE_TO_REMOVE.manifest
  11 +rm $PATH_BALEINE/images/$NAME_IMAGE_TO_REMOVE
  12 +#TODO : umount
13 \ No newline at end of file 13 \ No newline at end of file
restart_container.sh
1 #!/bin/bash 1 #!/bin/bash
2 -NOM_CONTAINER=$3;  
3 -NOM_IMAGE=$4;  
4 - 2 +while getopts c:i: o; do
  3 + case $o in
  4 + (c) NOM_CONTAINER=$OPTARG;;
  5 + (i) NOM_IMAGE=$OPTARG;;
  6 + esac
  7 +done
5 mount -t ext4 -o loop $PATH_BALEINE/containers/$NOM_CONTAINER/$NOM_IMAGE /mnt/baleine/$NOM_CONTAINER 8 mount -t ext4 -o loop $PATH_BALEINE/containers/$NOM_CONTAINER/$NOM_IMAGE /mnt/baleine/$NOM_CONTAINER
6 9
7 nohup unshare -p -f -m -n -u chroot /mnt/baleine/$NOM_CONTAINER $PROGRAM -c "mount /proc" & 10 nohup unshare -p -f -m -n -u chroot /mnt/baleine/$NOM_CONTAINER $PROGRAM -c "mount /proc" &
1 #!/bin/bash 1 #!/bin/bash
2 -NOM_CONTAINER=$3;  
3 2
  3 +while getopts c: o; do
  4 + case $o in
  5 + (c) NOM_CONTAINER=$OPTARG;;
  6 + esac
  7 +done
4 kill $PID 8 kill $PID
5 umount /mnt/baleine/$NOM_CONTAINER 9 umount /mnt/baleine/$NOM_CONTAINER
6 \ No newline at end of file 10 \ No newline at end of file
1 -#!/bin/bash 1 +#bash baleine.sh bridge create mybridge 192.168.42.1
  2 +#bash baleine.sh container create -i TEST -c mycontainer -b mybridge -a 192.168.42.2 -p /usr/sbin/apache2
2 3
3 -BRIDGES="pont,petitpont"  
4 -ADDRS_IPV4="lala,lulu" 4 +A="HELLO"
  5 +B=" WORLD"
5 6
6 -ARRAY_BRIDGES=()  
7 -ARRAY_IPV4=() 7 +C="$A$B"
8 8
9 -IFS=','  
10 -for b in $BRIDGES; do  
11 - ARRAY_BRIDGES+=($b)  
12 -done  
13 -  
14 -for a in $ADDRS_IPV4; do  
15 - ARRAY_IPV4+=($a)  
16 -done  
17 -  
18 -  
19 -for ((i = 0, j = 0 ; i < ${#ARRAY_BRIDGES[*]} && j < ${#ARRAY_BRIDGES[*]} ; i++, j++ )); do  
20 - echo "i= ${ARRAY_BRIDGES[i]}"  
21 - echo "j= ${ARRAY_IPV4[j]}"  
22 -done  
23 \ No newline at end of file 9 \ No newline at end of file
  10 +echo $C
24 \ No newline at end of file 11 \ No newline at end of file
1 #!/bin/bash 1 #!/bin/bash
2 -NOM_BRIDGE=$3; 2 +
  3 +while getopts b: o; do
  4 + case $o in
  5 + (b) NOM_BRIDGE=$OPTARG;;
  6 + esac
  7 +done
3 #vérification que l'utilisateur donne bien un nom à l'image 8 #vérification que l'utilisateur donne bien un nom à l'image
4 if [[ -z "$NOM_BRIDGE" ]]; then 9 if [[ -z "$NOM_BRIDGE" ]]; then
5 echo "Il faut donner le nom du bridge Relancez la commande avec les bons arguments." 10 echo "Il faut donner le nom du bridge Relancez la commande avec les bons arguments."