3 IRS
Année Universitaire : 2023-2024
________________________________________________________
TRAVAUX PRATIQUES N°2
________________________________________________________
Module : Virtualisation des réseaux - 3IRS
Enseignante : Mme G.e.m. ZHIOUA
Objectifs :
- Rappel sur le langage Python
- Création de topologies sur Mininet avec des scripts Python
Partie 1 : Rappel sur Python
1- Pour lancer Python sur votre machine, faire la commande suivante
$python3
2- Utiliser l’interpréteur pour
a. Imprimer un string
>>> ‘hello World !’
b. Faire un calcul
>>> 2+3
>>> 20/5
>>> 3**2
c. Créer et utiliser une variable
>>> x=3
>>> x*5
>>> "test"*x
d. Concaténer plusieurs variables string
>>> str1="travaux"
>>> str2="pratique"
>>> str3="python"
>>> space=" "
>>> print(str1+space+str2+space+str3)
>>> print(str1,str2,str3)
1/6
3 IRS
e. Afficher plusieurs types de données
>>> x=3
>>> print("The value of x is " + str(x))
>>> type(x)
>>> x=str(x)
>>> type(x)
f. Quitter
>>> quit ()
3- Plusieurs types de données sont supportées, nous allons manipuler les 4 types :
int, float, string, Boolean. Utiliser la commande type() pour déterminer le type
de variable. Donner le résultat de ces commandes
a. >>> type (98)
b. >>> type(98.6)
c. >>> type("Hi!")
d. >>> type(True)
4- Une variable de type list est utilisée pour enregistrer plusieurs informations
dans la même variable, similaire au tableau dans d’autres langages de
programmation
a. Donner le résultat de ces commandes
>>> hostnames=["R1","R2","R3","S1","S2"]
>>> type(hostnames)
>>> len(hostnames)
>>> hostnames
b. Le premier élément de la variable list est indexé 0 et le dernier -1.
Donner le résultat de ces commandes
>>> hostnames[0]
>>> hostnames[-1]
>>> hostnames[0]="RTR1"
>>> hostnames
>>> del hostnames[3]
>>> hostnames
5- Les variables de type dictionary
>>>ipAddress={"R1":"[Link]","R2":"[Link]","R3":"[Link]"}
>>> type(ipAddress)
2/6
3 IRS
a. Donner le résultat des instructions suivantes
>>> ipAddress
>>> ipAddress['R1']
>>> ipAddress["S1"]="10.1.
>>> ipAddress
b. Donner le résultat des instructions suivantes
>>> ipAddress["R3"]=["[Link]","[Link]","[Link]"]
>>> ipAddress
6- La fonction input
>>> firstName = input("What is your first name? ")
What is your first name? User_Name
>>> print("Hello " + firstName +"!")
Hello User_Name!
>>>
7- La fonction if/elif/else
a. Copier le script suivant dans un fichier nommé [Link]
aclNum = int(input("What is the IPv4 ACL number? "))
if aclNum >= 1 and aclNum <= 99:
print("This is a standard IPv4 ACL.")
elif aclNum >=100 and aclNum <= 199:
print("This is an extended IPv4 ACL.")
else:
print("This is not a standard or extended IPv4 ACL.")
b. Exécuter plusieurs fois le script pour tester chaque condition
Partie 2 : Plus de détails.
8- Lire le cours suivant sur Python en suivant le lien ci-dessous :
[Link]
cours/introduction/
3/6
3 IRS
Partie 3 : Application
9- Le code Python suivant permet de créer un client h1 connecté directement au
client h2 et ce dernier connecté à un switch h2.
from [Link] import Topo
class Test_Topo (Topo):
def _init_(self):
“create P2P topology”
#initialize tpology
Topo._init_(self)
#Add hosts and switches
h1 = [Link](‘h1’)
h2 = [Link](‘h2’)
s1 = [Link](‘s1’)
#Add links
[Link](h2,s1)
[Link](h1,s1)
topos = {‘toptest’: (lambda: Test_Topo())}
a. Copier et Sauvegarder de code ci-dessus dans un fichier nommé par
exemple [Link]. Exécuter le code avec la commande
$ sudo mn --custom /home/mininet/mytopos/[Link]
Explorer la configuration de la topologie créée en utilisant les commandes
précédemment vues dans le TP1.
b. Combien d’interfaces disposent h1 et h2 ?
c. Quelles sont les adresses assignées
d. Configurer par le CLI l’interface réseau du client h1 et l’interface du
client h2 qui est connecté à h1 en attribuant respectivement les adresses
4/6
3 IRS
suivantes 192.168.01. et [Link] avec le netmask [Link].
Utiliser la commande ifconfig
e. Vérifier la configuration des interfaces
f. Tester par un ping la connectivité entre les machines h1 et h2
10-Soit le code Python suivant :
#!/usr/bin/python
from [Link] import Topo
from [Link] import Mininet
from [Link] import dumpNodeConnections
from [Link] import setLogLevel
from [Link] import CLI
class SingleSwitchTopo(Topo):
"Single switch connected to n hosts."
def build(self, n=2):
switch = [Link]('s1')
# Python's range(N) generates 0..N-1
for h in range(n):
host = [Link]('h%s' % (h + 1))
[Link](host, switch)
def simpleTest():
"Create and test a simple network"
topo = SingleSwitchTopo(n=4)
net = Mininet(topo)
[Link]()
print "Dumping host connections"
dumpNodeConnections([Link])
print ("Testing network connectivity")
[Link]()
CLI(net)
if __name__ == '__main__':
# Tell mininet to print useful information
setLogLevel('info')
simpleTest()
5/6
3 IRS
a. Copier et sauvegarder de code ci-dessus dans un fichier nommé par
exemple [Link]. Exécuter le code.
$ sudo mn --custom /home/mininet/mytopos/[Link]
b. Décrire les instructions
c. Dessiner la topologie obtenue en renseignant les adresses des nœuds
d. Faire des tests de ping entre les nœuds
Bon Travail
6/6