|
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 (maba11@gmail.com) |
| 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