Skip navigation.

digital-nation

Blog-note d'un informaticien procrastinate...

Posts tagged with "imprimante"

Installation d’imprimante par script AutoIt

, , , ...

Dans un réseau d’entreprise, il n’est pas rare qu’on utilise encore les script en MS-DOS pour installer une imprimante. Cela se fait grâce à l’utilitaire Con2Prt.exe de Microsoft.

Il suffit alors de composer un petit script dans le style :
REM DEFINITION DES VARIABLES
SET PRTSRV=NOMSERVERIMPRESSION
SET PRTSRVBCK=NOMSERVERIMPRESSIONBACKUP
CHANGE CLIENT /DEFAULT_PRINTERS
REM SUPPRESSION IMPRIMANTE
%LOGONSERVER%\NETLOGON\CON2PRT.EXE /F
IF %CLIENTNAME%==NOMDELASTATION Goto NOMSIGNET
:AUTRES
%LOGONSERVER%\NETLOGON\CON2PRT.EXE /CD \\%PRTSRV%\NOMDEPARTAGE
GOTO END
:NOMSIGNET
%LOGONSERVER%\NETLOGON\CON2PRT.EXE /CD \\%PRTSRV%\NOMDEPARTAGE
GOTO END
:END

EXIT

Toutefois il y a moyen de faire cela plus sympathiquement : j’entend en AutoIt…
Passons en revue deux manières simples.
La première est d’utiliser similairement l’application CON2PRT.EXE de Microsoft, la seconde la DLL permettant l’installation d’une imprimante réseau : PRINTUI.DLL.

Vu que nous pouvons tout aussi bien utiliser le nom de la machine ou le nom d’utilisateur, et vu que j’ai déjà présenté dans le script MS-DOS que c’était le nom de la machine, changeons cela avec le nom d’utilisateur.
Décentralisons nos informations dans un fichier INI tel :
[SERVERS]
PRINTSERVER=NomDuServerImpression
LOGONSERVER=LogonServer
[USERNAME]
GROUMPHY=Imprimante1|Imprimante2
GROUMPHY2=0

Groumphy et Groumphy2 sont les noms d’utilisateurs standards…
Enregistrons ce fichier.
Commençons par définir ce fichier en variable.
Global Const $s_INI = "InstImpNetLogon.ini"

Si nous utilisons CON2PRT.EXE rajoutons pourquoi pas :
Global Const $s_C2P = "con2prt.exe"

