keiosid
Goto Top

VBScript mit WINscp für einfachen FTP Transfer und nachträglichem verschieben der Datei in ein erledigt Verzeichnis

Hallo,
leider soll ich auf den neueren Servern(Win2016R2) keine *.Bat Dateien mehr laufen lassen.

Hier soll nun alles über VBScript laufe.
Habe davon leider wenig Ahnung. Auch muss ich mich erst mal wieder in dem hier überarbeitetem Forum zurechtfinden.

Aber eigentlich sollte ein einfacher FTP Transfer doch nicht so aufwendig sein.

Verwenden muss ich die portable Version von WINscp.

Im Netz habe ich folgendes Skript gefunden und für mich modifiziert:

Set objFSO = CreateObject("Scripting.FileSystemObject")  
 Set objShell = CreateObject("WScript.Shell")  
 Const intForReading = 1
 
 scp_script_dir="\\192.168.2.1\Batch\Batch_TEST"  
 scp_script_dir="\\192.168.2.1\Batch\TEST\workdir"  

 strTextFiles = "hello.txt"  
 arrTextFiles = Split(strTextFiles, ";")  

 For intFile = LBound(arrTextFiles) To UBound(arrTextFiles)
       Set objTextFile = objFSO.OpenTextFile(arrTextFiles(intFile), intForReading, False)
       While Not objTextFile.AtEndOfStream
             strServerName = objTextFile.ReadLine
             strScriptText = "# Auto-generated script file For server: " & strServerName & vbCrLf  
             strScriptText = strScriptText & "# Automatically answer all prompts negatively not to stall" & vbCrLf  
             strScriptText = strScriptText & "# the script on errors" & vbCrLf  
             strScriptText = strScriptText & "option batch on" & vbCrLf  
             strScriptText = strScriptText & "# Disable overwrite confirmations that conflict with the previous" & vbCrLf  
             strScriptText = strScriptText & "option confirm off" & vbCrLf  
             strScriptText = strScriptText & "# Connect using a password" & vbCrLf  
             strScriptText = strScriptText & "# open User:****" & vbCrLf  
             strScriptText = strScriptText & "# Connect" & vbCrLf  
             strScriptText = strScriptText & "open root:ftp.server.com" & vbCrLf  
             strScriptText = strScriptText & "# Change remote directory" & vbCrLf  
             strScriptText = strScriptText & "cd /upload" & strServerName & vbCrLf  
             strScriptText = strScriptText & "# Force binary mode transfer" & vbCrLf  
             strScriptText = strScriptText & "option transfer binary" & vbCrLf  
             strScriptText = strScriptText & "# Upload file to the directory in SAP" & vbCrLf  
             strScriptText = strScriptText & "put " & strServerName & "*.txt \\192.168.2.1\Export" & vbCrLf  
             strScriptText = strScriptText & "# Disconnect" & vbCrLf  
             strScriptText = strScriptText & "close" & vbCrLf  
             strScriptText = strScriptText & "# Exit WinSCP" & vbCrLf  
             strScriptText = strScriptText & "exit"  
             Set objOutputFile = objFSO.CreateTextFile(scp_script_dir & "\winscp_script.txt", True)  
             objOutputFile.Write strScriptText
             objOutputFile.Close
             Set objOutputFile = Nothing
             MsgBox "About to run:" & VbCrLf & """C:\Tools\WinSCP\WinSCP.exe"" /console /script=" & scp_script_dir & "\winscp_script.txt" & _  
                   VbCrLf & "When you click OK, the winscp_script.txt file will be displayed for you to check, then when you close it, you will be asked whether to run that script."  
             objShell.Run "notepad """ & scp_script_dir & "\winscp_script.txt" & """", 1, True  
             strResponse = MsgBox("Do you want to run the winscp_script.txt file?", vbYesNo, "Run Script File?")  
             If strResponse = vbYes Then
                   objShell.Run """D:\Tools\WinSCP\WinSCP.exe"" /console /script=" & scp_script_dir & "\winscp_script.txt", 1, True  
             End If
       Wend
       objTextFile.Close
       Set objTextFile = Nothing
 Next

 MsgBox "Done"  

Ich starte dann dieses Script über eine*.cmd
cscript  "\\citrix-alias\citrixroot$\Gruen\Batch\WI_Batch_TEST\Test_FTP.vbs"  

Aber als Ergebnis erhalte ich nur immer:
\\192.168.2.1\Batch\Test_FTP.vbs(12, 8) Microso
ft VBScript runtime error: File not found

Kann mir jemand auf die Sprünge helfen?

Danke
Gruß
Keios

