Bonjour,
Le script qui suit est particulier, car il ne s'agit pas d'un script de connexion présent sur un serveur.
En effet, le philosophie et la méthode sont inversées. Il s'agit d'un script de connexion de client vers un serveur.
Ca ressemble donc au système de connexion/déconnexion de lecteur réseau de Windows [Outils > (Dé)Connecter un lecteur réseau]
Cependant, le système précédent à l'inconvénient qu'il garde en mémoire les connexions réseau tant qu'on ne ferme pas la session ou que l'on ne redémarre pas.
En effet, cela est du à une variables "SaveConnection?" dans la base de registre du client...
Seule l'utilisation de net use permet alors une connexion ou une déconnexion propre d'un serveur.
Le problème de la mémorisation est le suivant :
Si un utilisateur veut se connecter sur un partage différent avec une identité différente, sur un même serveur, après s'être déconnecté, il ne peut pas; A moins d'avoir fermé sa session ou après avoir redémarré.
Voici donc mon script qui se lance par un petit script bat.
CoDeco.cmd
- Code: Tout sélectionner
cscript lightconnect.vbs
L'utilisation du fichier précédent et de cscript me permet d'avoir un mot de passe qui n'est pas en clair dans une inputbox ou dans une textbox dans un formulaire hta/htm/html...
lightconnect.vbs- Code: Tout sélectionner
'Petit script de connexion, sur choix de l'utilisateur.
'Declaration des variables
Dim WshShell
Dim CoDeco
Dim objPassword
Dim oFSO1
'Initialisations des variables
Set WshShell = WScript.CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objPassword = CreateObject("ScriptPW.Password")
CoDeco = inputbox("Que voulez vous faire : "&vbCRLF &vbCRLF &_
" C - Vous connecter" &vbCRLF &vbCRLF &_
" ou" &vbCRLF &vbCRLF &_
" D - vous Déconnecter ?" &vbCRLF &vbCRLF &_
" ! Attention ! Vous ne pouvez pas vous connecter simultanément sur un même serveur" &vbCRLF &_
" avec deux identités différentes", "Se connecter ou se Déconnecter[C]/[D]")
'Choix de l'utilisateur
Select Case UCase(CoDeco)
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''' CONNEXION ''''''''''''''''''''''''''''''''''
Case "C"
Lecteur = inputbox("Choisissez une lettre inutilisée pour votre lecteur réseau :" , "Lettre")
If objFSO.DriveExists(Lecteur) = TRUE Then
MsgBox("Cette lettre est déjà utilisée" &vbCRLF &_
"Veuillez recommencer !")
wscript.quit
End If
Serveur = inputbox("Entrez un nom de serveur ou son adresse IP :" &vbCRLF &_
" Sinon, tapez" &vbCRLF &vbCRLF &_
" '1' - pour Serveur1" &vbCRLF &vbCRLF &_
" ou" &vbCRLF &vbCRLF &_
" '2' - pour Serveur2", "Serveur")
If Serveur = "1" Then Serveur = "IP_du_serveur1" End If
If Serveur = "2" Then Serveur = "IP_du_serveur2" End If
Partage = inputbox("Entrez le nom du partage -tapez X pour lister les partages de ce serveur:" , "Partage")
If UCase(Partage) = "X" And Serveur <> "" Then
WshShell.Run("cmd /c net view \\" & Serveur & " > C:\netview.txt")
Set oFSO1 = objFSO.GetFile("C:\netview.txt")
' On attend que le fichier soit écrit/écrasé
wscript.sleep(500)
' wscript.echo oFSO1.size
If oFSO1.size = 0 Then
MsgBox("Votre serveur n'existe pas ou ne peut pas être contacté !!" & vbCRLF &_
"- (Serveur1 et Serveur2 ne peuvent pas être visualisés de cette sorte)")
Else
MsgBox (" Les éléments partagés de ce serveur sont listés dans 'C:\netview.txt'. " & vbCRLF &_
" Vous pouvez désormais relancer le script et rentrer le partage que vous souhaitez" & vbCRLF &_
" à partir des informations de ce fichier.")
End If
Else If Serveur = "" Then
MsgBox ("Vous devez obligatoirement rentrer un nom de serveur " & vbCRLF &_
"ou une adresse IP !!!")
Else
User = inputbox("Entrez votre nom d'utilisateur :" , "Utilisateur")
'''' Commenté car en clair
'Pass = inputbox("Entrez votre mot de passe :" , "Mot de passe")
'Par cscript
WScript.StdOut.Write "Entrez votre mot de passe :"
Pass = objPassword.GetPassword()
''''Vérifions que le mot de passe a été récupéré
''''Wscript.Echo vbCRLF & "mot de passe : " & Pass & vbCRLF
'On se connecte
WshShell.Run "cmd /c net use " & Lecteur &": \\" & Serveur & "\" & Partage &" /USER:"& User &" "& Pass
End If
End If
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''' Déconnexion '''''''''''''''''''''''''''''
Case "D"
Lecteur=inputbox("Choisissez le lecteur à déconnecter", "Lettre")
WshShell.Run "cmd /c net use /d " & Lecteur &":"
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Case Else
MsgBox("Mauvais choix, veuillez recommencer ! 'C' pour vous connecter et 'D' pour vous déconnecter")
End Select
WScript.echo vbCRLF & vbCRLF & "Fin de traitement"
Vous noterez la présence d'un "net view" pour le fun.
Il se peut que je me trompe sur le mécanisme de gestion des connexions réseau Microsoft, dans ce cas, merci par avance de m'éclaircir. De toute manière la réalisation de ce script ne m'aura pas servi à rien, puisque ça m'a rafraichit la mémoire pour la prog en vbscript.