Rajoutons une structure pour pouvoir vérifier la présence de nos fichiers nécessaire :
Func _test()
            If NOT FileExists(@ScriptDir & "\" & $s_INI) Then _error($s_INI)
            If NOT FileExists(@ScriptDir & "\" & $s_C2P) Then _error($s_C2P)
EndFunc
Func _error($param1)
            MsgBox(0 + 16, "Error", "Fatal Error. Application 'Core' File Not Found." & @CR & _
                                                                                  "Error Code : " & @ScriptLineNumber & @CR & _
                                                                                  "File Code : " & $param1 & " not found." & @CR & @CR & _
                                                                                  "Please contact your System Administrator",10)
            Exit
EndFunc

Avant de commencer il est bon de supprimer toutes les imprimantes (identiquement à notre script MS-DOS).
Func _deletePrt()
            RunWait(@ScriptDir & "\" & $s_C2P & " /f")
EndFunc

Et de poser les variables :
Global Const $s_PrtServer = IniRead($s_INI, "SERVERS", "PRINTSERVER", "")
Global Const $s_LogonServer = IniRead($s_INI, "SERVERS", "LOGONSERVER", "")
Dim $s_UserName, $s_iniRead, $s_Compteur
            $s_UserName = @UserName
            $s_iniRead = IniRead($s_INI, "USERNAME", $s_UserName, "")
            $s_iniRead = StringSplit($s_iniRead, "|")

Parfais. La structure de base est en place.
Comme vous pouvez le constater dans le fichier INI j’ai mis « 0 » pour l’utilisateur Groumphy2. « 0 » m’indique que je ne dois pas installer d’imprimante.
Faisons une petite structure conditionnelle de ce type alors :
If $s_iniRead[1] = 0 Then
            MsgBox(0 + 64, "Information", "No printers to install... Exit of script.", 10)
            Exit
EndIf

Mais si nous devons installer des imprimantes, il nous faut une boucle permettant de faire cela :
$s_Compteur = 0
Do
            $s_Compteur = $s_Compteur + 1
            _installPrt($s_iniRead[$s_Compteur])
Until $s_Compteur = $s_iniRead[0]

Dans cette boucle, j’appele la function _installPrt que voiçi :
Func _installPrt($param2)
            RunWait("\\" & $s_LogonServer & "\" & $s_C2P & " /c " & "\\" & $s_PrtServer & "\" & $param2)
EndFunc

Et il ne faut rien de plus.

Pour maintenant rajouter un nouvel utilisateur nous n’aurons plus qu’à changer le fichier INI.

Nous avons aussi la possibilité de définir l’imprimante par défaut. Pour ce faire il suffit de rajouter une structure conditionnelle dans la fonction _installPrt pour que la première imprimante prise dans la zone de mémoire soit celle par défaut (installable avec /CD en place de /C).

Pour installer l’imprimante avec PRINTUI.DLL nous ferons exactement de même… Sauf que nous aurons la commande suivante :
$comm = RunWait("rundll32 printui.dll,PrintUIEntry /in /q /n\\" & $s_PrtServer & "\" & $param2, "", @SW_HIDE)


Plus simple, nous ne pouvons le faire. Cela fonctionne correctement en pratique…

Droits d'utilisation ?

, , , ...

Petite précision sur une démarche de travail... Mais fallais-t-il vraiment ?

Lorsque l'on parle de PC d'entreprise, il est rare que l'on ne voie pas appliqué des polices de sécurités ou de restrictions groupes, locales etc. (vulgarison en GPO) afin d'orienter l'utilisateur (l'employé) à ne se concentrer que sur le travail qui lui est donné et d'éviter toute source de distraction.

Cependant, je pense que les GPO sont aussi un excellent moyen de diminuer les appels vers un service de support (Hotline, Helpdesk, ...) car elles maintiennent une homogénité dans les sécurités (rôle primaire) et dans la conduite de l'utilisateur (restriction de programme, de site, de droits).

Ces limitations ne sont pas faites dans le but de nuire a l'utilisateur mais bien afin d'augmenter la productivité des services d'entreprises, de l'informatique en général et d'assurer une stabilité du système.

Cette dernière se fait en deux parties : la sécurité des postes clients du réseaux (stratégies locale), la sécurité du réseau (stratégies de groupes). Les GPO ne sont donc pas que réservées à un haut niveau d'administration ou de sécurité mais concerne bien tous les postes d'un système informatique partant du serveur d'application au poste client en passant par les imprimantes.

Mais comme dit plus haut, fallais-t-il encore le préciser ?

Installation imprimante

, , , ...

Un petit truc que j'utilise pour installer une imprimante à distance dans un réseau sous Linux.
Ouvrir un terminal et taper la commande suivante :
USER_LOGIN@LOCAL_PC:/mon_repertoire/mon_username> ssh -xc LOGIN_ROOT@IP_ADRESS

Bien entendu LOGIN_ROOT est remplacé par l'utilisateur ROOT et IP_ADRESS par l'adresse IP de la machine distante. Faire Enter par la suite.
Il y a ensuite une demande de mot de passe, c'est celui de l'utilisateur ROOT. Introduisez-le et faite à nouveau Enter.
Par la suite vous arrivez sur le PROMPT ROOT sur la machine distante où il faut encoder la commande suivante :
LOGIN_ROOT@REMOTE_PC:~> sudo kcmshell printmgr

Faire à nouveau Enter. L'interface du gestionnaire d'imprimante distant apparait. Il suffit par la suite de cliquer le menu Ajouter et le tour est joué !
December 2009
M T W T F S S
November 2009January 2010
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31