Content-Key: 371764

Url: https://administrator.de/contentid/371764

Printed on: April 24, 2024 at 19:04 o'clock

Member: holli.zimmi
holli.zimmi Apr 20, 2018 at 08:28:57 (UTC)
Goto Top
Hi,

eigentlich sollte man VB-Skript nicht mehr verwenden!
Ich glaube nicht, das Dir jemand dann hilft!

Gruß

Holli
Member: KeiosID
KeiosID Apr 20, 2018 at 08:35:00 (UTC)
Goto Top
Hallo

Eigentlich geht es um Dateien mit der Endung *.vbs

Bin ich dann hier falsch mit meinem Thread.

Gruß
Keios
Member: Apophis
Apophis Apr 20, 2018 updated at 08:56:20 (UTC)
Goto Top
Hallo,

nun ja, die Meldung besagt ja letztendlich, daß er die Datei hello.txt nicht findet. Liegt die denn in dem Verzeichnis, in dem auch das Script ausgeführt wird?

Ansonsten zwei Tips zur weiteren Suche:

- Was passiert, wenn Du den Pfad mit angibst (\\UNC\Pfad\hello.txt)?
- Was passiert, wenn Du nicht UNC-Pfade, sondern Laufwerksmappings verwendest (F:\...\hello.txt)?

Gruß
Apophis

P.S. Warum soll man keine BAT bzw. CMD-Datei mehr ausführen und alles in VBS machen? Das erschließt sich mir gerade nicht. Gehen tut's prima.
Member: KeiosID
KeiosID Apr 20, 2018 at 11:29:16 (UTC)
Goto Top
Die IP Nummer ist nur exemplarisch,
ich habe es mit UNC und Laufwerksbuchstaben versucht,
das Ergebnis bleibt das gleiche

Warum kein bat auf den Server.. keine Ahnung... Die Admins wollen das so
Nur da ich das Thema erledigen will, versuche ich mich selber darin.
Wenn ich das die Admins machen lasse, dann dauert das nochmal 6 Wochen
Member: Apophis
Apophis Apr 20, 2018 at 12:02:14 (UTC)
Goto Top
Hallo,

bleibt immer noch die Frage, _wo_ die Datei liegt. Der von Dir definierte Pfad scp_script_dir hat jedenfalls mit der Datei nichts zu tun - Du hast halt nur den Dateinamen ohne Pfad angegeben und verbindest nicht Pfad und Datei.

Gruß
Apophis


P.S. Was für Admins? Wenn das Script auf dem Server laufen soll, musst Du selber Admin sein, oder täusche ich mich da?
Member: beidermachtvongreyscull
beidermachtvongreyscull Apr 20, 2018 at 12:46:06 (UTC)
Goto Top
In Zeile 8 gibst Du die Datei hello.txt an.
Wo soll das Script die denn finden?

Ergänze mal den kompletten Pfad.
Member: beidermachtvongreyscull
beidermachtvongreyscull Apr 20, 2018 at 12:49:31 (UTC)
Goto Top
Zitat von @holli.zimmi:

Hi,

eigentlich sollte man VB-Skript nicht mehr verwenden!
Ich glaube nicht, das Dir jemand dann hilft!

Gruß

Holli

Tach,

harter Tobak Herr Kollege.

Mich würde aber mal interessieren, wie so man VBScript nicht mehr verwenden sollte.
Denn ich scripte ehrlich gesagt sehr gerne damit und Office-Macros werden immernoch mit VBA gebaut.

Und solange Windows VBS und Office VBA verstehen, sehe ich noch keinen Grund für einen Wechsel.
Verdammt sogar HTA funktioniert immernoch. face-smile
Member: Kraemer
Kraemer Apr 20, 2018 at 14:56:27 (UTC)
Goto Top
Moin,

warum nutzt du nicht den Script-Generator von WinSCP als Vorlage?

Gruß
Member: emeriks
emeriks Apr 20, 2018, updated at Apr 24, 2018 at 13:25:51 (UTC)
Goto Top
Hi,
harter Tobak Herr Kollege.

Mich würde aber mal interessieren, wie so man VBScript nicht mehr verwenden sollte.
Denn ich scripte ehrlich gesagt sehr gerne damit und Office-Macros werden immernoch mit VBA gebaut.

Und solange Windows VBS und Office VBA verstehen, sehe ich noch keinen Grund für einen Wechsel.
Verdammt sogar HTA funktioniert immernoch. face-smile
Vollkommen richtig. Diese Aussagen vom Totenkopfanbeter @holli.zimmi ist unsinnig.

