Migration des imprimantes
Lors du début de ma seconde année de travail à l’AGPM, un gros projet s’est mis en place. Il s’agissait de remplacer 40 imprimantes par seulement 12 imprimantes qui marchent via le réseau ainsi qu’avec notre badge d’accès.
À mon travail chaque porte s’ouvre avec un badge, ce même badge nous sert maintenant à s’identifier sur les nouvelles imprimantes. Cela est possible car l’ID du badge est relié à l’AD via papercut, l’application qui sert à gérer les nouvelles imprimantes.
La nouvelle grosse fonctionnalité est le fait de pouvoir s’identifier sur n’importe quelle imprimante et donc, de pouvoir lancer une impression et de pouvoir la récupérer dans n’importe quels des trois bâiments présents à n’importe quels étages.
Sur ces imprimantes il y a aussi la fonction de pouvoir scanner et directement envoyer depuis le mail de quelqu’un du groupe AGPM, sauf qu’il faut que ces emails soient une première fois enregistrées dans l’application PaperCut.
C’est alors que mon tuteur m’a demandé d’exporter tous les carnets d’adresses des anciennes imprimantes pour pouvoir les importer sur les nouvelles via PaperCut. Mais faire ça à la main me semblait trop long, j’ai alors pris l’initiative de le faire automatiquement via un script.
Voici comment j’ai fait :
J’ai donc créé un script Python qui automatise cette tâche avec selenium Web Driver :
Mon script est composé de 6 variables importante pour le bon fonctionnement du script, la variable printer_ip dans laquelle je vais préciser l’IP de mon imprimante.
La variable chrome_driver_path est le chemin où est installé mon chromedriver.exe.
Download_path est la où les résultats téléchargés seront stockés.
Login_url est la variable qui va préciser l’URL de login en utilisant la variable printer_ip exemple : login_url = https://{printer_ip}/hp/device/SignIn/Index Et mes deux dernières variables address_book_url et export_url, la première va renseigner l’URL où se trouve les carnets d’adresses toujours en utilisant la variable printer_ip et de même pour la variable export_url qui elle se rendra sur la page d’export, et cliquera automatiquement sur tous les boutons pour télécharger les carnets d’adresses.
Lorsque ma variable login_url s’exécutera une fonction se lancera pour envoyer le MDP dans la case mot de passe, c’est possible car je précise l’ID de la case que j’ai récupéré dans le code du site « By.ID, “PasswordTextBox” ». C’est le même fonctionnement pour télécharger les carnets d’adresses : je simule un clique de souris dans la case « Tous les carnets d’adresses » et « Exporter » en récupérant les ID et en les rentrant dans mon code
Quelques options en plus : J’ai dû préciser quelques fonctions en plus pour que cela marche sans soucis, dans laquelle je précise que ChromeDriver devait ignorer les erreurs de certificats quelconques et d’ignorer le message d’erreur qui nous prévient qu’il n’y a pas de certificat SSL sur le site, sinon c’était bloqué dès qu’on arrivait sur la page des imprimantes HP.
À mon travail chaque porte s’ouvre avec un badge, ce même badge nous sert maintenant à s’identifier sur les nouvelles imprimantes. Cela est possible car l’ID du badge est relié à l’AD via papercut, l’application qui sert à gérer les nouvelles imprimantes.
La nouvelle grosse fonctionnalité est le fait de pouvoir s’identifier sur n’importe quelle imprimante et donc, de pouvoir lancer une impression et de pouvoir la récupérer dans n’importe quels des trois bâiments présents à n’importe quels étages.
Sur ces imprimantes il y a aussi la fonction de pouvoir scanner et directement envoyer depuis le mail de quelqu’un du groupe AGPM, sauf qu’il faut que ces emails soient une première fois enregistrées dans l’application PaperCut.
C’est alors que mon tuteur m’a demandé d’exporter tous les carnets d’adresses des anciennes imprimantes pour pouvoir les importer sur les nouvelles via PaperCut. Mais faire ça à la main me semblait trop long, j’ai alors pris l’initiative de le faire automatiquement via un script.
Voici comment j’ai fait :
J’ai donc créé un script Python qui automatise cette tâche avec selenium Web Driver :
Mon script est composé de 6 variables importante pour le bon fonctionnement du script, la variable printer_ip dans laquelle je vais préciser l’IP de mon imprimante.
La variable chrome_driver_path est le chemin où est installé mon chromedriver.exe.
Download_path est la où les résultats téléchargés seront stockés.
Login_url est la variable qui va préciser l’URL de login en utilisant la variable printer_ip exemple : login_url = https://{printer_ip}/hp/device/SignIn/Index Et mes deux dernières variables address_book_url et export_url, la première va renseigner l’URL où se trouve les carnets d’adresses toujours en utilisant la variable printer_ip et de même pour la variable export_url qui elle se rendra sur la page d’export, et cliquera automatiquement sur tous les boutons pour télécharger les carnets d’adresses.
Lorsque ma variable login_url s’exécutera une fonction se lancera pour envoyer le MDP dans la case mot de passe, c’est possible car je précise l’ID de la case que j’ai récupéré dans le code du site « By.ID, “PasswordTextBox” ». C’est le même fonctionnement pour télécharger les carnets d’adresses : je simule un clique de souris dans la case « Tous les carnets d’adresses » et « Exporter » en récupérant les ID et en les rentrant dans mon code
driver.get(export_url) checkbox = WebDriverWait(driver, 10).until( EC.element_to_be_clickable((By.ID, "AddressBookAll")) ) checkbox.click() export_button = WebDriverWait(driver, 10).until( EC.element_to_be_clickable((By.ID, "FormButtonExport")) ) export_button.click()
Quelques options en plus : J’ai dû préciser quelques fonctions en plus pour que cela marche sans soucis, dans laquelle je précise que ChromeDriver devait ignorer les erreurs de certificats quelconques et d’ignorer le message d’erreur qui nous prévient qu’il n’y a pas de certificat SSL sur le site, sinon c’était bloqué dès qu’on arrivait sur la page des imprimantes HP.
Voici une démonstration en vidéo :
Grâce à ça on a pu importer tous les carnets d’adresses sur les nouvelles imprimantes.
Une semaine après j’ai travaillé pendant 1 semaine en collaboration avec une équipe externe sur l’installation des nouvelles imprimantes et la configuration de celles-ci puis l’enrôlement des badges des utilisateurs sur les imprimantes.
Une semaine après j’ai travaillé pendant 1 semaine en collaboration avec une équipe externe sur l’installation des nouvelles imprimantes et la configuration de celles-ci puis l’enrôlement des badges des utilisateurs sur les imprimantes.
.
.
.