Commit b10879398daef21e02a107c0faf1e2c25d76c9fd

Authored by hmalti
1 parent 3e470988

Ajout commandes

@@ -7,8 +7,9 @@ @@ -7,8 +7,9 @@
7 #script qui va traiter ces cas, on garde les fichiers courts mais simples 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 if [ $# -lt 1 ]; then 14 if [ $# -lt 1 ]; then
14 printf "Baleine est un outil simple de gestion de conteneur.\n" 15 printf "Baleine est un outil simple de gestion de conteneur.\n"
@@ -16,7 +17,7 @@ if [ $# -lt 1 ]; then @@ -16,7 +17,7 @@ if [ $# -lt 1 ]; then
16 printf "\t \t baleine <commande> [arguments]\n" 17 printf "\t \t baleine <commande> [arguments]\n"
17 printf "Les commandes sont :\n \n" 18 printf "Les commandes sont :\n \n"
18 printf "\t \t %-10s %-10s \n" "container" "Lance ou stoppe un contenneur." 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 printf "\t \t %-10s %-10s \n \n" "image" "Créer ou supprime des images de contenneurs." 21 printf "\t \t %-10s %-10s \n \n" "image" "Créer ou supprime des images de contenneurs."
21 printf "Utilisez baleine <commande> help pour plus d'informations à propos d'une commande.\n" 22 printf "Utilisez baleine <commande> help pour plus d'informations à propos d'une commande.\n"
22 fi 23 fi
@@ -28,9 +29,6 @@ case &quot;$1&quot; in @@ -28,9 +29,6 @@ case &quot;$1&quot; in
28 #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
29 bash container.sh "$@" 30 bash container.sh "$@"
30 ;; 31 ;;
31 - "network")  
32 - bash network.sh "$@"  
33 - ;;  
34 "image") 32 "image")
35 bash image.sh "$@" 33 bash image.sh "$@"
36 ;; 34 ;;
@@ -40,4 +38,7 @@ case &quot;$1&quot; in @@ -40,4 +38,7 @@ case &quot;$1&quot; in
40 "help") 38 "help")
41 bash help.sh "$@" 39 bash help.sh "$@"
42 ;; 40 ;;
  41 + "test")
  42 + bash test.sh "$@"
  43 + ;;
43 esac 44 esac
44 \ No newline at end of file 45 \ No newline at end of file
@@ -13,5 +13,11 @@ case $2 in @@ -13,5 +13,11 @@ case $2 in
13 "stop") 13 "stop")
14 bash stop_container.sh "$@" 14 bash stop_container.sh "$@"
15 ;; 15 ;;
  16 + "remove")
  17 + bash remove_container.sh "$@"
  18 + ;;
  19 + "restart")
  20 + bash restart_container.sh "$@"
  21 + ;;
16 22
17 esac 23 esac
18 \ No newline at end of file 24 \ No newline at end of file
1 #!/bin/bash 1 #!/bin/bash
2 NOM_BRIDGE=$3; 2 NOM_BRIDGE=$3;
3 ADDR_IPV4=$4; 3 ADDR_IPV4=$4;
4 -REPERTOIRE=${PWD} 4 +
5 5
6 6
7 #condition sur le nbre d'arguments 7 #condition sur le nbre d'arguments
@@ -14,12 +14,12 @@ ip link add $NOM_BRIDGE type bridge @@ -14,12 +14,12 @@ ip link add $NOM_BRIDGE type bridge
14 ip a add dev $NOM_BRIDGE $ADDR_IPV4 14 ip a add dev $NOM_BRIDGE $ADDR_IPV4
15 ip link set $NOM_BRIDGE down 15 ip link set $NOM_BRIDGE down
16 ip link set $NOM_BRIDGE up 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 #condition de bordure pour le dossier Bridges 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 fi 24 fi
25 -mv $NOM_BRIDGE.manifest $REPERTOIRE/baleine/Bridges  
26 \ No newline at end of file 25 \ No newline at end of file
  26 +mv FILE $PATH_MANIFEST/bridges
