Connexion serveur

0/5 (3 avis)

Vue 12 917 fois - Téléchargée 1 501 fois

Description

Le code que je viens de poster permet à un utilisateur / administrateur de se connecter sur des partages de serveurs en identifiant la machine ainsi que le partage (share). L'utilisation est la plus simplifiée possible avec le nom d'utilisateur (en clair) et le mot de passe (apparaissant sous forme d'astérisques).
J'ai posté une aide la plus simple possible pour une utilisation la plus rapide possible.
Je suis ouvert à la critique constructive et je précise que c'est ma première réalisation en VB.
si vous avez des solutions pour perfectionner le code (qui en a besoin), je suis à l'écoute.

Source / Exemple :


Imports System
Imports System.IO
Imports System.Threading
Public Class Form1
    Private Function SetUp()
        Dim repcnxsrv As String
        Dim cfgcons As String
        Dim cfglist As String
        repcnxsrv = "C:\admintools\dispocheck"
        cfgcons = "C:\admintools\dispocheck\cfgconst.ini"
        cfglist = "C:\admintools\dispocheck\serverslist.ini"
        If Directory.Exists(repcnxsrv) = False Then
            Directory.CreateDirectory(repcnxsrv)
        End If
        If File.Exists(cfgcons) = False Then
            File.Create(cfgcons)
            MsgBox("Veuillez remplir les fichiers de configuration")
        End If
        If File.Exists(cfglist) = False Then
            File.Create(cfglist)
            MsgBox("Veuillez remplir les fichiers de configuration")
            Close()
        End If
    End Function
    Private Function connectServ(ByVal lettrelocale As String, ByVal serv As String, ByVal Share As String, ByVal Passwd As String, ByVal user As String)
        Try
            Dim LigneCommande As String, retour As Integer
            LigneCommande = "NET USE " & lettrelocale & ": \\" & serv & "\" & Share & " " & Passwd & " /USER:" & user & " /PERSISTENT:NO"
            retour = Shell(LigneCommande, AppWinStyle.Hide)
            Thread.Sleep(2000)
        Catch
            MsgBox("Connexion impossible")
        End Try
    End Function
    Private Function DisconnectServ(ByVal lettrelocale As String)
        Try
            Dim LigneCommande As String, retour As Integer
            LigneCommande = "NET USE " & lettrelocale & ": /DELETE"
            retour = Shell(LigneCommande, AppWinStyle.Hide)
            Thread.Sleep(2000)
        Catch
            MsgBox("Ne peut pas déconnecter le " & lettrelocale & " !")
        End Try
    End Function
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Call SetUp()
        Thread.Sleep(2000)
        Label6.Text = [String].Empty
        Label8.Text = [String].Empty
        Label11.Text = [String].Empty
        Label12.Text = [String].Empty
        Label14.Text = [String].Empty
        Label16.Text = [String].Empty
        My.Computer.FileSystem.DeleteFile("C:\admintools\dispocheck\suiviexploit.htm")
        ' Perfectionner à ce niveau pour utiliser le paramètre du fichier de constantes
        Call DisconnectServ("z")
        Thread.Sleep(1000)
        My.Computer.FileSystem.CopyFile("C:\admintools\dispocheck\sourcehtml.txt", "C:\admintools\dispocheck\suiviexploit.htm")
    End Sub
    ' ajout pour backgroundworker
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        BackgroundWorker1.RunWorkerAsync()
    End Sub
    ' ajout pour backgroundworker
    Private Sub backgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
        'While (True)
        Dim fsoIni As New System.Object
        Dim serv As String
        Dim share As String
        Dim lettrelocale As String
        Dim user As String
        Dim Passwd As String
        Dim rapport As Integer
        Dim seuil As Integer
        Dim disque As System.IO.DriveInfo
        Try
            Using sr = New StreamReader("C:\admintools\dispocheck\cfgconst.ini")
                Using sw As StreamWriter = New StreamWriter("C:\admintools\dispocheck\suiviexploit.txt")
                    Using scsv As StreamWriter = New StreamWriter("C:\admintools\dispocheck\suiviexploit.csv")
                        Using shtm As StreamWriter = New StreamWriter("C:\admintools\dispocheck\suiviexploit.htm")
                            Using cfgserv = New StreamReader("C:\admintools\dispocheck\serverslist.ini")
                                lettrelocale = sr.readline()
                                user = sr.readline()
                                Passwd = sr.readline()
                                seuil = sr.readline()
                                sw.Write(" Suivi des disponibilités des disques des serveurs" & vbCr)
                                sw.Write(" Exécution du programme : " & DateTime.Now & vbCr)
                                sw.WriteLine("--------------------------------------------------------------")
                                shtm.Write(" Suivi des disponibilités des disques des serveurs")
                                shtm.WriteLine("<br>")
                                shtm.Write(" Exécution du programme : " & DateTime.Now)
                                shtm.WriteLine("<br>")
                                shtm.WriteLine("--------------------------------------------------------------")
                                shtm.WriteLine("<br>")
                                scsv.Write(";" & DateTime.Now & vbCr)
                                'Label6.Text = [String].Empty
                                'Label8.Text = [String].Empty
                                'Label11.Text = [String].Empty
                                'Label12.Text = [String].Empty
                                Label14.Text = lettrelocale
                                Label16.Text = seuil
                                Label8.Text = DateTime.Now
                                While Not cfgserv.EndOfStream
                                    serv = cfgserv.ReadLine
                                    share = cfgserv.ReadLine
                                    If Len(serv) > 0 Then
                                        Call connectServ(lettrelocale, serv, share, Passwd, user)
                                        Thread.Sleep(1000)
                                        disque = My.Computer.FileSystem.GetDriveInfo(lettrelocale)
                                        'disque = My.Computer.FileSystem.GetDriveInfo("Z:\")
                                        rapport = Decimal.Round(((disque.TotalFreeSpace) / (disque.TotalSize)) * 100)
                                        'Label6.Text = [String].Empty
                                        'Label6.Text = serv & " - " & share & " : " & rapport & " %"
                                        If (rapport < seuil) Then
                                            sw.WriteLine(vbCr & " Alerte ! " & serv)
                                            sw.WriteLine(" Le disque a moins de " & seuil & " % de disponibilité >>> " & rapport & " %")
                                            sw.WriteLine(" Dispo : " & Decimal.Round((disque.TotalFreeSpace) / 1048576) & " Mo" & " / " & " Taille : " & Decimal.Round((disque.TotalSize) / 1073741824) & " Go" & vbCr)
                                            shtm.WriteLine("<br>")
                                            shtm.WriteLine(" Alerte ! " & serv)
                                            shtm.WriteLine("<br>")
                                            shtm.WriteLine(" Le disque a moins de " & seuil & " % de disponibilité >>> " & rapport & " %")
                                            shtm.WriteLine("<br>")
                                            shtm.WriteLine(" Dispo : " & Decimal.Round((disque.TotalFreeSpace) / 1048576) & " Mo" & " / " & "Taille : " & Decimal.Round((disque.TotalSize) / 1073741824) & " Go")
                                            shtm.WriteLine("<br>")
                                            shtm.WriteLine("<br>")
                                            scsv.WriteLine(serv & " - " & share & ";" & rapport & "%")
                                            'scsv.WriteLine(serv & ";" & share & ";" & rapport & "%")
                                            'scsv.WriteLine(serv & ";" & share & ";" & Decimal.Round((disque.TotalFreeSpace) / 1048576) & " Mo")
                                            Label6.Text = "Alerte ! " & serv & " - " & share & " : " & rapport & " %"
                                        Else
                                            sw.WriteLine(" " & serv & " / " & share & " / " & rapport & " %")
                                            shtm.WriteLine(" " & serv & " / " & share & " / " & rapport & " %")
                                            shtm.WriteLine("<br>")
                                            scsv.WriteLine(serv & " - " & share & ";" & rapport & "%")
                                            Label6.Text = serv & " - " & share & " : " & rapport & " %"
                                        End If
                                        Call DisconnectServ(lettrelocale)
                                        Thread.Sleep(1000)
                                    End If
                                End While
                                cfgserv.Close()
                            End Using
                            shtm.WriteLine("<br>")
                            shtm.WriteLine(" Fin des vérifications.")
                            shtm.WriteLine("</body>")
                            shtm.Close()
                        End Using
                        scsv.Close()
                    End Using
                    sw.WriteLine(vbCr & " Fin des vérifications.")
                    sw.Close()
                    Label11.Text = DateTime.Now
                    Label12.Text = "Fin de l'éxecution OK"
                    Label6.Text = [String].Empty
                End Using
                sr.Close()
            End Using
            Call DisconnectServ(lettrelocale)
            Thread.Sleep(1000)
            MsgBox("Fin de l'éxecution OK : voir les fichiers" & vbCr & vbCr & "C:\admintools\dispocheck\suiviexploit.txt" & vbCr & "C:\admintools\dispocheck\suiviexploit.htm" & vbCr & "C:\admintools\dispocheck\suiviexploit.csv" & vbCr)
        Catch
            MsgBox("Problème !!!")
        End Try
        ' ajout pour backgroundworker
        'End While
    End Sub
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        'BackgroundWorker1.CancelAsync()
        Dim lettrelocale As String
        Try
            Using sr = New StreamReader("C:\admintools\dispocheck\cfgconst.ini")
                lettrelocale = sr.readline()
                Call DisconnectServ(lettrelocale)
                sr.Close()
            End Using
        Catch
            MsgBox("Ne peut pas déconnecter le lecteur !")
        End Try
    End Sub
    'désactivé suite à message d'erreur : à perfectionner
    ' ajout pour backgroundworker
    'Private Sub Form1_FormClosed(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles MyBase.FormClosed
    '    BackgroundWorker1.CancelAsync()
    'End Sub
    'Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    '    MsgBox("Fin de l'éxecution OK : voir les fichiers" & vbCr & vbCr & "C:\admintools\dispocheck\suiviexploit.txt" & vbCr & "C:\admintools\dispocheck\suiviexploit.htm" & vbCr & "C:\admintools\dispocheck\suiviexploit.csv" & vbCr)
    'End Sub
End Class

Conclusion :


Les exceptions ne sont pas encore gérées selon leur type. J'y travaille mais pas assez vite car trop nouveau en VB.

Codes Sources

A voir également

Ajouter un commentaire Commentaires
cs_kariss Messages postés 1 Date d'inscription samedi 24 février 2007 Statut Membre Dernière intervention 28 février 2007
28 févr. 2007 à 21:13
Imports System
Imports System.IO
Imports System.Threading
Public Class Form1
Private Function SetUp()
Dim repcnxsrv As String
Dim cfgcons As String
Dim cfglist As String
repcnxsrv = "C:\admintools\dispocheck"
cfgcons = "C:\admintools\dispocheck\cfgconst.ini"
cfglist = "C:\admintools\dispocheck\serverslist.ini"
If Directory.Exists(repcnxsrv) = False Then
Directory.CreateDirectory(repcnxsrv)
End If
If File.Exists(cfgcons) = False Then
File.Create(cfgcons)
MsgBox("Veuillez remplir les fichiers de configuration")
End If
If File.Exists(cfglist) = False Then
File.Create(cfglist)
MsgBox("Veuillez remplir les fichiers de configuration")
Close()
End If
End Function
Private Function connectServ(ByVal lettrelocale As String, ByVal serv As String, ByVal Share As String, ByVal Passwd As String, ByVal user As String)
Try
Dim LigneCommande As String, retour As Integer
LigneCommande = "NET USE " & lettrelocale & ": \" & serv & "" & Share & " " & Passwd & " /USER:" & user & " /PERSISTENT:NO"
retour = Shell(LigneCommande, AppWinStyle.Hide)
Thread.Sleep(2000)
Catch
MsgBox("Connexion impossible")
End Try
End Function
Private Function DisconnectServ(ByVal lettrelocale As String)
Try
Dim LigneCommande As String, retour As Integer
LigneCommande = "NET USE " & lettrelocale & ": /DELETE"
retour = Shell(LigneCommande, AppWinStyle.Hide)
Thread.Sleep(2000)
Catch
MsgBox("Ne peut pas déconnecter le " & lettrelocale & " !")
End Try
End Function
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Call SetUp()
Thread.Sleep(2000)
Label6.Text = [String].Empty
Label8.Text = [String].Empty
Label11.Text = [String].Empty
Label12.Text = [String].Empty
Label14.Text = [String].Empty
Label16.Text = [String].Empty
My.Computer.FileSystem.DeleteFile("C:\admintools\dispocheck\suiviexploit.htm")
' Perfectionner à ce niveau pour utiliser le paramètre du fichier de constantes
Call DisconnectServ("z")
Thread.Sleep(1000)
My.Computer.FileSystem.CopyFile("C:\admintools\dispocheck\sourcehtml.txt", "C:\admintools\dispocheck\suiviexploit.htm")
End Sub
' ajout pour backgroundworker
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
BackgroundWorker1.RunWorkerAsync()
End Sub
' ajout pour backgroundworker
Private Sub backgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
'While (True)
Dim fsoIni As New System.Object
Dim serv As String
Dim share As String
Dim lettrelocale As String
Dim user As String
Dim Passwd As String
Dim rapport As Integer
Dim seuil As Integer
Dim disque As System.IO.DriveInfo
Try
Using sr = New StreamReader("C:\admintools\dispocheck\cfgconst.ini")
Using sw As StreamWriter = New StreamWriter("C:\admintools\dispocheck\suiviexploit.txt")
Using scsv As StreamWriter = New StreamWriter("C:\admintools\dispocheck\suiviexploit.csv")
Using shtm As StreamWriter = New StreamWriter("C:\admintools\dispocheck\suiviexploit.htm")
Using cfgserv = New StreamReader("C:\admintools\dispocheck\serverslist.ini")
lettrelocale = sr.readline()
user = sr.readline()
Passwd = sr.readline()
seuil = sr.readline()
sw.Write(" Suivi des disponibilités des disques des serveurs" & vbCr)
sw.Write(" Exécution du programme : " & DateTime.Now & vbCr)
sw.WriteLine("--------------------------------------------------------------")
shtm.Write(" Suivi des disponibilités des disques des serveurs")
shtm.WriteLine("
")
shtm.Write(" Exécution du programme : " & DateTime.Now)
shtm.WriteLine("
")
shtm.WriteLine("--------------------------------------------------------------")
shtm.WriteLine("
")
scsv.Write(";" & DateTime.Now & vbCr)
'Label6.Text = [String].Empty
'Label8.Text = [String].Empty
'Label11.Text = [String].Empty
'Label12.Text = [String].Empty
Label14.Text = lettrelocale
Label16.Text = seuil
Label8.Text = DateTime.Now
While Not cfgserv.EndOfStream
serv = cfgserv.ReadLine
share = cfgserv.ReadLine
If Len(serv) > 0 Then
Call connectServ(lettrelocale, serv, share, Passwd, user)
Thread.Sleep(1000)
disque = My.Computer.FileSystem.GetDriveInfo(lettrelocale)
'disque = My.Computer.FileSystem.GetDriveInfo("Z:")
rapport = Decimal.Round(((disque.TotalFreeSpace) / (disque.TotalSize)) * 100)
'Label6.Text = [String].Empty
'Label6.Text = serv & " - " & share & " : " & rapport & " %"
If (rapport < seuil) Then
sw.WriteLine(vbCr & " Alerte ! " & serv)
sw.WriteLine(" Le disque a moins de " & seuil & " % de disponibilité >>> " & rapport & " %")
sw.WriteLine(" Dispo : " & Decimal.Round((disque.TotalFreeSpace) / 1048576) & " Mo" & " / " & " Taille : " & Decimal.Round((disque.TotalSize) / 1073741824) & " Go" & vbCr)
shtm.WriteLine("
")
shtm.WriteLine(" Alerte ! " & serv)
shtm.WriteLine("
")
shtm.WriteLine(" Le disque a moins de " & seuil & " % de disponibilité >>> " & rapport & " %")
shtm.WriteLine("
")
shtm.WriteLine(" Dispo : " & Decimal.Round((disque.TotalFreeSpace) / 1048576) & " Mo" & " / " & "Taille : " & Decimal.Round((disque.TotalSize) / 1073741824) & " Go")
shtm.WriteLine("
")
shtm.WriteLine("
")
scsv.WriteLine(serv & " - " & share & ";" & rapport & "%")
'scsv.WriteLine(serv & ";" & share & ";" & rapport & "%")
'scsv.WriteLine(serv & ";" & share & ";" & Decimal.Round((disque.TotalFreeSpace) / 1048576) & " Mo")
Label6.Text = "Alerte ! " & serv & " - " & share & " : " & rapport & " %"
Else
sw.WriteLine(" " & serv & " / " & share & " / " & rapport & " %")
shtm.WriteLine(" " & serv & " / " & share & " / " & rapport & " %")
shtm.WriteLine("
")
scsv.WriteLine(serv & " - " & share & ";" & rapport & "%")
Label6.Text = serv & " - " & share & " : " & rapport & " %"
End If
Call DisconnectServ(lettrelocale)
Thread.Sleep(1000)
End If
End While
cfgserv.Close()
End Using
shtm.WriteLine("
")
shtm.WriteLine(" Fin des vérifications.")
shtm.WriteLine("")
shtm.Close()
End Using
scsv.Close()
End Using
sw.WriteLine(vbCr & " Fin des vérifications.")
sw.Close()
Label11.Text = DateTime.Now
Label12.Text = "Fin de l'éxecution OK"
Label6.Text = [String].Empty
End Using
sr.Close()
End Using
Call DisconnectServ(lettrelocale)
Thread.Sleep(1000)
MsgBox("Fin de l'éxecution OK : voir les fichiers" & vbCr & vbCr & "C:\admintools\dispocheck\suiviexploit.txt" & vbCr & "C:\admintools\dispocheck\suiviexploit.htm" & vbCr & "C:\admintools\dispocheck\suiviexploit.csv" & vbCr)
Catch
MsgBox("Problème !!!")
End Try
' ajout pour backgroundworker
'End While
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
'BackgroundWorker1.CancelAsync()
Dim lettrelocale As String
Try
Using sr = New StreamReader("C:\admintools\dispocheck\cfgconst.ini")
lettrelocale = sr.readline()
Call DisconnectServ(lettrelocale)
sr.Close()
End Using
Catch
MsgBox("Ne peut pas déconnecter le lecteur !")
End Try
End Sub
'désactivé suite à message d'erreur : à perfectionner
' ajout pour backgroundworker
'Private Sub Form1_FormClosed(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles MyBase.FormClosed
' BackgroundWorker1.CancelAsync()
'End Sub
'Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
' MsgBox("Fin de l'éxecution OK : voir les fichiers" & vbCr & vbCr & "C:\admintools\dispocheck\suiviexploit.txt" & vbCr & "C:\admintools\dispocheck\suiviexploit.htm" & vbCr & "C:\admintools\dispocheck\suiviexploit.csv" & vbCr)
'End Sub
End Class
zorville34 Messages postés 15 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 23 janvier 2013
15 févr. 2007 à 17:35
Bonjour

Le pgm a l'air bien. Il faudrait préciser que celui-ci ne fonctionne pas sous VS2003 à cause de Framework 2.0

A+
cs_scotfield Messages postés 3 Date d'inscription vendredi 12 janvier 2007 Statut Membre Dernière intervention 18 janvier 2007
18 janv. 2007 à 14:21
bonjour
j'ai pas encore essaye ton application mais je sens qu'il est bien fait

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.