|
1 | 1 | #!/usr/bin/python3
|
2 | 2 | # -*- coding: utf8 -*-
|
3 |
| - |
4 |
| - |
5 |
| -# Python Network script : |
6 |
| -# |
7 |
| -# Change DB creds before launch : |
| 3 | +# |
| 4 | +# Python Script Install Differents Packages : |
| 5 | +# Made in France by Mazzilli Baptiste ([email protected]) |
| 6 | +# Created and Tested in Python3.9 on Ubuntu Server v.20.04.2 LTS |
8 | 7 | #
|
9 | 8 | # Import Plugins for Bash commands, Apt Package, MYSQL Query:
|
10 | 9 | import subprocess
|
11 |
| -import apt |
12 | 10 | import mysql.connector
|
13 |
| - |
14 |
| -# Cache from APT Package |
15 |
| -cache = apt.Cache() |
16 |
| - |
17 |
| -# Print Instructions at launch : |
| 11 | +# Print Instructions at launch (Main Menu) : |
18 | 12 | print()
|
19 | 13 | print("Lancement Programme Installation Réseau en cours ...")
|
20 | 14 | print()
|
|
26 | 20 | print()
|
27 | 21 | print("4 - Installer un Routeur (DHCP - DNS - NTP - Network Forwarding)")
|
28 | 22 | print()
|
29 |
| -print("5 - Installer un Serveur VPN (OpenVPN)") |
| 23 | +print("5 - Installer un Serveur LDAP (OpenLDAP)") |
30 | 24 | print()
|
31 | 25 | print("6 - Quitter le Script")
|
32 | 26 | print()
|
33 |
| - |
34 |
| -# Asking user what he wants to do (Main Menu): |
35 |
| -user_answer = input("Que voulez-vous faire ? (1, 2, 3, 4, 5, 6) : ") |
36 |
| - |
| 27 | +# String User Answer : |
| 28 | +user_answer = ("Que voulez-vous faire ? (1, 2, 3, 4, 5, 6) : ") |
| 29 | +# While user doesn't choose answer 1 or 2 or 3 or 4 or 5 or 6, display input "user_answer" : |
| 30 | +while user_answer != "1" and user_answer != "2" and user_answer != "3" and user_answer != "4" and user_answer != "5" and user_answer != "6": |
| 31 | +# Asking user what he wants to do (Main Menu) : |
| 32 | + user_answer = input("Que voulez-vous faire ? (1, 2, 3, 4, 5, 6) : ") |
37 | 33 | # If Statements for Menu Options :
|
| 34 | +# Choice N°1 : Install Web Server (Apache or NginX Package) : |
38 | 35 | if user_answer == "1":
|
39 | 36 | print()
|
40 | 37 | user_answer_web = input("Quel serveur Web voulez-vous installer ? (1 = Apache / 2 = NginX) : ")
|
|
51 | 48 | subprocess.call(["clear"])
|
52 | 49 | subprocess.call(["sudo", "apt-get", "install", "apache2", "-y"])
|
53 | 50 | print()
|
54 |
| - print("Apache installé avec succès !") |
| 51 | + print("Serveur Apache installé avec succès !") |
55 | 52 | print()
|
56 | 53 | elif user_answer_web =="2":
|
57 | 54 | print()
|
|
66 | 63 | subprocess.call(["clear"])
|
67 | 64 | subprocess.call(["sudo", "apt-get", "install", "nginx", "-y"])
|
68 | 65 | print()
|
69 |
| - print("NginX installé avec succès !") |
| 66 | + print("Serveur NginX installé avec succès !") |
70 | 67 | print()
|
71 | 68 | else:
|
72 | 69 | print()
|
73 | 70 | print("Choisissez une option d'installation valide . Fermeture du script ...")
|
74 | 71 | print()
|
| 72 | +# Choice N°2 : Install Wordpress Server (LAMP : Apache - MariaDB - PHP) : |
75 | 73 | elif user_answer == "2":
|
76 | 74 | print()
|
77 |
| - user_answer_web = input("Voulez-vous installer un serveur Wordpress sur une base LAMP ? (1 = Oui / 2 = Non) : ") |
78 |
| - if user_answer_web =="1": |
79 |
| - print() |
80 |
| - print("Installation du serveur Wordpress en cours ... ") |
81 |
| - print() |
82 |
| - print("Mises à Jour en cours ... ") |
83 |
| - print() |
84 |
| - subprocess.call(["sudo", "apt-get", "update"]) |
85 |
| - subprocess.call(["sudo", "apt-get", "upgrade", "-y"]) |
86 |
| - subprocess.call(["sudo", "apt-get", "dist-upgrade", "-y"]) |
87 |
| - subprocess.call(["sudo", "apt-get", "autoremove", "-y"]) |
88 |
| - subprocess.call(["clear"]) |
89 |
| - subprocess.call(["sudo", "apt-get", "install", "apache2", "php7.4-fpm", "php7.4-mysql", "mariadb-server", "-y"]) |
90 |
| - subprocess.call(["sudo", "a2enmod", "proxy_fcgi", "setenvif"]) |
91 |
| - subprocess.call(["sudo", "a2enconf", "php7.4-fpm"]) |
92 |
| - subprocess.call(["sudo", "systemctl", "restart", "apache2"]) |
93 |
| - print() |
94 |
| - print("Packets Wordpress installé avec succès !") |
95 |
| - print() |
96 |
| - print("Configuration des services Web ... ") |
97 |
| - print() |
98 |
| - print("Création et configuration de la base de données ...") |
99 |
| -# Database Connection and Queriess : |
100 |
| - db_connection = mysql.connector.connect( |
101 |
| - host= "localhost", |
102 |
| - user= "wordpressuser", |
103 |
| - passwd= "wordpresspassword" |
104 |
| - ) |
105 |
| - db_cursor = db_connection.cursor() |
106 |
| - print() |
107 |
| - db_cursor.execute("CREATE DATABASE wordpressdb") |
108 |
| - db_cursor.execute("CREATE USER 'wordpressuser'@'localhost' IDENTIFIED BY 'wordpresspassword'") |
109 |
| - db_cursor.execute("GRANT ALL PRIVILEGES ON * . * TO 'wordpressuser'@'localhost'") |
110 |
| - db_cursor.execute("FLUSH PRIVILEGES") |
111 |
| - print("Base de données & Utilisateur crées avec succès !") |
112 |
| - print() |
113 |
| - print("Identifiants créers par défault, à changer immédiatement :") |
114 |
| - print() |
115 |
| - print() |
116 |
| - print("Nom de la Base de Données : wordpressdb") |
117 |
| - print() |
118 |
| - print("Utilisateur de la Base de Données : wordpressuser") |
119 |
| - print() |
120 |
| - print("Mot de passe de la Base de Données : wordpresspassword") |
121 |
| - print() |
122 |
| - print() |
123 |
| - print("Suppression du fichier de configuration Apache par défaut ...") |
124 |
| - subprocess.call(["sudo", "rm", "-rif", "/var/www/html/index.html"]) |
125 |
| - print() |
126 |
| - print("Téléchargement de l'archive Wordpress en cours ...") |
127 |
| - print() |
128 |
| - subprocess.call(["wget", "-q", "-c", "http://wordpress.org/latest.tar.gz"]) |
129 |
| - print("Extraction et déplacement de l'archive en cours ...") |
130 |
| - subprocess.call(["tar", "-xzvf", "/home/user1/latest.tar.gz", ">>", "/dev/null"]) |
131 |
| - subprocess.call(["tar", "-xzf", "latest.tar.gz"]) |
132 |
| - subprocess.call(["sudo", "mv", "wordpress/*", "/var/www/html/"]) |
133 |
| - print() |
134 |
| - print("Extraction et Déplacement des fichiers Wordpress terminés !") |
135 |
| - print() |
136 |
| - print("Vous pouvez maintenant configurer votre Site Wordpress depuis votre navigateur Internet !") |
137 |
| - print() |
138 |
| - elif user_answer_web =="2": |
139 |
| - print() |
140 |
| - print("Annulation de l'installation du site Wordpress. Retour au menu ... ") |
141 |
| - print() |
142 |
| - else: |
143 |
| - print() |
144 |
| - print("Choisissez une option d'installation valide . Fermeture du script ...") |
145 |
| - print() |
| 75 | + print("Installation du serveur Wordpress en cours ... ") |
| 76 | + print() |
| 77 | + print("Mises à Jour en cours ... ") |
| 78 | + print() |
| 79 | + subprocess.call(["sudo", "apt-get", "update"]) |
| 80 | + subprocess.call(["sudo", "apt-get", "upgrade", "-y"]) |
| 81 | + subprocess.call(["sudo", "apt-get", "dist-upgrade", "-y"]) |
| 82 | + subprocess.call(["sudo", "apt-get", "autoremove", "-y"]) |
| 83 | + subprocess.call(["clear"]) |
| 84 | + subprocess.call(["sudo", "apt-get", "install", "apache2", "php7.4-fpm", "php7.4-mysql", "mariadb-server", "-y"]) |
| 85 | + subprocess.call(["sudo", "a2enmod", "proxy_fcgi", "setenvif"]) |
| 86 | + subprocess.call(["sudo", "a2enconf", "php7.4-fpm"]) |
| 87 | + subprocess.call(["sudo", "systemctl", "restart", "apache2"]) |
| 88 | + subprocess.call(["clear"]) |
| 89 | + print() |
| 90 | + print("Packets Web installés avec succès !") |
| 91 | + print() |
| 92 | + print("Configuration des services Web ... ") |
| 93 | + print() |
| 94 | + print("Création et configuration de la base de données ...") |
| 95 | + print() |
| 96 | + user_answer_db_name = input ("Quel nom pour la base de données Wordpress ? : ") |
| 97 | + print() |
| 98 | + user_answer_db_user = input ("Quel nom d'utilisateur pour la base de données Wordpress ? : ") |
| 99 | + print() |
| 100 | + user_answer_db_password = input ("Quel mot de passe de l'utilisateur pour la base de données Wordpress ? : ") |
| 101 | + print() |
| 102 | +# Database Queries : |
| 103 | + db_connection = mysql.connector.connect( |
| 104 | + host= "localhost", |
| 105 | + user= "user1", |
| 106 | + passwd= "password1" |
| 107 | + ) |
| 108 | + db_cursor = db_connection.cursor() |
| 109 | + db_cursor.execute("CREATE DATABASE {}".format(user_answer_db_name)) |
| 110 | + db_cursor.execute("CREATE USER '{}'@localhost".format(user_answer_db_user)) |
| 111 | + db_cursor.execute("GRANT ALL ON wordpressdb.* TO'{}'".format(user_answer_db_user)) |
| 112 | + print("Base de données & Utilisateur crées avec succès !") |
| 113 | + print() |
| 114 | + print("Suppression du fichier de configuration Apache par défaut ...") |
| 115 | + subprocess.call(["sudo", "rm", "-rif", "/var/www/html/index.html"]) |
| 116 | + print() |
| 117 | + print("Téléchargement de l'archive Wordpress en cours ...") |
| 118 | + print() |
| 119 | + subprocess.call(["wget", "-q", "-c", "http://wordpress.org/latest.tar.gz"]) |
| 120 | + print("Extraction et déplacement de l'archive en cours ...") |
| 121 | + subprocess.call(["tar", "-xzf", "latest.tar.gz"]) |
| 122 | + subprocess.call(["sudo", "mv", "wordpress/*", "/var/www/html/"]) |
| 123 | + print() |
| 124 | + print("Extraction et Déplacement des fichiers Wordpress terminés.") |
| 125 | + print() |
| 126 | + print("Serveur Wordpress installé avec succès !") |
| 127 | + print() |
| 128 | + print("Vous pouvez maintenant configurer votre Site Wordpress depuis votre navigateur Internet !") |
| 129 | + print() |
| 130 | +# Choice N°3 : Install Files Server (NFS - SFTP Protocols) : |
146 | 131 | elif user_answer == "3":
|
147 | 132 | print()
|
148 |
| - user_answer_files = input("Voulez-vous installer un Serveur de fichiers ? (1 = NFS / 2 = SFTP / 3 = Retour au menu) : ") |
| 133 | + user_answer_files = input("Voulez-vous installer un Serveur de fichiers ? (1 = NFS / 2 = SFTP) : ") |
149 | 134 | if user_answer_files =="1":
|
150 | 135 | print()
|
151 | 136 | print("Installation d'un serveur de fichiers NFS en cours ... ")
|
|
176 | 161 | print()
|
177 | 162 | print("Serveur de fichiers SFTP installé avec succès !")
|
178 | 163 | print()
|
179 |
| - elif user_answer_files =="3": |
180 |
| - print() |
181 |
| - print("Annulation de l'installation du Serveur de fichiers. Retour au menu ... ") |
182 |
| - print() |
183 | 164 | else:
|
184 | 165 | print()
|
185 | 166 | print("Choisissez une option d'installation valide . Fermeture du script ...")
|
186 | 167 | print()
|
| 168 | +# Choice N°4 : Install "Router" Services (DHCP - DNS - NTP - Configuration of Network Cards) : |
187 | 169 | elif user_answer == "4":
|
188 | 170 | print()
|
189 |
| - user_answer_routeur = input("Voulez-vous installer un Pack Routeur ? (1 = Oui / 2 = Non) : ") |
190 |
| - if user_answer_routeur =="1": |
191 |
| - print() |
192 |
| - print("Installation d'un pack Routeur en cours ... ") |
193 |
| - print() |
194 |
| - print("Mises à Jour en cours ... ") |
195 |
| - print() |
196 |
| - subprocess.call(["sudo", "apt-get", "update"]) |
197 |
| - subprocess.call(["sudo", "apt-get", "upgrade", "-y"]) |
198 |
| - subprocess.call(["sudo", "apt-get", "dist-upgrade", "-y"]) |
199 |
| - subprocess.call(["sudo", "apt-get", "autoremove", "-y"]) |
200 |
| - subprocess.call(["clear"]) |
201 |
| - subprocess.call(["sudo", "apt-get", "install", "isc-dhcp-server", "-y"]) |
202 |
| - print() |
203 |
| - print("Serveur DHCP installé avec succès !") |
204 |
| - print() |
205 |
| - subprocess.call(["sudo", "apt-get", "install", "bind9", "-y"]) |
206 |
| - subprocess.call(["clear"]) |
207 |
| - print() |
208 |
| - print("Serveur DNS installé avec succès !") |
209 |
| - print() |
210 |
| - subprocess.call(["sudo", "apt-get", "install", "chrony", "-y"]) |
211 |
| - print() |
212 |
| - print("Serveur NTP installé avec succès !") |
213 |
| - print() |
214 |
| - print("Affichage des différentes sources choisis par le Serveur NTP ...") |
215 |
| - print() |
216 |
| - subprocess.call(["sudo", "chronyc", "sources"]) |
217 |
| - print() |
218 |
| - print("Serveur Routeur installé avec succès ! ") |
219 |
| - print() |
220 |
| - elif user_answer_routeur =="2": |
221 |
| - print() |
222 |
| - print("Annulation de l'installation du Service Routeur. Retour au menu ... ") |
223 |
| - print() |
224 |
| - else: |
225 |
| - print() |
226 |
| - print("Choisissez une option d'installation valide . Fermeture du script ...") |
227 |
| - print() |
| 171 | + print("Installation d'un pack Routeur en cours ... ") |
| 172 | + print() |
| 173 | + print("Mises à Jour en cours ... ") |
| 174 | + print() |
| 175 | + subprocess.call(["sudo", "apt-get", "update"]) |
| 176 | + subprocess.call(["sudo", "apt-get", "upgrade", "-y"]) |
| 177 | + subprocess.call(["sudo", "apt-get", "dist-upgrade", "-y"]) |
| 178 | + subprocess.call(["sudo", "apt-get", "autoremove", "-y"]) |
| 179 | + subprocess.call(["clear"]) |
| 180 | + subprocess.call(["sudo", "apt-get", "install", "isc-dhcp-server", "-y"]) |
| 181 | + print() |
| 182 | + print("Serveur DHCP installé avec succès !") |
| 183 | + print() |
| 184 | + subprocess.call(["sudo", "apt-get", "install", "bind9", "-y"]) |
| 185 | + print() |
| 186 | + print("Serveur DNS installé avec succès !") |
| 187 | + subprocess.call(["sudo", "apt-get", "install", "chrony", "-y"]) |
| 188 | + print() |
| 189 | + subprocess.call(["clear"]) |
| 190 | + print("Serveur NTP installé avec succès !") |
| 191 | + print() |
| 192 | + print("Affichage des différentes sources choisis par le Serveur NTP ...") |
| 193 | + print() |
| 194 | + subprocess.call(["sudo", "chronyc", "sources"]) |
| 195 | + print() |
| 196 | + print("Configuration du Serveur DHCP ...") |
| 197 | + print() |
| 198 | + subprocess.call(["sudo", "echo", "option domain-name ""home.lan"";", ">>", "/etc/dhcp/dhcpd.conf"]) |
| 199 | + subprocess.call(["sudo", "echo", "option domain-name-servers 9.9.9.9, 1.1.1.1;", ">>", "/etc/dhcp/dhcpd.conf"]) |
| 200 | + subprocess.call(["sudo", "echo", "authoritative;", ">>", "/etc/dhcp/dhcpd.conf"]) |
| 201 | + subprocess.call(["sudo", "echo", "default-lease-time 3600e;", ">>", "/etc/dhcp/dhcpd.conf"]) |
| 202 | + subprocess.call(["sudo", "echo", "max-lease-time 7200;", ">>", "/etc/dhcp/dhcpd.conf"]) |
| 203 | + subprocess.call(["sudo", "echo", "subnet 192.168.37.0 netmask 255.255.255.0 {", ">>", "/etc/dhcp/dhcpd.conf"]) |
| 204 | + subprocess.call(["sudo", "echo", " option routers 192.168.37.20;", ">>", "/etc/dhcp/dhcpd.conf"]) |
| 205 | + subprocess.call(["sudo", "echo", " option subnet-mask 255.255.255.0;", ">>", "/etc/dhcp/dhcpd.conf"]) |
| 206 | + subprocess.call(["sudo", "echo", " option domain-search ""home.lan"";", ">>", "/etc/dhcp/dhcpd.conf"]) |
| 207 | + subprocess.call(["sudo", "echo", " option domain-name-servers 1.1.1.1;", ">>", "/etc/dhcp/dhcpd.conf"]) |
| 208 | + subprocess.call(["sudo", "echo", " range 192.168.37.30 192.168.37.50;", ">>", "/etc/dhcp/dhcpd.conf"]) |
| 209 | + subprocess.call(["sudo", "echo", "}", ">>", "/etc/dhcp/dhcpd.conf"]) |
| 210 | + subprocess.call(["sudo", "sed", "-i", ""'s/INTERFACESv4=""/INTERFACESv4="ens37"/g'"", "/etc/default/isc-dhcp-server"]) |
| 211 | + print() |
| 212 | + print("Serveur Routeur installé avec succès ! ") |
| 213 | + print() |
| 214 | +# Choice N°5 : Install LDAP Server (OpenLDAP) : |
228 | 215 | elif user_answer == "5":
|
229 | 216 | print()
|
230 |
| - print("Installation du Service VPN") |
| 217 | + print("Installation d'un Serveur LDAP en cours ...") |
| 218 | + print() |
| 219 | + subprocess.call(["sudo", "apt-get", "update"]) |
| 220 | + subprocess.call(["sudo", "apt-get", "upgrade", "-y"]) |
| 221 | + subprocess.call(["sudo", "apt-get", "dist-upgrade", "-y"]) |
| 222 | + subprocess.call(["sudo", "apt-get", "autoremove", "-y"]) |
| 223 | + subprocess.call(["sudo", "apt-get", "install", "slapd", "ldap-utils", "-y"]) |
| 224 | + subprocess.call(["clear"]) |
| 225 | + print() |
| 226 | + print("Configuration de la base LDAP. Demande de mot de passe pour utilisateur Admin du Serveur LDAP") |
231 | 227 | print()
|
| 228 | + print("Affichage du DIT créer par LDAP") |
| 229 | + print() |
| 230 | + subprocess.call(["sudo", "ldapsearch", "-Q", "-L", "-Y", "EXTERNAL", "-H", "ldapi:///", "-b", "dc=entreprise,dc=com"]) |
| 231 | + print() |
| 232 | + print("Creation de 2 utilisateurs tests dans le DIT") |
| 233 | + print() |
| 234 | + subprocess.call(["sudo", "touch", "structure.ldif"]) |
| 235 | + subprocess.call(["sudo", "echo", "dn: ou=Personnes,dc=entreprise,dc=com", ">>", "structure.ldif"]) |
| 236 | + subprocess.call(["sudo", "echo", "objectclass: organizationalUnit", ">>", "structure.ldif"]) |
| 237 | + subprocess.call(["sudo", "echo", "ou: Personnes", ">>", "structure.ldif"]) |
| 238 | + subprocess.call(["sudo", "echo", "description: Employes de l entreprise", ">>", "structure.ldif"]) |
| 239 | + subprocess.call(["sudo", "echo", "dn: ou=Machines,dc=entreprise,dc=com", ">>", "structure.ldif"]) |
| 240 | + subprocess.call(["sudo", "echo", "objectclass: organizationalUnit", ">>", "structure.ldif"]) |
| 241 | + subprocess.call(["sudo", "echo", "ou: Machines", ">>", "structure.ldif"]) |
| 242 | + subprocess.call(["sudo", "echo", "description: Ordinateurs de l entreprise", ">>", "structure.ldif"]) |
| 243 | + subprocess.call(["sudo", "echo", "dn: cn=Marie Dupond,ou=Personnes,dc=entreprise,dc=com", ">>", "structure.ldif"]) |
| 244 | + subprocess.call(["sudo", "echo", "objectClass: inetOrgPerson", ">>", "structure.ldif"]) |
| 245 | + subprocess.call(["sudo", "echo", "givenName: Marie", ">>", "structure.ldif"]) |
| 246 | + subprocess.call(["sudo", "echo", "sn: Dupond", ">>", "structure.ldif"]) |
| 247 | + subprocess.call(["sudo", "echo", "cn: Marie Dupond", ">>", "structure.ldif"]) |
| 248 | + subprocess.call(["sudo", "echo", "uid: mariedupond", ">>", "structure.ldif"]) |
| 249 | + subprocess.call(["sudo", "echo", "userPassword: mdupond", ">>", "structure.ldif"]) |
| 250 | + subprocess.call(["sudo", "echo", "dn: cn=Marc Dupond,ou=Personnes,dc=entreprise,dc=com", ">>", "structure.ldif"]) |
| 251 | + subprocess.call(["sudo", "echo", "objectClass: inetOrgPerson", ">>", "structure.ldif"]) |
| 252 | + subprocess.call(["sudo", "echo", "givenName: Marc", ">>", "structure.ldif"]) |
| 253 | + subprocess.call(["sudo", "echo", "sn: Dupond", ">>", "structure.ldif"]) |
| 254 | + subprocess.call(["sudo", "echo", "cn: Marc Dupond", ">>", "structure.ldif"]) |
| 255 | + subprocess.call(["sudo", "echo", "uid: marcdupond", ">>", "structure.ldif"]) |
| 256 | + subprocess.call(["sudo", "echo", "userPassword: mdupond2", ">>", "structure.ldif"]) |
| 257 | + print() |
| 258 | + print("Mot de Passe utilisateur LDAP ?") |
| 259 | + print() |
| 260 | + subprocess.call(["sudo", "ldapadd", "-x", "-W", "-D", "“cn=admin,dc=entreprise,dc=com”", "-H", "ldapi://localhost", "-f", "structure.ldif"]) |
| 261 | + print() |
| 262 | + print("Affichage du DIT avec les Nouveaux Utilisateurs") |
| 263 | + print() |
| 264 | + subprocess.call(["sudo", "ldapsearch", "-Q", "-L", "-Y", "EXTERNAL", "-H", "ldapi:///", "-b", "dc=entreprise,dc=com"]) |
| 265 | + print() |
| 266 | + print("Serveur LDAP installé avec Succès !") |
| 267 | + print() |
| 268 | +# Choice N°6 : Closing Script : |
232 | 269 | elif user_answer == "6":
|
233 | 270 | print()
|
234 | 271 | print("Fermeture du script ...")
|
235 | 272 | print()
|
236 | 273 | else:
|
237 |
| - print() |
238 |
| - print("Choisissez une option valide. Fermeture du script ...") |
239 |
| - print() |
240 |
| - |
241 |
| - |
| 274 | + pass |
242 | 275 | # END
|
243 |
| -# |
|
0 commit comments