27 \ No newline at end of file 27 \ No newline at end of file
create_container.sh
@@ -13,7 +13,7 @@ PROGRAM=$7; @@ -13,7 +13,7 @@ PROGRAM=$7;
13 13
14 14
15 #On veut récupérer le chemin de l'image 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 #on fait une copie dans /var/BaleineImages pour mount depuis le conteneur 18 #on fait une copie dans /var/BaleineImages pour mount depuis le conteneur
19 if [[ ! -d "$PATH_BALEINE/containers/$NOM_CONTAINER" ]]; then 19 if [[ ! -d "$PATH_BALEINE/containers/$NOM_CONTAINER" ]]; then
@@ -48,6 +48,15 @@ echo &quot;nom_image:$NOM_IMAGE&quot; &gt;&gt; $FILE #nom de son image @@ -48,6 +48,15 @@ echo &quot;nom_image:$NOM_IMAGE&quot; &gt;&gt; $FILE #nom de son image
48 echo "pid:$PID" >> $FILE #Son PID 48 echo "pid:$PID" >> $FILE #Son PID
49 echo "nom_bridge:$NOM_BRIDGE" >> $FILE #SON BRIDGE 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 if [[ ! -d "$PATH_MANIFEST/containers" ]]; then 60 if [[ ! -d "$PATH_MANIFEST/containers" ]]; then
52 mkdir -p $PATH_MANIFEST/containers 61 mkdir -p $PATH_MANIFEST/containers
53 fi 62 fi
1 #!/bin/bash 1 #!/bin/bash
2 -#TOUT MARCHE BIEN ICI  
3 2
4 NOM_IMAGE=$3; # L'utilisateur devra spécifier le nom de l'image 3 NOM_IMAGE=$3; # L'utilisateur devra spécifier le nom de l'image
5 SIZE=$4; #L'utilisateur devra spécifier la taille du disque qu'il souhaite allouer 4 SIZE=$4; #L'utilisateur devra spécifier la taille du disque qu'il souhaite allouer
@@ -15,12 +14,12 @@ if [ &quot;$SIZE&quot; -lt 0 ] || [ &quot;$SIZE&quot; -gt 10240 ] || [ -z $SIZE ]; then #vérifie qu @@ -15,12 +14,12 @@ if [ &quot;$SIZE&quot; -lt 0 ] || [ &quot;$SIZE&quot; -gt 10240 ] || [ -z $SIZE ]; then #vérifie qu
15 $SIZE=10240 14 $SIZE=10240
16 fi 15 fi
17 16
18 -mkdir -p /usr/lib/baleine/images 17 +mkdir -p $PATH_BALEINE/images
19 18
20 #condition pour le répertoire 19 #condition pour le répertoire
21 if [[ -z $REPERTOIRE ]]; then #si l'utilisateur oublie de donner le path on utilise celui-ci par défaut 20 if [[ -z $REPERTOIRE ]]; then #si l'utilisateur oublie de donner le path on utilise celui-ci par défaut
22 echo "Il n'y pas eu d'argements donnés pour répertoire, je fais moi même le chemin" 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 fi 23 fi
25 24
26 #vérification que l'utilisateur donne bien un nom à l'image 25 #vérification que l'utilisateur donne bien un nom à l'image
@@ -28,29 +27,32 @@ if [[ -z &quot;$NOM_IMAGE&quot; ]]; then @@ -28,29 +27,32 @@ if [[ -z &quot;$NOM_IMAGE&quot; ]]; then
28 echo "Il faut donner le nom de l'image ! Relancez la commande avec les bons arguments." 27 echo "Il faut donner le nom de l'image ! Relancez la commande avec les bons arguments."
29 exit 28 exit
30 fi 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 #Crée image 36 #Crée image
  37 +FILE=$NOM_IMAGE.manifest
