diff --git a/TP-01/Pipfile b/TP-01/Pipfile new file mode 100644 index 0000000..3f32bb6 --- /dev/null +++ b/TP-01/Pipfile @@ -0,0 +1,13 @@ +[[source]] +url = "https://pypi.org/simple" +verify_ssl = true +name = "pypi" + +[packages] +jinja2 = "*" +pyyaml = "*" + +[dev-packages] + +[requires] +python_version = "3.12" diff --git a/TP-01/Pipfile.lock b/TP-01/Pipfile.lock new file mode 100644 index 0000000..0cc623a --- /dev/null +++ b/TP-01/Pipfile.lock @@ -0,0 +1,205 @@ +{ + "_meta": { + "hash": { + "sha256": "a3c8224561587db26f9d12d82bbaa6632243dac7cba493723678689f72ca8403" + }, + "pipfile-spec": 6, + "requires": { + "python_version": "3.12" + }, + "sources": [ + { + "name": "pypi", + "url": "https://pypi.org/simple", + "verify_ssl": true + } + ] + }, + "default": { + "jinja2": { + "hashes": [ + "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", + "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67" + ], + "index": "pypi", + "markers": "python_version >= '3.7'", + "version": "==3.1.6" + }, + "markupsafe": { + "hashes": [ + "sha256:0303439a41979d9e74d18ff5e2dd8c43ed6c6001fd40e5bf2e43f7bd9bbc523f", + "sha256:068f375c472b3e7acbe2d5318dea141359e6900156b5b2ba06a30b169086b91a", + "sha256:0bf2a864d67e76e5c9a34dc26ec616a66b9888e25e7b9460e1c76d3293bd9dbf", + "sha256:0db14f5dafddbb6d9208827849fad01f1a2609380add406671a26386cdf15a19", + "sha256:0eb9ff8191e8498cca014656ae6b8d61f39da5f95b488805da4bb029cccbfbaf", + "sha256:0f4b68347f8c5eab4a13419215bdfd7f8c9b19f2b25520968adfad23eb0ce60c", + "sha256:1085e7fbddd3be5f89cc898938f42c0b3c711fdcb37d75221de2666af647c175", + "sha256:116bb52f642a37c115f517494ea5feb03889e04df47eeff5b130b1808ce7c219", + "sha256:12c63dfb4a98206f045aa9563db46507995f7ef6d83b2f68eda65c307c6829eb", + "sha256:133a43e73a802c5562be9bbcd03d090aa5a1fe899db609c29e8c8d815c5f6de6", + "sha256:1353ef0c1b138e1907ae78e2f6c63ff67501122006b0f9abad68fda5f4ffc6ab", + "sha256:15d939a21d546304880945ca1ecb8a039db6b4dc49b2c5a400387cdae6a62e26", + "sha256:177b5253b2834fe3678cb4a5f0059808258584c559193998be2601324fdeafb1", + "sha256:1872df69a4de6aead3491198eaf13810b565bdbeec3ae2dc8780f14458ec73ce", + "sha256:1b4b79e8ebf6b55351f0d91fe80f893b4743f104bff22e90697db1590e47a218", + "sha256:1b52b4fb9df4eb9ae465f8d0c228a00624de2334f216f178a995ccdcf82c4634", + "sha256:1ba88449deb3de88bd40044603fafffb7bc2b055d626a330323a9ed736661695", + "sha256:1cc7ea17a6824959616c525620e387f6dd30fec8cb44f649e31712db02123dad", + "sha256:218551f6df4868a8d527e3062d0fb968682fe92054e89978594c28e642c43a73", + "sha256:26a5784ded40c9e318cfc2bdb30fe164bdb8665ded9cd64d500a34fb42067b1c", + "sha256:2713baf880df847f2bece4230d4d094280f4e67b1e813eec43b4c0e144a34ffe", + "sha256:2a15a08b17dd94c53a1da0438822d70ebcd13f8c3a95abe3a9ef9f11a94830aa", + "sha256:2f981d352f04553a7171b8e44369f2af4055f888dfb147d55e42d29e29e74559", + "sha256:32001d6a8fc98c8cb5c947787c5d08b0a50663d139f1305bac5885d98d9b40fa", + "sha256:3524b778fe5cfb3452a09d31e7b5adefeea8c5be1d43c4f810ba09f2ceb29d37", + "sha256:3537e01efc9d4dccdf77221fb1cb3b8e1a38d5428920e0657ce299b20324d758", + "sha256:35add3b638a5d900e807944a078b51922212fb3dedb01633a8defc4b01a3c85f", + "sha256:38664109c14ffc9e7437e86b4dceb442b0096dfe3541d7864d9cbe1da4cf36c8", + "sha256:3a7e8ae81ae39e62a41ec302f972ba6ae23a5c5396c8e60113e9066ef893da0d", + "sha256:3b562dd9e9ea93f13d53989d23a7e775fdfd1066c33494ff43f5418bc8c58a5c", + "sha256:457a69a9577064c05a97c41f4e65148652db078a3a509039e64d3467b9e7ef97", + "sha256:4bd4cd07944443f5a265608cc6aab442e4f74dff8088b0dfc8238647b8f6ae9a", + "sha256:4e885a3d1efa2eadc93c894a21770e4bc67899e3543680313b09f139e149ab19", + "sha256:4faffd047e07c38848ce017e8725090413cd80cbc23d86e55c587bf979e579c9", + "sha256:509fa21c6deb7a7a273d629cf5ec029bc209d1a51178615ddf718f5918992ab9", + "sha256:5678211cb9333a6468fb8d8be0305520aa073f50d17f089b5b4b477ea6e67fdc", + "sha256:591ae9f2a647529ca990bc681daebdd52c8791ff06c2bfa05b65163e28102ef2", + "sha256:5a7d5dc5140555cf21a6fefbdbf8723f06fcd2f63ef108f2854de715e4422cb4", + "sha256:69c0b73548bc525c8cb9a251cddf1931d1db4d2258e9599c28c07ef3580ef354", + "sha256:6b5420a1d9450023228968e7e6a9ce57f65d148ab56d2313fcd589eee96a7a50", + "sha256:722695808f4b6457b320fdc131280796bdceb04ab50fe1795cd540799ebe1698", + "sha256:729586769a26dbceff69f7a7dbbf59ab6572b99d94576a5592625d5b411576b9", + "sha256:77f0643abe7495da77fb436f50f8dab76dbc6e5fd25d39589a0f1fe6548bfa2b", + "sha256:795e7751525cae078558e679d646ae45574b47ed6e7771863fcc079a6171a0fc", + "sha256:7be7b61bb172e1ed687f1754f8e7484f1c8019780f6f6b0786e76bb01c2ae115", + "sha256:7c3fb7d25180895632e5d3148dbdc29ea38ccb7fd210aa27acbd1201a1902c6e", + "sha256:7e68f88e5b8799aa49c85cd116c932a1ac15caaa3f5db09087854d218359e485", + "sha256:83891d0e9fb81a825d9a6d61e3f07550ca70a076484292a70fde82c4b807286f", + "sha256:8485f406a96febb5140bfeca44a73e3ce5116b2501ac54fe953e488fb1d03b12", + "sha256:8709b08f4a89aa7586de0aadc8da56180242ee0ada3999749b183aa23df95025", + "sha256:8f71bc33915be5186016f675cd83a1e08523649b0e33efdb898db577ef5bb009", + "sha256:915c04ba3851909ce68ccc2b8e2cd691618c4dc4c4232fb7982bca3f41fd8c3d", + "sha256:949b8d66bc381ee8b007cd945914c721d9aba8e27f71959d750a46f7c282b20b", + "sha256:94c6f0bb423f739146aec64595853541634bde58b2135f27f61c1ffd1cd4d16a", + "sha256:9a1abfdc021a164803f4d485104931fb8f8c1efd55bc6b748d2f5774e78b62c5", + "sha256:9b79b7a16f7fedff2495d684f2b59b0457c3b493778c9eed31111be64d58279f", + "sha256:a320721ab5a1aba0a233739394eb907f8c8da5c98c9181d1161e77a0c8e36f2d", + "sha256:a4afe79fb3de0b7097d81da19090f4df4f8d3a2b3adaa8764138aac2e44f3af1", + "sha256:ad2cf8aa28b8c020ab2fc8287b0f823d0a7d8630784c31e9ee5edea20f406287", + "sha256:b8512a91625c9b3da6f127803b166b629725e68af71f8184ae7e7d54686a56d6", + "sha256:bc51efed119bc9cfdf792cdeaa4d67e8f6fcccab66ed4bfdd6bde3e59bfcbb2f", + "sha256:bdc919ead48f234740ad807933cdf545180bfbe9342c2bb451556db2ed958581", + "sha256:bdd37121970bfd8be76c5fb069c7751683bdf373db1ed6c010162b2a130248ed", + "sha256:be8813b57049a7dc738189df53d69395eba14fb99345e0a5994914a3864c8a4b", + "sha256:c0c0b3ade1c0b13b936d7970b1d37a57acde9199dc2aecc4c336773e1d86049c", + "sha256:c47a551199eb8eb2121d4f0f15ae0f923d31350ab9280078d1e5f12b249e0026", + "sha256:c4ffb7ebf07cfe8931028e3e4c85f0357459a3f9f9490886198848f4fa002ec8", + "sha256:ccfcd093f13f0f0b7fdd0f198b90053bf7b2f02a3927a30e63f3ccc9df56b676", + "sha256:d2ee202e79d8ed691ceebae8e0486bd9a2cd4794cec4824e1c99b6f5009502f6", + "sha256:d53197da72cc091b024dd97249dfc7794d6a56530370992a5e1a08983ad9230e", + "sha256:d6dd0be5b5b189d31db7cda48b91d7e0a9795f31430b7f271219ab30f1d3ac9d", + "sha256:d88b440e37a16e651bda4c7c2b930eb586fd15ca7406cb39e211fcff3bf3017d", + "sha256:de8a88e63464af587c950061a5e6a67d3632e36df62b986892331d4620a35c01", + "sha256:df2449253ef108a379b8b5d6b43f4b1a8e81a061d6537becd5582fba5f9196d7", + "sha256:e1c1493fb6e50ab01d20a22826e57520f1284df32f2d8601fdd90b6304601419", + "sha256:e1cf1972137e83c5d4c136c43ced9ac51d0e124706ee1c8aa8532c1287fa8795", + "sha256:e2103a929dfa2fcaf9bb4e7c091983a49c9ac3b19c9061b6d5427dd7d14d81a1", + "sha256:e56b7d45a839a697b5eb268c82a71bd8c7f6c94d6fd50c3d577fa39a9f1409f5", + "sha256:e8afc3f2ccfa24215f8cb28dcf43f0113ac3c37c2f0f0806d8c70e4228c5cf4d", + "sha256:e8fc20152abba6b83724d7ff268c249fa196d8259ff481f3b1476383f8f24e42", + "sha256:eaa9599de571d72e2daf60164784109f19978b327a3910d3e9de8c97b5b70cfe", + "sha256:ec15a59cf5af7be74194f7ab02d0f59a62bdcf1a537677ce67a2537c9b87fcda", + "sha256:f190daf01f13c72eac4efd5c430a8de82489d9cff23c364c3ea822545032993e", + "sha256:f34c41761022dd093b4b6896d4810782ffbabe30f2d443ff5f083e0cbbb8c737", + "sha256:f3e98bb3798ead92273dc0e5fd0f31ade220f59a266ffd8a4f6065e0a3ce0523", + "sha256:f42d0984e947b8adf7dd6dde396e720934d12c506ce84eea8476409563607591", + "sha256:f71a396b3bf33ecaa1626c255855702aca4d3d9fea5e051b41ac59a9c1c41edc", + "sha256:f9e130248f4462aaa8e2552d547f36ddadbeaa573879158d721bbd33dfe4743a", + "sha256:fed51ac40f757d41b7c48425901843666a6677e3e8eb0abcff09e4ba6e664f50" + ], + "markers": "python_version >= '3.9'", + "version": "==3.0.3" + }, + "pyyaml": { + "hashes": [ + "sha256:00c4bdeba853cc34e7dd471f16b4114f4162dc03e6b7afcc2128711f0eca823c", + "sha256:0150219816b6a1fa26fb4699fb7daa9caf09eb1999f3b70fb6e786805e80375a", + "sha256:02893d100e99e03eda1c8fd5c441d8c60103fd175728e23e431db1b589cf5ab3", + "sha256:02ea2dfa234451bbb8772601d7b8e426c2bfa197136796224e50e35a78777956", + "sha256:0f29edc409a6392443abf94b9cf89ce99889a1dd5376d94316ae5145dfedd5d6", + "sha256:10892704fc220243f5305762e276552a0395f7beb4dbf9b14ec8fd43b57f126c", + "sha256:16249ee61e95f858e83976573de0f5b2893b3677ba71c9dd36b9cf8be9ac6d65", + "sha256:1d37d57ad971609cf3c53ba6a7e365e40660e3be0e5175fa9f2365a379d6095a", + "sha256:1ebe39cb5fc479422b83de611d14e2c0d3bb2a18bbcb01f229ab3cfbd8fee7a0", + "sha256:214ed4befebe12df36bcc8bc2b64b396ca31be9304b8f59e25c11cf94a4c033b", + "sha256:2283a07e2c21a2aa78d9c4442724ec1eb15f5e42a723b99cb3d822d48f5f7ad1", + "sha256:22ba7cfcad58ef3ecddc7ed1db3409af68d023b7f940da23c6c2a1890976eda6", + "sha256:27c0abcb4a5dac13684a37f76e701e054692a9b2d3064b70f5e4eb54810553d7", + "sha256:28c8d926f98f432f88adc23edf2e6d4921ac26fb084b028c733d01868d19007e", + "sha256:2e71d11abed7344e42a8849600193d15b6def118602c4c176f748e4583246007", + "sha256:34d5fcd24b8445fadc33f9cf348c1047101756fd760b4dacb5c3e99755703310", + "sha256:37503bfbfc9d2c40b344d06b2199cf0e96e97957ab1c1b546fd4f87e53e5d3e4", + "sha256:3c5677e12444c15717b902a5798264fa7909e41153cdf9ef7ad571b704a63dd9", + "sha256:3ff07ec89bae51176c0549bc4c63aa6202991da2d9a6129d7aef7f1407d3f295", + "sha256:41715c910c881bc081f1e8872880d3c650acf13dfa8214bad49ed4cede7c34ea", + "sha256:418cf3f2111bc80e0933b2cd8cd04f286338bb88bdc7bc8e6dd775ebde60b5e0", + "sha256:44edc647873928551a01e7a563d7452ccdebee747728c1080d881d68af7b997e", + "sha256:4a2e8cebe2ff6ab7d1050ecd59c25d4c8bd7e6f400f5f82b96557ac0abafd0ac", + "sha256:4ad1906908f2f5ae4e5a8ddfce73c320c2a1429ec52eafd27138b7f1cbe341c9", + "sha256:501a031947e3a9025ed4405a168e6ef5ae3126c59f90ce0cd6f2bfc477be31b7", + "sha256:5190d403f121660ce8d1d2c1bb2ef1bd05b5f68533fc5c2ea899bd15f4399b35", + "sha256:5498cd1645aa724a7c71c8f378eb29ebe23da2fc0d7a08071d89469bf1d2defb", + "sha256:5cf4e27da7e3fbed4d6c3d8e797387aaad68102272f8f9752883bc32d61cb87b", + "sha256:5e0b74767e5f8c593e8c9b5912019159ed0533c70051e9cce3e8b6aa699fcd69", + "sha256:5ed875a24292240029e4483f9d4a4b8a1ae08843b9c54f43fcc11e404532a8a5", + "sha256:5fcd34e47f6e0b794d17de1b4ff496c00986e1c83f7ab2fb8fcfe9616ff7477b", + "sha256:5fdec68f91a0c6739b380c83b951e2c72ac0197ace422360e6d5a959d8d97b2c", + "sha256:6344df0d5755a2c9a276d4473ae6b90647e216ab4757f8426893b5dd2ac3f369", + "sha256:64386e5e707d03a7e172c0701abfb7e10f0fb753ee1d773128192742712a98fd", + "sha256:652cb6edd41e718550aad172851962662ff2681490a8a711af6a4d288dd96824", + "sha256:66291b10affd76d76f54fad28e22e51719ef9ba22b29e1d7d03d6777a9174198", + "sha256:66e1674c3ef6f541c35191caae2d429b967b99e02040f5ba928632d9a7f0f065", + "sha256:6adc77889b628398debc7b65c073bcb99c4a0237b248cacaf3fe8a557563ef6c", + "sha256:79005a0d97d5ddabfeeea4cf676af11e647e41d81c9a7722a193022accdb6b7c", + "sha256:7c6610def4f163542a622a73fb39f534f8c101d690126992300bf3207eab9764", + "sha256:7f047e29dcae44602496db43be01ad42fc6f1cc0d8cd6c83d342306c32270196", + "sha256:8098f252adfa6c80ab48096053f512f2321f0b998f98150cea9bd23d83e1467b", + "sha256:850774a7879607d3a6f50d36d04f00ee69e7fc816450e5f7e58d7f17f1ae5c00", + "sha256:8d1fab6bb153a416f9aeb4b8763bc0f22a5586065f86f7664fc23339fc1c1fac", + "sha256:8da9669d359f02c0b91ccc01cac4a67f16afec0dac22c2ad09f46bee0697eba8", + "sha256:8dc52c23056b9ddd46818a57b78404882310fb473d63f17b07d5c40421e47f8e", + "sha256:9149cad251584d5fb4981be1ecde53a1ca46c891a79788c0df828d2f166bda28", + "sha256:93dda82c9c22deb0a405ea4dc5f2d0cda384168e466364dec6255b293923b2f3", + "sha256:96b533f0e99f6579b3d4d4995707cf36df9100d67e0c8303a0c55b27b5f99bc5", + "sha256:9c57bb8c96f6d1808c030b1687b9b5fb476abaa47f0db9c0101f5e9f394e97f4", + "sha256:9c7708761fccb9397fe64bbc0395abcae8c4bf7b0eac081e12b809bf47700d0b", + "sha256:9f3bfb4965eb874431221a3ff3fdcddc7e74e3b07799e0e84ca4a0f867d449bf", + "sha256:a33284e20b78bd4a18c8c2282d549d10bc8408a2a7ff57653c0cf0b9be0afce5", + "sha256:a80cb027f6b349846a3bf6d73b5e95e782175e52f22108cfa17876aaeff93702", + "sha256:b30236e45cf30d2b8e7b3e85881719e98507abed1011bf463a8fa23e9c3e98a8", + "sha256:b3bc83488de33889877a0f2543ade9f70c67d66d9ebb4ac959502e12de895788", + "sha256:b865addae83924361678b652338317d1bd7e79b1f4596f96b96c77a5a34b34da", + "sha256:b8bb0864c5a28024fac8a632c443c87c5aa6f215c0b126c449ae1a150412f31d", + "sha256:ba1cc08a7ccde2d2ec775841541641e4548226580ab850948cbfda66a1befcdc", + "sha256:bdb2c67c6c1390b63c6ff89f210c8fd09d9a1217a465701eac7316313c915e4c", + "sha256:c1ff362665ae507275af2853520967820d9124984e0f7466736aea23d8611fba", + "sha256:c2514fceb77bc5e7a2f7adfaa1feb2fb311607c9cb518dbc378688ec73d8292f", + "sha256:c3355370a2c156cffb25e876646f149d5d68f5e0a3ce86a5084dd0b64a994917", + "sha256:c458b6d084f9b935061bc36216e8a69a7e293a2f1e68bf956dcd9e6cbcd143f5", + "sha256:d0eae10f8159e8fdad514efdc92d74fd8d682c933a6dd088030f3834bc8e6b26", + "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", + "sha256:ebc55a14a21cb14062aa4162f906cd962b28e2e9ea38f9b4391244cd8de4ae0b", + "sha256:eda16858a3cab07b80edaf74336ece1f986ba330fdb8ee0d6c0d68fe82bc96be", + "sha256:ee2922902c45ae8ccada2c5b501ab86c36525b883eff4255313a253a3160861c", + "sha256:efd7b85f94a6f21e4932043973a7ba2613b059c4a000551892ac9f1d11f5baf3", + "sha256:f7057c9a337546edc7973c0d3ba84ddcdf0daa14533c2065749c9075001090e6", + "sha256:fa160448684b4e94d80416c0fa4aac48967a969efe22931448d853ada8baf926", + "sha256:fc09d0aa354569bc501d4e787133afc08552722d3ab34836a80547331bb5d4a0" + ], + "index": "pypi", + "markers": "python_version >= '3.8'", + "version": "==6.0.3" + } + }, + "develop": {} +} diff --git a/TP-01/config/ESW2.conf b/TP-01/config/ESW2.conf new file mode 100644 index 0000000..35c5fc3 --- /dev/null +++ b/TP-01/config/ESW2.conf @@ -0,0 +1,30 @@ +hostname ESW2 + +! Configuration des interfaces + +interface f1/1 + description Connexion vers le VLAN 10 + + switchport mode access + switchport access vlan 10 + + no shutdown + +interface f1/2 + description Connexion vers le VLAN 20 + + switchport mode access + switchport access vlan 20 + + no shutdown + +interface f1/0 + description Connexion vers le routeur R2 + + switchport mode trunk + switchport trunk allowed vlan add 10,20 + + no shutdown + + +end \ No newline at end of file diff --git a/TP-01/config/ESW2_from_yaml.conf b/TP-01/config/ESW2_from_yaml.conf new file mode 100644 index 0000000..ba9ccc9 --- /dev/null +++ b/TP-01/config/ESW2_from_yaml.conf @@ -0,0 +1,30 @@ +hostname ESW2 + +! Configuration des interfaces + +interface f1/1 + description Connexion vers VPC3 + + switchport mode access + switchport access vlan 10 + + no shutdown + +interface f1/2 + description Connexion vers VPC4 + + switchport mode access + switchport access vlan 20 + + no shutdown + +interface f1/0 + description Connexion vers le routeur R2 + + switchport mode trunk + switchport trunk allowed vlan add 10,20,99 + + no shutdown + + +end \ No newline at end of file diff --git a/TP-01/config/R2.conf b/TP-01/config/R2.conf new file mode 100644 index 0000000..724403b --- /dev/null +++ b/TP-01/config/R2.conf @@ -0,0 +1,15 @@ +hostname R2 + +interface g0/0.10 + description Gateway pour le reseau 172.16.30.0/24 + ip address 172.16.30.254 255.255.255.0 + encapsulation dot1Q 10 + no shutdown + +interface g0/0.20 + description Gateway pour le reseau 172.16.40.0/24 + ip address 172.16.40.254 255.255.255.0 + encapsulation dot1Q 20 + no shutdown + +end \ No newline at end of file diff --git a/TP-01/config/R2_from_yaml.conf b/TP-01/config/R2_from_yaml.conf new file mode 100644 index 0000000..859cf7b --- /dev/null +++ b/TP-01/config/R2_from_yaml.conf @@ -0,0 +1,45 @@ +hostname R2 + +interface g0/0 + description Interface physique parent + ip address None None + encapsulation dot1Q + no shutdown + +interface g0/0.10 + description Sous interface g0/0.10 + ip address 172.16.30.254 255.255.255.0 + encapsulation dot1Q 10 + no shutdown + +interface g0/0.20 + description Sous interface g0/0.20 + ip address 172.16.40.254 255.255.255.0 + encapsulation dot1Q 20 + no shutdown + +interface g2/0 + description Lien principal vers le switch ESW4 + ip address None None + encapsulation dot1Q + no shutdown + +interface g2/0.10 + description Gateway pour le reseau 172.16.50.0 + ip address 172.16.50.254 255.255.255.0 + encapsulation dot1Q 10 + no shutdown + +interface g2/0.20 + description Gateway pour le reseau 172.16.60.0 + ip address 172.16.60.254 255.255.255.0 + encapsulation dot1Q 20 + no shutdown + +interface g2/0.99 + description Interface de gestion VLAN 99 + ip address 172.16.100.254 255.255.255.192 + encapsulation dot1Q 99 + no shutdown + +end \ No newline at end of file diff --git a/TP-01/data/ESW2.json b/TP-01/data/ESW2.json new file mode 100644 index 0000000..831ba12 --- /dev/null +++ b/TP-01/data/ESW2.json @@ -0,0 +1,23 @@ +{ + "hostname": "ESW2", + "interfaces": [ + { + "name": "f1/1", + "mode": "access", + "vlan_id": "10", + "description": "Connexion vers le VLAN 10" + }, + { + "name": "f1/2", + "mode": "access", + "vlan_id": "20", + "description": "Connexion vers le VLAN 20" + }, + { + "name": "f1/0", + "mode": "trunk", + "vlan_id": "10,20", + "description": "Connexion vers le routeur R2" + } + ] +} diff --git a/TP-01/data/ESW2.yaml b/TP-01/data/ESW2.yaml new file mode 100644 index 0000000..04612e8 --- /dev/null +++ b/TP-01/data/ESW2.yaml @@ -0,0 +1,14 @@ +hostname: ESW2 +interfaces: + - name: f1/1 + mode: access + vlan_id: 10 + description: Connexion vers VPC3 + - name: f1/2 + mode: access + vlan_id: 20 + description: Connexion vers VPC4 + - name: f1/0 + mode: trunk + vlan_id: "10,20,99" + description: Connexion vers le routeur R2 diff --git a/TP-01/data/ESW4.yaml b/TP-01/data/ESW4.yaml new file mode 100644 index 0000000..f8a55b3 --- /dev/null +++ b/TP-01/data/ESW4.yaml @@ -0,0 +1,19 @@ +hostname: ESW4 +management: + ip_address: 172.16.100.253 + subnet: 255.255.255.192 + vlan: 99 + +interfaces: + - name: f1/1 + mode: access + vlan_id: 10 + description: Connexion vers VPC5 + - name: f1/2 + mode: access + vlan_id: 20 + description: Connexion vers VPC6 + - name: f1/0 + mode: trunk + vlan_id: "10,20,99" + description: Connexion vers le routeur R2 diff --git a/TP-01/data/R2.json b/TP-01/data/R2.json new file mode 100644 index 0000000..3323d70 --- /dev/null +++ b/TP-01/data/R2.json @@ -0,0 +1,19 @@ +{ +"hostname": "R2", +"interfaces": [ +{ + "name": "g0/0.10", + "description": "Gateway pour le reseau 172.16.30.0/24", + "ip": "172.16.30.254", + "mask": "255.255.255.0", + "vlan_id": "10" + }, + { + "name": "g0/0.20", + "description": "Gateway pour le reseau 172.16.40.0/24", + "ip": "172.16.40.254", + "mask": "255.255.255.0", + "vlan_id": "20" + } + ] +} \ No newline at end of file diff --git a/TP-01/data/R2.yaml b/TP-01/data/R2.yaml new file mode 100644 index 0000000..8c9c7e1 --- /dev/null +++ b/TP-01/data/R2.yaml @@ -0,0 +1,41 @@ +hostname: R2 +interfaces: + - name: g0/0 + description: Interface physique parent + ip: null + mask: null + + - name: g0/0.10 + description: Sous interface g0/0.10 + ip: 172.16.30.254 + mask: 255.255.255.0 + vlan_id: 10 + + - name: g0/0.20 + description: Sous interface g0/0.20 + ip: 172.16.40.254 + mask: 255.255.255.0 + vlan_id: 20 + + - name: g2/0 + description: Lien principal vers le switch ESW4 + ip: null + mask: null + + - name: g2/0.10 + description: Gateway pour le reseau 172.16.50.0 + ip: 172.16.50.254 + mask: 255.255.255.0 + vlan_id: 10 + + - name: g2/0.20 + description: Gateway pour le reseau 172.16.60.0 + ip: 172.16.60.254 + mask: 255.255.255.0 + vlan_id: 20 + + - name: g2/0.99 + description: Interface de gestion VLAN 99 + ip: 172.16.100.254 + mask: 255.255.255.192 + vlan_id: 99 diff --git a/TP-01/scripts/__main__.py b/TP-01/scripts/__main__.py index 0bb86f3..4443181 100644 --- a/TP-01/scripts/__main__.py +++ b/TP-01/scripts/__main__.py @@ -1,44 +1,51 @@ import json - +import yaml +from jinja2 import Template, Environment, FileSystemLoader +env = Environment(loader=FileSystemLoader("templates")) def load_json_data_from_file(file_path): - """ - A compléter .... - """ - pass + with open(file_path) as json_file: + data = json.load(json_file) + return data def load_yaml_data_from_file(file_path): - """ - A compléter .... - """ - pass + with open(file_path) as yaml_file: + data = yaml.safe_load(yaml_file) + return data def render_network_config(template_name, data): - """ - A compléter .... - """ - pass + template = env.get_template(template_name) + return template.render(data) def save_built_config(file_name, data): - """ - A compléter .... - """ - pass + with open(file_name, "w") as f: + f.write(data) + return file_name if __name__ == "__main__": #process R2 - # r2_data = load_json_data_from_file(file_path='data/R2.json') - # r2_config = render_network_config(template_name='R2.j2', data=r2_data) - # save_built_config('config/R2.conf', r2_config) + r2_data = load_json_data_from_file(file_path='data/R2.json') + esw2_data = load_json_data_from_file(file_path='data/ESW2.json') + #fichier_inconnu_data = load_json_data_from_file(file_path='data/file-unknown.json') + #print(r2_data) + r2_config = render_network_config(template_name='R2.j2', data=r2_data) + save_built_config('config/R2.conf', r2_config) #process ESW2 - # esw2_data = load_json_data_from_file(file_path='data/ESW2.json') - # esw2_config = render_network_config(template_name='ESW2.j2', data=esw2_data) - # save_built_config('config/ESW2.conf', esw2_config) + esw2_data = load_json_data_from_file(file_path='data/ESW2.json') + esw2_config = render_network_config(template_name='ESW2.j2', data=esw2_data) + save_built_config('config/ESW2.conf', esw2_config) + r2_data_yaml = load_yaml_data_from_file(file_path='data/R2.yaml') + r2_config_yaml = render_network_config(template_name='R2.j2', data=r2_data_yaml) + save_built_config('config/R2_from_yaml.conf', r2_config_yaml) + + esw2_data_yaml = load_yaml_data_from_file(file_path='data/ESW2.yaml') + esw2_config_yaml = render_network_config(template_name='ESW2.j2', data=esw2_data_yaml) + save_built_config('config/ESW2_from_yaml.conf', esw2_config_yaml) pass \ No newline at end of file diff --git a/TP-01/scripts/__pycache__/__main__.cpython-312.pyc b/TP-01/scripts/__pycache__/__main__.cpython-312.pyc new file mode 100644 index 0000000..4b4e768 Binary files /dev/null and b/TP-01/scripts/__pycache__/__main__.cpython-312.pyc differ diff --git a/TP-01/templates/ESW2.j2 b/TP-01/templates/ESW2.j2 new file mode 100644 index 0000000..ae9b435 --- /dev/null +++ b/TP-01/templates/ESW2.j2 @@ -0,0 +1,22 @@ +hostname {{ hostname }} + +! Configuration des interfaces +{% for interface in interfaces %} +interface {{ interface.name }} + description {{ interface.description }} +{% if interface.mode == "access" %} + switchport mode access + switchport access vlan {{ interface.vlan_id }} +{% elif interface.mode == "trunk" %} + switchport mode trunk + switchport trunk allowed vlan add {{ interface.vlan_id }} +{% endif %} + no shutdown +{% endfor %} +{% if management is defined %} +! Configuration de l'IP de management +interface vlan {{ management.vlan }} + ip address {{ management.ip_address }} {{ management.subnet }} + no shutdown +{% endif %} +end \ No newline at end of file diff --git a/TP-01/templates/R2.j2 b/TP-01/templates/R2.j2 new file mode 100644 index 0000000..ba4e961 --- /dev/null +++ b/TP-01/templates/R2.j2 @@ -0,0 +1,9 @@ +hostname {{ hostname }} +{% for interface in interfaces %} +interface {{ interface.name }} + description {{ interface.description }} + ip address {{ interface.ip }} {{ interface.mask }} + encapsulation dot1Q {{ interface.vlan_id }} + no shutdown +{% endfor %} +end \ No newline at end of file diff --git a/TP-01/test.py b/TP-01/test.py new file mode 100644 index 0000000..6d95fe9 --- /dev/null +++ b/TP-01/test.py @@ -0,0 +1 @@ +print("Hello world") \ No newline at end of file