FTP Passwörter automatisch per Mail am Monatsanfang versenden
Hallo,
ich bin auf der Suche nach einem Skript oder ähnlichem, welches FTP Zugangsdaten per Mail versendet.
Ich habe eine Excel Tabelle mit E-Mailadressen drinne, an die gehen jeden Monat unterschiedliche E-Mails mit Zugangsdaten für meinen FTP-Server
FTP Software: Filezilla Server
Server OS: Windows Server 2012 R2
Bisher ändere ich die Kennwörter immer am Monatsende manuell und sende diese dann auch per Hand an ca 30 Leute.
Eine sehr aufwendige Arbeit, welche ich gerne automatisieren würde.
Gruß
ich bin auf der Suche nach einem Skript oder ähnlichem, welches FTP Zugangsdaten per Mail versendet.
Ich habe eine Excel Tabelle mit E-Mailadressen drinne, an die gehen jeden Monat unterschiedliche E-Mails mit Zugangsdaten für meinen FTP-Server
FTP Software: Filezilla Server
Server OS: Windows Server 2012 R2
Bisher ändere ich die Kennwörter immer am Monatsende manuell und sende diese dann auch per Hand an ca 30 Leute.
Eine sehr aufwendige Arbeit, welche ich gerne automatisieren würde.
Gruß
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 221587
Url: https://administrator.de/contentid/221587
Ausgedruckt am: 22.11.2024 um 16:11 Uhr
10 Kommentare
Neuester Kommentar
Hallo Marius,
dazu hatte ich mal ein VB-Script geschrieben welches genau dies automatisiert. Es öffnet ein Excel-File generiert für die User die darin stehen ein neues Passwort(hier ein Passwort mit 15 Zeichen), dann sucht es in der FileZilla-Config nach dem entsprechenden User, setzt das Passwort als MD5 Hash, speichert die Config, führt einen Config-Reload durch und versendet im Anschluss Mails an alle User (Im Script ist im das Moment mit Outlook gelöst, dies lässt sich aber einfach via "Blat" anpassen s. ganz unten im Beitrag). Das Script geht außerdem davon aus das der Username die E-Mail-Adresse ist.
Wichtig: Bitte die Hinweise zum Excel-File und zum Aufruf des Scripts weiter unten beachten !
Das Excel File sollte so aufgebaut sein damit es mit dem obigen Script funktioniert:
Das Script muss als Administrator folgendermaßen ausgeführt werden:
(Ein Admin-Konto deswegen, da das Script die Berechtigungen haben muss um das Config-File zu speichern)
Um "Blat" zum verschicken von Mails zu verwenden musst du in Zeile 37 das Kommentar entfernen, und Zeile 36 löschen oder auskommentieren.
Zusätzlich musst du die Variablen in der Funktion sendNewMailViaBlat (Zeile 77-89) welche in eckigen Klammern stehen an deine Umgebung anpassen.
p.s. das das Verschicken von Passwörtern via Mail keine gute Idee ist weist du hoffentlich selber ....
Grüße Uwe
Falls der Beitrag gefällt, seid so nett und unterstützt mich durch eine kleine Spende / If you like my contribution please support me and donate
dazu hatte ich mal ein VB-Script geschrieben welches genau dies automatisiert. Es öffnet ein Excel-File generiert für die User die darin stehen ein neues Passwort(hier ein Passwort mit 15 Zeichen), dann sucht es in der FileZilla-Config nach dem entsprechenden User, setzt das Passwort als MD5 Hash, speichert die Config, führt einen Config-Reload durch und versendet im Anschluss Mails an alle User (Im Script ist im das Moment mit Outlook gelöst, dies lässt sich aber einfach via "Blat" anpassen s. ganz unten im Beitrag). Das Script geht außerdem davon aus das der Username die E-Mail-Adresse ist.
Wichtig: Bitte die Hinweise zum Excel-File und zum Aufruf des Scripts weiter unten beachten !
GenerateNewPasswords
Sub GenerateNewPasswords()
Const CONFIGFILE = "C:\Program Files (x86)\FileZilla Server\FileZilla Server.xml"
Const EXCELFILE = "C:\DeinExcelFile.xlsx"
Set objShell = CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.Filesystemobject")
Set objExcel = CreateObject("Excel.Application")
Set objDoc = objExcel.Workbooks.Open(EXCELFILE)
Set hash = New hashing
objExcel.Visible = False
objExcel.DisplayAlerts = False
'Remove ReadOnly Attribute of Config File
Set objConfigFile = fso.GetFile(CONFIGFILE)
objConfigFile.Attributes = 0
Set objConfigFile = Nothing
'---------------------
Set xmlDoc = CreateObject("Msxml2.DOMDocument.6.0")
xmlDoc.Load CONFIGFILE
Set userNodes = xmlDoc.selectNodes("/FileZillaServer/Users/User")
Set sheet = objDoc.Worksheets(1)
Set rngEmails = sheet.Range("A2", sheet.Range("A2").End(-4121))
For Each cell In rngEmails
strNewPass = newPass(15)
cell.Offset(0, 1).value2 = strNewPass
For Each userNode In userNodes
strUserName = userNode.attributes.getNamedItem("Name").Text
If cell.Value = strUserName Then
'setze das neue Passwort im Configfile (MD5-Codiert)
userNode.selectSingleNode("Option[@Name='Pass']").Text = hash.MD5(strNewPass)
'erstelle eine E-Mail mit dem neuen Passwort
sendNewMailViaOutlook strUserName, strNewPass
'sendNewMailViaBlat strUserName, strNewPass
End If
Next
Next
objDoc.Save
xmlDoc.Save CONFIGFILE
objExcel.DisplayAlerts = True
objExcel.Quit
objShell.Run """C:\Program Files (x86)\FileZilla Server\FileZilla Server.exe"" /reload-config"
Set xmlDoc = Nothing
Set objExcel = Nothing
Set objDoc = Nothing
Set objShell = Nothing
Set fso = Nothing
End Sub
Function newPass(intLength)
chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
pass = ""
For z = 1 To intLength
Randomize
randomPos = Int((Len(chars) * Rnd) + 1)
pass = pass & Mid(chars, randomPos, 1)
Next
newPass = pass
End Function
Function sendNewMailViaOutlook(strEmailAddress, strNewPassword)
Set objOutlook = CreateObject("Outlook.Application")
Set objMail = objOutlook.CreateItem(0)
With objMail
.To = strEmailAddress
.Subject = "Ihr neues Passwort für den FTP-Server"
.Body = "Ihr neues Passwort für den FTP-Server lautet: " & strNewPassword
.Display
.Send
End With
Set objOutlook = Nothing
End Function
Function sendNewMailViaBlat(strEmailAddress, strNewPassword)
Set objShell = CreateObject("WScript.Shell")
path_blat = "[PFAD ZUR BLAT.EXE]"
mail_from = "[DEINE MAIL-ADRESSE]"
mail_to = strEmailAddress
smtp_server = "[SMTPSERVER]"
smtp_user = "[USERNAME]"
smtp_pass = "[PASSWORT]"
subject = "Ihre neuen FTP-Server Zugangsdaten"
body = "Ihr neues FTP-Server Passwort lautet: " & strNewPassword
objShell.Run """" & path_blat & """" & " -subject """ & subject & """ -body """ & body & """ -to " & mail_to & " -f " & mail_from & " -server " & smtp_server & " -u """ & smtp_user & """ -pw """ & smtp_pass & """"
set objShell = Nothing
End Function
'---------------------------------
' MD5 Function
'----------------------------------------------------------------
' Original-Source: http://chayoung.tistory.com/entry/VBScript-MD5
' converted to a class by @colinardo (Administrator.de)
'----------------------------------------------------------------
Class hashing
Private BITS_TO_A_BYTE
Private BYTES_TO_A_WORD
Private BITS_TO_A_WORD
Private m_lOnBits(30)
Private m_l2Power(30)
Private Sub Class_Initialize
BITS_TO_A_BYTE = 8
BYTES_TO_A_WORD = 4
BITS_TO_A_WORD = 32
m_lOnBits(0) = CLng(1)
m_lOnBits(1) = CLng(3)
m_lOnBits(2) = CLng(7)
m_lOnBits(3) = CLng(15)
m_lOnBits(4) = CLng(31)
m_lOnBits(5) = CLng(63)
m_lOnBits(6) = CLng(127)
m_lOnBits(7) = CLng(255)
m_lOnBits(8) = CLng(511)
m_lOnBits(9) = CLng(1023)
m_lOnBits(10) = CLng(2047)
m_lOnBits(11) = CLng(4095)
m_lOnBits(12) = CLng(8191)
m_lOnBits(13) = CLng(16383)
m_lOnBits(14) = CLng(32767)
m_lOnBits(15) = CLng(65535)
m_lOnBits(16) = CLng(131071)
m_lOnBits(17) = CLng(262143)
m_lOnBits(18) = CLng(524287)
m_lOnBits(19) = CLng(1048575)
m_lOnBits(20) = CLng(2097151)
m_lOnBits(21) = CLng(4194303)
m_lOnBits(22) = CLng(8388607)
m_lOnBits(23) = CLng(16777215)
m_lOnBits(24) = CLng(33554431)
m_lOnBits(25) = CLng(67108863)
m_lOnBits(26) = CLng(134217727)
m_lOnBits(27) = CLng(268435455)
m_lOnBits(28) = CLng(536870911)
m_lOnBits(29) = CLng(1073741823)
m_lOnBits(30) = CLng(2147483647)
m_l2Power(0) = CLng(1)
m_l2Power(1) = CLng(2)
m_l2Power(2) = CLng(4)
m_l2Power(3) = CLng(8)
m_l2Power(4) = CLng(16)
m_l2Power(5) = CLng(32)
m_l2Power(6) = CLng(64)
m_l2Power(7) = CLng(128)
m_l2Power(8) = CLng(256)
m_l2Power(9) = CLng(512)
m_l2Power(10) = CLng(1024)
m_l2Power(11) = CLng(2048)
m_l2Power(12) = CLng(4096)
m_l2Power(13) = CLng(8192)
m_l2Power(14) = CLng(16384)
m_l2Power(15) = CLng(32768)
m_l2Power(16) = CLng(65536)
m_l2Power(17) = CLng(131072)
m_l2Power(18) = CLng(262144)
m_l2Power(19) = CLng(524288)
m_l2Power(20) = CLng(1048576)
m_l2Power(21) = CLng(2097152)
m_l2Power(22) = CLng(4194304)
m_l2Power(23) = CLng(8388608)
m_l2Power(24) = CLng(16777216)
m_l2Power(25) = CLng(33554432)
m_l2Power(26) = CLng(67108864)
m_l2Power(27) = CLng(134217728)
m_l2Power(28) = CLng(268435456)
m_l2Power(29) = CLng(536870912)
m_l2Power(30) = CLng(1073741824)
End Sub
Private Function LShift(lValue, iShiftBits)
If iShiftBits = 0 Then
LShift = lValue
Exit Function
ElseIf iShiftBits = 31 Then
If lValue And 1 Then
LShift = &H80000000
Else
LShift = 0
End If
Exit Function
ElseIf iShiftBits < 0 Or iShiftBits > 31 Then
Err.Raise 6
End If
If (lValue And m_l2Power(31 - iShiftBits)) Then
LShift = ((lValue And m_lOnBits(31 - (iShiftBits + 1))) * m_l2Power(iShiftBits)) Or &H80000000
Else
LShift = ((lValue And m_lOnBits(31 - iShiftBits)) * m_l2Power(iShiftBits))
End If
End Function
Private Function RShift(lValue, iShiftBits)
If iShiftBits = 0 Then
RShift = lValue
Exit Function
ElseIf iShiftBits = 31 Then
If lValue And &H80000000 Then
RShift = 1
Else
RShift = 0
End If
Exit Function
ElseIf iShiftBits < 0 Or iShiftBits > 31 Then
Err.Raise 6
End If
RShift = (lValue And &H7FFFFFFE) \ m_l2Power(iShiftBits)
If (lValue And &H80000000) Then
RShift = (RShift Or (&H40000000 \ m_l2Power(iShiftBits - 1)))
End If
End Function
Private Function RotateLeft(lValue, iShiftBits)
RotateLeft = LShift(lValue, iShiftBits) Or RShift(lValue, (32 - iShiftBits))
End Function
Private Function AddUnsigned(lX, lY)
Dim lX4
Dim lY4
Dim lX8
Dim lY8
Dim lResult
lX8 = lX And &H80000000
lY8 = lY And &H80000000
lX4 = lX And &H40000000
lY4 = lY And &H40000000
lResult = (lX And &H3FFFFFFF) + (lY And &H3FFFFFFF)
If lX4 And lY4 Then
lResult = lResult Xor &H80000000 Xor lX8 Xor lY8
ElseIf lX4 Or lY4 Then
If lResult And &H40000000 Then
lResult = lResult Xor &HC0000000 Xor lX8 Xor lY8
Else
lResult = lResult Xor &H40000000 Xor lX8 Xor lY8
End If
Else
lResult = lResult Xor lX8 Xor lY8
End If
AddUnsigned = lResult
End Function
Private Function F(x, y, z)
F = (x And y) Or ((Not x) And z)
End Function
Private Function G(x, y, z)
G = (x And z) Or (y And (Not z))
End Function
Private Function H(x, y, z)
H = (x Xor y Xor z)
End Function
Private Function I(x, y, z)
I = (y Xor (x Or (Not z)))
End Function
Private Sub FF(a, b, c, d, x, s, ac)
a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac))
a = RotateLeft(a, s)
a = AddUnsigned(a, b)
End Sub
Private Sub GG(a, b, c, d, x, s, ac)
a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac))
a = RotateLeft(a, s)
a = AddUnsigned(a, b)
End Sub
Private Sub HH(a, b, c, d, x, s, ac)
a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac))
a = RotateLeft(a, s)
a = AddUnsigned(a, b)
End Sub
Private Sub II(a, b, c, d, x, s, ac)
a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac))
a = RotateLeft(a, s)
a = AddUnsigned(a, b)
End Sub
Private Function ConvertToWordArray(sMessage)
Dim lMessageLength
Dim lNumberOfWords
Dim lWordArray()
Dim lBytePosition
Dim lByteCount
Dim lWordCount
Const MODULUS_BITS = 512
Const CONGRUENT_BITS = 448
lMessageLength = Len(sMessage)
lNumberOfWords = (((lMessageLength + ((MODULUS_BITS - CONGRUENT_BITS) \ BITS_TO_A_BYTE)) \ (MODULUS_BITS \ BITS_TO_A_BYTE)) + 1) * (MODULUS_BITS \ BITS_TO_A_WORD)
ReDim lWordArray(lNumberOfWords - 1)
lBytePosition = 0
lByteCount = 0
Do Until lByteCount >= lMessageLength
lWordCount = lByteCount \ BYTES_TO_A_WORD
lBytePosition = (lByteCount Mod BYTES_TO_A_WORD) * BITS_TO_A_BYTE
lWordArray(lWordCount) = lWordArray(lWordCount) Or LShift(Asc(Mid(sMessage, lByteCount + 1, 1)), lBytePosition)
lByteCount = lByteCount + 1
Loop
lWordCount = lByteCount \ BYTES_TO_A_WORD
lBytePosition = (lByteCount Mod BYTES_TO_A_WORD) * BITS_TO_A_BYTE
lWordArray(lWordCount) = lWordArray(lWordCount) Or LShift(&H80, lBytePosition)
lWordArray(lNumberOfWords - 2) = LShift(lMessageLength, 3)
lWordArray(lNumberOfWords - 1) = RShift(lMessageLength, 29)
ConvertToWordArray = lWordArray
End Function
Private Function WordToHex(lValue)
Dim lByte
Dim lCount
For lCount = 0 To 3
lByte = RShift(lValue, lCount * BITS_TO_A_BYTE) And m_lOnBits(BITS_TO_A_BYTE - 1)
WordToHex = WordToHex & Right("0" & Hex(lByte), 2)
Next
End Function
Public Function MD5(sMessage)
Dim x
Dim k
Dim AA
Dim BB
Dim CC
Dim DD
Dim a
Dim b
Dim c
Dim d
Const S11 = 7
Const S12 = 12
Const S13 = 17
Const S14 = 22
Const S21 = 5
Const S22 = 9
Const S23 = 14
Const S24 = 20
Const S31 = 4
Const S32 = 11
Const S33 = 16
Const S34 = 23
Const S41 = 6
Const S42 = 10
Const S43 = 15
Const S44 = 21
x = ConvertToWordArray(sMessage)
a = &H67452301
b = &HEFCDAB89
c = &H98BADCFE
d = &H10325476
For k = 0 To UBound(x) Step 16
AA = a
BB = b
CC = c
DD = d
FF a, b, c, d, x(k + 0), S11, &HD76AA478
FF d, a, b, c, x(k + 1), S12, &HE8C7B756
FF c, d, a, b, x(k + 2), S13, &H242070DB
FF b, c, d, a, x(k + 3), S14, &HC1BDCEEE
FF a, b, c, d, x(k + 4), S11, &HF57C0FAF
FF d, a, b, c, x(k + 5), S12, &H4787C62A
FF c, d, a, b, x(k + 6), S13, &HA8304613
FF b, c, d, a, x(k + 7), S14, &HFD469501
FF a, b, c, d, x(k + 8), S11, &H698098D8
FF d, a, b, c, x(k + 9), S12, &H8B44F7AF
FF c, d, a, b, x(k + 10), S13, &HFFFF5BB1
FF b, c, d, a, x(k + 11), S14, &H895CD7BE
FF a, b, c, d, x(k + 12), S11, &H6B901122
FF d, a, b, c, x(k + 13), S12, &HFD987193
FF c, d, a, b, x(k + 14), S13, &HA679438E
FF b, c, d, a, x(k + 15), S14, &H49B40821
GG a, b, c, d, x(k + 1), S21, &HF61E2562
GG d, a, b, c, x(k + 6), S22, &HC040B340
GG c, d, a, b, x(k + 11), S23, &H265E5A51
GG b, c, d, a, x(k + 0), S24, &HE9B6C7AA
GG a, b, c, d, x(k + 5), S21, &HD62F105D
GG d, a, b, c, x(k + 10), S22, &H2441453
GG c, d, a, b, x(k + 15), S23, &HD8A1E681
GG b, c, d, a, x(k + 4), S24, &HE7D3FBC8
GG a, b, c, d, x(k + 9), S21, &H21E1CDE6
GG d, a, b, c, x(k + 14), S22, &HC33707D6
GG c, d, a, b, x(k + 3), S23, &HF4D50D87
GG b, c, d, a, x(k + 8), S24, &H455A14ED
GG a, b, c, d, x(k + 13), S21, &HA9E3E905
GG d, a, b, c, x(k + 2), S22, &HFCEFA3F8
GG c, d, a, b, x(k + 7), S23, &H676F02D9
GG b, c, d, a, x(k + 12), S24, &H8D2A4C8A
HH a, b, c, d, x(k + 5), S31, &HFFFA3942
HH d, a, b, c, x(k + 8), S32, &H8771F681
HH c, d, a, b, x(k + 11), S33, &H6D9D6122
HH b, c, d, a, x(k + 14), S34, &HFDE5380C
HH a, b, c, d, x(k + 1), S31, &HA4BEEA44
HH d, a, b, c, x(k + 4), S32, &H4BDECFA9
HH c, d, a, b, x(k + 7), S33, &HF6BB4B60
HH b, c, d, a, x(k + 10), S34, &HBEBFBC70
HH a, b, c, d, x(k + 13), S31, &H289B7EC6
HH d, a, b, c, x(k + 0), S32, &HEAA127FA
HH c, d, a, b, x(k + 3), S33, &HD4EF3085
HH b, c, d, a, x(k + 6), S34, &H4881D05
HH a, b, c, d, x(k + 9), S31, &HD9D4D039
HH d, a, b, c, x(k + 12), S32, &HE6DB99E5
HH c, d, a, b, x(k + 15), S33, &H1FA27CF8
HH b, c, d, a, x(k + 2), S34, &HC4AC5665
II a, b, c, d, x(k + 0), S41, &HF4292244
II d, a, b, c, x(k + 7), S42, &H432AFF97
II c, d, a, b, x(k + 14), S43, &HAB9423A7
II b, c, d, a, x(k + 5), S44, &HFC93A039
II a, b, c, d, x(k + 12), S41, &H655B59C3
II d, a, b, c, x(k + 3), S42, &H8F0CCC92
II c, d, a, b, x(k + 10), S43, &HFFEFF47D
II b, c, d, a, x(k + 1), S44, &H85845DD1
II a, b, c, d, x(k + 8), S41, &H6FA87E4F
II d, a, b, c, x(k + 15), S42, &HFE2CE6E0
II c, d, a, b, x(k + 6), S43, &HA3014314
II b, c, d, a, x(k + 13), S44, &H4E0811A1
II a, b, c, d, x(k + 4), S41, &HF7537E82
II d, a, b, c, x(k + 11), S42, &HBD3AF235
II c, d, a, b, x(k + 2), S43, &H2AD7D2BB
II b, c, d, a, x(k + 9), S44, &HEB86D391
a = AddUnsigned(a, AA)
b = AddUnsigned(b, BB)
c = AddUnsigned(c, CC)
d = AddUnsigned(d, DD)
Next
MD5 = LCase(WordToHex(a) & WordToHex(b) & WordToHex(c) & WordToHex(d))
End Function
End Class
Das Script muss als Administrator folgendermaßen ausgeführt werden:
(Ein Admin-Konto deswegen, da das Script die Berechtigungen haben muss um das Config-File zu speichern)
wscript.exe //NOLOGO script.vbs
Um "Blat" zum verschicken von Mails zu verwenden musst du in Zeile 37 das Kommentar entfernen, und Zeile 36 löschen oder auskommentieren.
Zusätzlich musst du die Variablen in der Funktion sendNewMailViaBlat (Zeile 77-89) welche in eckigen Klammern stehen an deine Umgebung anpassen.
p.s. das das Verschicken von Passwörtern via Mail keine gute Idee ist weist du hoffentlich selber ....
Grüße Uwe
Falls der Beitrag gefällt, seid so nett und unterstützt mich durch eine kleine Spende / If you like my contribution please support me and donate
hatte auch nicht gesagt das es komplett ohne Voraussetzungen läuft. Das Script lief vorher auf einer Windows 7 Kiste mit installiertem Office. Um Excel lesen und beschreiben zu können ist ein installiertes Excel nun mal Voraussetzung.
Du hast nun aber zwei Möglichkeiten, wenn du kein Excel auf dem Server installieren willst (ist auch verständlich):
Wenn du es so wie in Variante 2 machen möchtest tauschst du oben im Script die Funktion GenerateNewPasswords durch diese äquivalente Variante aus, und passt den Pfad zur Textdatei in Zeile 3 an :
Grüße Uwe
Du hast nun aber zwei Möglichkeiten, wenn du kein Excel auf dem Server installieren willst (ist auch verständlich):
- Du lagerst das Script auf deine Workstation aus und baust im Script den Remote-Befehl zum aktualisieren der FileZilla Config mit psexec ein und gibst das Verzeichnis in dem die Config steht für die WS frei.
- Die bessere Lösung, da das Script dann autark auf dem Server laufen kann: Du nutzt anstatt Excel als Datenquelle für die E-Mail-Adressen und Passwörter eine einfache Textdatei, in dem diese dann in folgendem Format stehen
[USERNAME]=[PASSWORD]
user@domain.com=hhsdkhfoiewuri34
user2@domain.com=773hjj234jhds8f9z
Sub GenerateNewPasswords()
Const CONFIGFILE = "C:\Program Files (x86)\FileZilla Server\FileZilla Server.xml"
Const TEXTFILE = "C:\Scripts\users.txt"
Set objShell = CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.Filesystemobject")
Set xmlDoc = CreateObject("Msxml2.DOMDocument.6.0")
Set hash = New hashing
'Remove ReadOnly Attribute of Config File
Set objConfigFile = fso.GetFile(CONFIGFILE)
objConfigFile.Attributes = 0
Set objConfigFile = Nothing
'---------------------
xmlDoc.Load CONFIGFILE
Set userNodes = xmlDoc.selectNodes("/FileZillaServer/Users/User")
'Textdatei einlesen und in Array splittem
Set txtRead = fso.OpenTextFile(TEXTFILE,1)
arrTextFile = Split(txtRead.ReadAll(),vbCrLf)
txtRead.Close
txtNewContent = ""
For k = 0 To UBound(arrTextFile)
If arrTextFile(k) <> "" Then
arrParts = Split(arrTextFile(k),"=")
strEmail = Trim(arrParts(0))
strNewPass = newPass(15)
For Each userNode In userNodes
strUserName = userNode.attributes.getNamedItem("Name").Text
If strEmail = strUserName Then
'setze das neue Passwort im Configfile (MD5-Kodiert)
userNode.selectSingleNode("Option[@Name='Pass']").Text = hash.MD5(strNewPass)
'erstelle eine E-Mail mit dem neuen Passwort
sendNewMailViaBlat strUserName, strNewPass
txtNewContent = txtNewContent & strEmail & "=" & strNewPass & vbCrLf
End If
Next
End If
Next
'Speichere Datei mit den neuen Passwörtern
Set txtWrite = fso.OpenTextFile(TEXTFILE,2)
txtWrite.Write(txtNewContent)
txtWrite.Close
'Speichere FileZilla Config
xmlDoc.Save CONFIGFILE
objShell.Run """C:\Program Files (x86)\FileZilla Server\FileZilla Server.exe"" /reload-config"
Set objShell = Nothing
Set fso = Nothing
End Sub
Zitat von @rziemke:
Hi, mal auch eine doofe Frage. Bekommt damit jeder die selbe Excel Tabelle mit allen Passwörtern?
Die Frage ist wirklich doof ....Hi, mal auch eine doofe Frage. Bekommt damit jeder die selbe Excel Tabelle mit allen Passwörtern?
Quatsch, natürlich nicht, jeder bekommt nur sein eigenes Passwort zugesendet !
Grüße Uwe