Wie schon von den anderen genannt:
Das Script findet die "hello.txt" nicht. Einfach mit vollem Pfad angeben oder diesen dynamisch zusammensetzen. Dann klappt's auch mit der Nachbarin ....

E.
Member: beidermachtvongreyscull
beidermachtvongreyscull Apr 24, 2018 at 12:32:11 (UTC)
Goto Top
Zitat von @emeriks:

Vollkommen richtig. Diese Aussagen vom Totenkopfanbeter ist unsinnig.

Darf ich auch fragen, wieso?
Member: emeriks
emeriks Apr 24, 2018 at 13:25:01 (UTC)
Goto Top
Zitat von @beidermachtvongreyscull:
Darf ich auch fragen, wieso?
Weil ich doof bin und Dich verwechselt habe. face-wink Sorry.
Ich meinte, dass ich die absolute Aussage von @holli.zimmi bzgl. Nicht-mehr-Verwendung von VBscript unsinnig ist. Dann könnte - müsste! - man das Gleiche über Batch sagen.

BeiDerMachtVonDeinemSkull face-wink

Habe korrigiert ...
Member: Kraemer
Kraemer Apr 24, 2018 at 13:44:29 (UTC)
Goto Top
Naja,

VBS und Batch sind per Definition (keine Weiterentwicklung) tote Sprachen. Von daher ist es unsinnig, damit noch neue Projekte zu starten. Dazu kommen noch Themen Sicherheit, Möglichkeiten/Einschränkungen etc.

Gruß
Member: beidermachtvongreyscull
beidermachtvongreyscull Apr 24, 2018 at 13:51:24 (UTC)
Goto Top
Zitat von @emeriks:

Zitat von @beidermachtvongreyscull:
Darf ich auch fragen, wieso?
Weil ich doof bin und Dich verwechselt habe. face-wink Sorry.
Ich meinte, dass ich die absolute Aussage von @holli.zimmi bzgl. Nicht-mehr-Verwendung von VBscript unsinnig ist. Dann könnte - müsste! - man das Gleiche über Batch sagen.

BeiDerMachtVonDeinemSkull face-wink

Habe korrigiert ...

Hab Dank für die Richtigstellung.
Alles gut.
Member: emeriks
emeriks Apr 24, 2018 updated at 14:07:15 (UTC)
Goto Top
Zitat von @Kraemer:
VBS und Batch sind per Definition (keine Weiterentwicklung) tote Sprachen.
Per Definition?

Mal als Hinweis:
Selbst unter Windows Server 2016 liefert Microsoft noch von Haus aus viele VBS-Scripte mit.
dir %windir%\*.vbs /s
Member: Kraemer
Kraemer Apr 24, 2018 at 14:20:43 (UTC)
Goto Top
Zitat von @emeriks:
Selbst unter Windows Server 2016 liefert Microsoft noch von Haus aus viele VBS-Scripte mit.
na klar - genau so wie die CMD als Ersatz für die DOS-Eingabeaufforderung...
Member: holli.zimmi
Solution holli.zimmi Apr 25, 2018 updated at 06:35:48 (UTC)
Goto Top
Zitat von @emeriks:

Zitat von @Kraemer:
VBS und Batch sind per Definition (keine Weiterentwicklung) tote Sprachen.
Per Definition?

Mal als Hinweis:
Selbst unter Windows Server 2016 liefert Microsoft noch von Haus aus viele VBS-Scripte mit.
> dir %windir%\*.vbs /s
> 

Hi,

danke das Ihr darauf gesprungen seid! face-smile Wollt nur wissen, was Ihr darüber denkt!
Meine Frage ist nur dazu - wie sichere ich ab, das keine fremden Scripte gestartet bzw. oder die eigene Scripte - umgeschrieben und dann damit nicht mißbraucht werden?
Habe noch ein Script-Buch zu Hause, leider bin ich nicht dazu gekommen es zu lernen. face-sad

Gruß

Holli
Member: emeriks
emeriks Apr 25, 2018 at 06:39:26 (UTC)
Goto Top
Meine Frage ist nur dazu - wie sichere ich ab, das keine fremden Scripte gestartet bzw. oder die eigene Scripte - umgeschrieben und dann damit nicht mißbraucht werden?
Das ist eine ganz andere, alte Übung, anderes Thema. Bei CMD und VBscript kannst Du das nur über "externe" Mechanismen bewerkstelligen. NTFS-Berechtigungen, Überwachungen, permanente Kontrolle der Dateien usw.

Deshalb wurde sicher bei PowerShell eingeführt, dass man Scripte signieren und nur die Ausführung signierter Scripte erlauben kann.