Connexion serveur

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

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.