38 echo "Je vais commencer à allouer !" 38 echo "Je vais commencer à allouer !"
39 dd if=/dev/zero of=$REPERTOIRE/$NOM_IMAGE bs=1024k count=$SIZE 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 fi 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 #création du système de fichiers au format "ext4" 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,7 +61,7 @@ export http_proxy=http://proxy.polytech-lille.fr:3128
59 61
60 #Création de l'arborescence Debian avec debootstrap 62 #Création de l'arborescence Debian avec debootstrap
61 echo "Je vais faire le debootstrap" 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 #On renseigne le fichier fstab du conteneur 66 #On renseigne le fichier fstab du conteneur
65 echo "proc /proc proc defaults 0 0" >> /mnt/$NOM_IMAGE/etc/fstab 67 echo "proc /proc proc defaults 0 0" >> /mnt/$NOM_IMAGE/etc/fstab
66 \ No newline at end of file 68 \ No newline at end of file
1 #!/bin/bash 1 #!/bin/bash
2 -cd $PWD/baleine/Bridges 2 +cd $PATH_MANIFEST/bridges
3 3
4 for eachfile in ./*.manifest 4 for eachfile in ./*.manifest
5 do 5 do
1 #!/bin/bash 1 #!/bin/bash
2 2
3 -cd $PWD/baleine/Containers 3 +cd $PATH_MANIFEST/containers
4 4
5 for eachfile in ./*.manifest 5 for eachfile in ./*.manifest
6 do 6 do
1 #!/bin/bash 1 #!/bin/bash
2 2
3 -cd $PWD/baleine/Images 3 +cd $PATH_MANIFEST/images
4 4
5 for eachfile in ./*.manifest 5 for eachfile in ./*.manifest
6 do 6 do
1 #!/bin/bash 1 #!/bin/bash
2 NOM_BRIDGE_TO_REMOVE=$3; 2 NOM_BRIDGE_TO_REMOVE=$3;
3 -REPERTOIRE=${PWD} 3 +
4 4
5 #vérification que l'utilisateur donne bien un nom à l'image 5 #vérification que l'utilisateur donne bien un nom à l'image
6 if [[ -z "$NOM_BRIDGE_TO_REMOVE" ]]; then 6 if [[ -z "$NOM_BRIDGE_TO_REMOVE" ]]; then
7 echo "Il faut donner le nom du bridge à supprimer ! Relancez la commande avec les bons arguments." 7 echo "Il faut donner le nom du bridge à supprimer ! Relancez la commande avec les bons arguments."
8 exit 8 exit
9 fi 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 ip link delete $NOM_BRIDGE_TO_REMOVE type bridge 12 ip link delete $NOM_BRIDGE_TO_REMOVE type bridge
13 -delbr 13 +#delbr
remove_container.sh 0 → 100644
@@ -0,0 +1,13 @@ @@ -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?
1 #!/bin/bash 1 #!/bin/bash
2 NOM_IMAGE_TO_REMOVE=$3; 2 NOM_IMAGE_TO_REMOVE=$3;
3 -REPERTOIRE=${PWD}  
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_IMAGE_TO_REMOVE" ]]; then 5 if [[ -z "$NOM_IMAGE_TO_REMOVE" ]]; then
7 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."
8 exit 7 exit
9 fi 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 \ No newline at end of file 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 \ No newline at end of file 13 \ No newline at end of file
restart_container.sh 0 → 100644
@@ -0,0 +1,10 @@ @@ -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/.* //'
stop_container.sh 0 → 100644
@@ -0,0 +1,5 @@ @@ -0,0 +1,5 @@
  1 +#!/bin/bash
  2 +NOM_CONTAINER=$3;
  3 +
  4 +kill $PID
  5 +umount /mnt/baleine/$NOM_CONTAINER
0 \ No newline at end of file 6 \ No newline at end of file
test.sh 0 → 100644
@@ -0,0 +1,4 @@ @@ -0,0 +1,4 @@
  1 +#!/bin/bash
  2 +
  3 +source baleine.sh
  4 +echo "$PATH_MANIFEST"
0 \ No newline at end of file 5 \ No newline at end of file