Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

SFTP Script (psftp.exe) Windows2003 Std.Server 64-Bit SFTP läuft manuell, jedoch nicht als Scheduled Task

Frage Microsoft Windows Server

Mitglied: Grosser-Bruder

Grosser-Bruder (Level 1) - Jetzt verbinden

10.11.2010 um 15:05 Uhr, 6579 Aufrufe, 19 Kommentare

Windows 2003 Std. Server 64-Bit Englisch
Intel Xeon X5450 3.00 GHz
4 GB RAM

Hallo zusammen,

gerne möchte ich automatisiert, Daten von einem SFTP Server abholen. Hierzu habe ich ein Script geschrieben, welches wie folgt aussieht. Das Script besteht aus 3 Teilen, in dem ersten Teil, wird das Logfile definiert, sowie das cmd file aufgerufen, welches sich auf den SFT Server verbindet. In diesem File, wird mittels dem Programm psftp.exe und diversen Paramatern (Siehe unten) die Verbindung zum SFTP Aufgebaut, sowie die Datei abgeholt. Im Anschluß, wird die Datei an einen entsprechenden Ort kopiert, sowie aus Sicherheitsgründen eine Dateihistorie erstellt. Im Abspann werden noch diverse Abfragen durchgeführt, welche ins Logbuch geschrieben werden.

Nun folgendes Problem. Das Script funktioniert wunderbar, allerdings nur, so lange ich es manuell aufrufe. Erstelle ich einen Scheduled Task, mit den entsprechenden Benutzerinformationen läuft es nicht mehr. Als Fehlercode, wird der Standardcode 0x1 (also nicht erfolgreich) ausgegeben.

Besteht ein Problem, wenn ein Batchfile, ein anderes File aufruft??

Für Euere Hilfe wäre ich sehr Dankbar..


Anbei der Sourcecode der entsprechenden Files:

File 1: (personal.cmd)

SET LOGFILE=h:\scripts\Personalstamm\personal.log

echo "Masterdate transfer starting" >> %LOGFILE%
echo "Date:" >> %LOGFILE%
date /T >> %LOGFILE%
echo "Time:" >> %LOGFILE%
time /T >> %LOGFILE%

call ConnecttoSFTPServer.cmd


File 2 (ConnecttoSFTPServer.cmd)


SET LOGFILE=h:\scripts\Personalstamm\personal1.log


psftp.exe %servername%@%ipadress%-pw %password% -b SFTPCommands.DAT >> %LOGFILE% --> Hier werden die SFTP Commands aufgerufen

if not exist %filetodownload% goto fehler
copy h:\scripts\Personalstamm\%filetodownload% "H:\%mesname%\lohn_exp\" >> %LOGFILE%

del h:\scripts\Personalstamm\%filetodownload%.8
ren h:\scripts\Personalstamm\%filetodownload%.7 %filetodownload%.8
ren h:\scripts\Personalstamm\%filetodownload%.6 %filetodownload%.7
ren h:\scripts\Personalstamm\%filetodownload%.5 %filetodownload%.6
ren h:\scripts\Personalstamm\%filetodownload%.4 %filetodownload%.5
ren h:\scripts\Personalstamm\%filetodownload%.3 %filetodownload%.4
ren h:\scripts\Personalstamm\%filetodownload%.2 %filetodownload%.3
ren h:\scripts\Personalstamm\%filetodownload%.1 %filetodownload%.2
ren h:\scripts\Personalstamm\%filetodownload% %filetodownload%.1


echo "Job finished successfully" >> %LOGFILE%
goto ende

:fehler
echo "Job failed" >> %LOGFILE%


:ende
echo "Date:" >> %LOGFILE%
date /T >> %LOGFILE%
echo "Time:" >> %LOGFILE%
time /T >> %LOGFILE%

echo "---------------------------" >> %LOGFILE%


File 3 (SFTPCommands.DAT)

cd out
get pers_aps.dat
bye
Mitglied: micneu
10.11.2010 um 15:21 Uhr
wie machst du es mit dem passwort?
ist das ziel ein linux server?
hast du deinen schlüssel auf dem server hinterlegt in der datei "authorized_keys"?

gruß michael
Bitte warten ..
Mitglied: 60730
10.11.2010 um 16:30 Uhr
Moin,

da hast du aber einige Daten verschleiert/parametrisiert die die Ursache sein könnten.
Wobei ich dir mal glauben will, dass es manuell wirklich läuft - das fehlende Leerzeichen nach % und -pw sieht kosmisch aus

psftp.exe %servername%@%ipadress%-pw %password% -b SFTPCommands.DAT >> %LOGFILE%

  • kennt der Scriptuser Laufwerk Heinrich
if exist h:\scripts\Personalstamm\personal.log echo Heinrich kenn ich
pause
  • was steht im Logfile?

Die plausibelste Lösung wäre du werkelst im Task nicht in dem Ordner, wo die gecallten Scripte liegen.

Gruß
Bitte warten ..
Mitglied: Grosser-Bruder
10.11.2010 um 16:46 Uhr
Hallo Michael,

was für ein System das Zielsystem ist, kann ich nicht sagen, da es sich um ein externes System handelt und wir lediglich die Datei abholen.
Das Passwort steht in dem Script blanko drin, kann ich aber hier schlecht posten

Folgende Infos habe ich herauskommentiert:


%servername%
%ipadress%
%password%
%mesname%
%filetodownload%
Bitte warten ..
Mitglied: Grosser-Bruder
10.11.2010 um 16:50 Uhr
Moin Timo,

manuell funktioniert das 100%, führe es ja täglich aus, damit ich die Datei bekomme. Der Scriptuser kennt das Laufwerk H:\. Alle Files (bis auf das File, welches wegkopiert wird) liegen in dem gleichen Verzeichniss...

Wenn es manuell lief, sieht das Logfile so aus:

"Masterdate transfer starting"
"Date:"
10.11.2010
"Time:"
16:49
Remote working directory is /
Remote directory is now /out
remote:/out/%filetodownload%=> local:%filetodownload% 1 file(s) copied.
"Job finished successfully"
"Date:"
10.11.2010
"Time:"
16:49
"---------------------------"

Beste Grüße
Michael
Bitte warten ..
Mitglied: 60730
10.11.2010 um 16:58 Uhr
moin,

nicht falsch verstehen, aber wie das manuell aussieht ist mir und dir ja "latte"...
Wie das aussieht, wenn der Task es laufen läßt, das ist der interessante Punkt.

Gruß
Bitte warten ..
Mitglied: micneu
10.11.2010 um 22:04 Uhr
ist sftp nicht ftp über ssh oder so ähnlich?

deshalb würde ich einfach das passwort über schlüssel austauschen lasse.
so das es für den benutzer nicht mehr angegeben werden muss.

schau dir das
http://blog.murawski.ch/2010/04/ssh-authentifizierung-mit-privatekey/
und das
http://www.puddingonline.com/~dave/publications/SSH-with-Keys-HOWTO/doc ...
an....

prüfe mal ob es ein linux ist....
so ist euer script auch sicherer, das passwort ist nicht im klartext.

kannst ja auch mal schauen ob ihr, (bestimmt) wenn es ein linux server ist nicht mit scp löst.

gruß michael
Bitte warten ..
Mitglied: 60730
10.11.2010 um 22:58 Uhr
Moin,
Zitat von micneu:
ist sftp nicht ftp über ssh oder so ähnlich?

So ähnlich - SFTP ist etwas "besser" als Domain, da gibts nur zwei Varianten in der Computerwelt, was man damit meint

Ich glaub auch nicht daran, dass es SSHFTP ist, denn sonst hätte er ja mal einen Schlüssel importieren müssen (an sowas erinnert man sich doch)
Eher wird es wohl das simpleFTP sein, sollte bei der Übertragung nur einen Port (meistens 115) benutzen.

Aber auch das ist latte, wenn er "nur" im Event vom Task sieht, das ein Fehler produziert wurde, und nicht im Logfile.
Was ich so aus seinem Text rauslese.
Kann auch sein, das ich mich irre....

Moin,
Zitat von micneu:
ist sftp nicht ftp über ssh oder so ähnlich?

So ähnlich - SFTP ist etwas "besser" als Domain, da gibts nur zwei Varianten in der Computerwelt, was man damit meint

Ich glaub auch nicht daran, dass es SSHFTP ist, denn sonst hätte er ja mal einen Schlüssel importieren müssen (an sowas erinnert man sich doch)
Eher wird es wohl das simpleFTP sein, sollte bei der Übertragung nur einen Port (meistens 115) benutzen.

Aber auch das ist latte, wenn er "nur" im Event vom Task sieht, das ein Fehler produziert wurde, und nicht im Logfile.
Was ich so aus seinem Text rauslese.
Kann auch sein, das ich mich irre....

Aber ganz genau kriegt man das nur so heraus:

fetchperso.cmd:
01.
echo fetchperso.cmd 
02.
SET LOGFILE=h:\scripts\Personalstamm\personal 
03.
 
04.
echo "Masterdate transfer starting">>%LOGFILE%.log 
05.
echo Date: %date%>>%LOGFILE%.log 
06.
echo time: %time:~-11,8%>>%LOGFILE%.log 
07.
if exist h:\scripts\Personalstamm\. echo Drive h ready>>%LOGFILE%.log 
08.
 
09.
echo ConnecttoSFTPServer>>%LOGFILE%.log 
10.
SET LOGFILE=h:\scripts\Personalstamm\personal1.log 
11.
Set filetodownload=? 
12.
 
13.
call psftp.exe %servername%@%ipadress%-pw %password% -b SFTPCommands.DAT>>%LOGFILE% 
14.
 
15.
if not exist %filetodownload% goto error 
16.
copy h:\scripts\Personalstamm\%filetodownload% "H:\%mesname%\lohn_exp\">>%LOGFILE% 
17.
 
18.
del h:\scripts\Personalstamm\%filetodownload%.8>>%LOGFILE% 
19.
ren h:\scripts\Personalstamm\%filetodownload%.7 %filetodownload%.8>>%LOGFILE% 
20.
ren h:\scripts\Personalstamm\%filetodownload%.6 %filetodownload%.7>>%LOGFILE% 
21.
ren h:\scripts\Personalstamm\%filetodownload%.5 %filetodownload%.6>>%LOGFILE% 
22.
ren h:\scripts\Personalstamm\%filetodownload%.4 %filetodownload%.5>>%LOGFILE% 
23.
ren h:\scripts\Personalstamm\%filetodownload%.3 %filetodownload%.4>>%LOGFILE% 
24.
ren h:\scripts\Personalstamm\%filetodownload%.2 %filetodownload%.3>>%LOGFILE% 
25.
ren h:\scripts\Personalstamm\%filetodownload%.1 %filetodownload%.2>>%LOGFILE% 
26.
ren h:\scripts\Personalstamm\%filetodownload% %filetodownload%.1>>%LOGFILE% 
27.
 
28.
 
29.
dir h:\scripts\Personalstamm\%filetodownload%.1 |find "%date% %% echo "Job finished successfully">>%LOGFILE% 
30.
goto ende 
31.
 
32.
:fehler 
33.
echo "Job failed">>%LOGFILE% 
34.
 
35.
 
36.
:ende 
37.
echo Date: %date%>>%LOGFILE% 
38.
echo time: %time:~-11,8%>>%LOGFILE% 
39.
echo "---------------------------">>%LOGFILE%
File 3 (SFTPCommands.DAT)
01.
bin 
02.
cd out 
03.
get pers_aps.dat 
04.
bye
Du siehst, das ist etwas besser, aber grandios auf keinen Fall, denn wenn H nicht gefunden wird, schreibt er natürlich nix ins Log auf h:\
Ist das ne Freigabe oder ein lokaler Datenträger in der Kiste?

Gruß

Gruß
Bitte warten ..
Mitglied: Grosser-Bruder
11.11.2010 um 10:56 Uhr
Moin Moin,

so ist es .. Wenn das Script per Task gestartet wird, geschieht überhaupt nichts, keine Fehlermeldung (außer 0x1), kein Eintrag, keine Date, nadda..

Mit freundlichen Grüßen
Michael
Bitte warten ..
Mitglied: 60730
11.11.2010 um 12:35 Uhr
Salü,

mit welchem Account läuft denn das Script?

Nehm (d)einen Rechner, nimm die Zugangsdaten im task, mit denen du angemeldet bist und mache 3 pausen in das Script rein.
Dann siehst du auch, was er von dir will oder nicht will.

  • vor 13 (FTP) und danach eine Pause und als letzte Zeile.

btw: ist dir aufgefallen, dass ich aus deinen 2 Scripts eines gemacht habe und das Log so hybscher aussieht und vor allem ein Call vorm FTP Befehl steht?
Das ist deutlich sinniger, denn so (wie du es vorher hattest) rennt der lösch & Dateinamenumstricker evtl. schon, wenn die Datei gar nicht da ist, weil die noch gefetcht wird.


again: Auf die Frage, ob Heinrich ein lokales oder Netzwerklaufwerk ist, hast du immer noch nix geschrieben.
Normalerweise reagiere ich da nicht so gelassen...

Gruß
Bitte warten ..
Mitglied: Grosser-Bruder
11.11.2010 um 14:09 Uhr
Hey MIchael,

ist grade in der Klärung. Schauen wir mal, ob wir heute noch eine Antwort erhalten..

Mit freundlichen Grüßen
Bitte warten ..
Mitglied: Grosser-Bruder
11.11.2010 um 14:15 Uhr
Zitat von 60730:


Ich glaub auch nicht daran, dass es SSHFTP ist, denn sonst hätte er ja mal einen Schlüssel importieren müssen
(an sowas erinnert man sich doch)

--> Dies war definitiv nicht der Fall


Eher wird es wohl das simpleFTP sein, sollte bei der Übertragung nur einen Port (meistens 115) benutzen.

--> Es wird der Port 22 verwendet

Aber auch das ist latte, wenn er "nur" im Event vom Task sieht, das ein Fehler produziert wurde, und nicht im Logfile.
Was ich so aus seinem Text rauslese.
Kann auch sein, das ich mich irre....

--> Nein, du hast zu 100% recht.

Du siehst, das ist etwas besser, aber grandios auf keinen Fall, denn wenn H nicht gefunden wird, schreibt er natürlich nix
ins Log auf h:\
Ist das ne Freigabe oder ein lokaler Datenträger in der Kiste?

--> Das ist n lokaler Datenträger.

Werde mal dein Script testen, besten Dank bereits im Voraus
Bitte warten ..
Mitglied: Grosser-Bruder
11.11.2010 um 14:18 Uhr
again: Auf die Frage, ob Heinrich ein lokales oder Netzwerklaufwerk ist, hast du immer noch nix
geschrieben.

Normalerweise reagiere ich da nicht so gelassen...

Siehe oben, ist lokal.. Hätte Euch natürlich gerne früher geschrieben, aber hatte ein anderes Thema, das ich priorisieren musste. Merci für deine Geduld
Bitte warten ..
Mitglied: 60730
11.11.2010 um 14:19 Uhr
Zitat von Grosser-Bruder:
Hey MIchael,

ist grade in der Klärung. Schauen wir mal, ob wir heute noch eine Antwort erhalten..
*grmblfix*

da öffnet man das ftp Programm und schaut mit netstat -a welche Ports offen sind und die Suppe ist geklärt.
Und da du es irgendwie schaffst, meine Gegenfrage bezüglich des Heinrichs wiederholt zu ignorieren, mach ich das mit deinem Problem ab jetzt auch.
Mit freundlichen Grüßen
N8
Bitte warten ..
Mitglied: Grosser-Bruder
11.11.2010 um 14:35 Uhr
da öffnet man das ftp Programm und schaut mit netstat -a welche Ports offen sind und die Suppe ist geklärt.
Und da du es irgendwie schaffst, meine Gegenfrage bezüglich des Heinrichs wiederholt zu ignorieren, mach ich das mit deinem
Problem ab jetzt auch.

Ich habe überhaupt nichts ignoriert, schau doch mal in meinen Posts nach. Erst lesen, dann maulen Kammerad
Bitte warten ..
Mitglied: Grosser-Bruder
11.11.2010 um 14:39 Uhr
mit welchem Account läuft denn das Script?

Läuft mit dem lokalen Admin
Bitte warten ..
Mitglied: Grosser-Bruder
11.11.2010 um 15:35 Uhr
Hallo zusammen,

leider hat Timos Script ebenfalls nicht funktioniert. identisches Problem, wie auch bei meinem Script. Das Logfile ist nun deutlich schöner, Danke hierfür, aber leider ist das Problem immer noch das gleiche. Ich denke, wir sind auch auf der falschen Fährte.. Jeder versucht, den Fehler an dem Script zu suchen, denke jedoch nicht, dass es daran liegt.

Kann es sein, dass Windows ein Problem hat, mit dem Scheduler Programme zu starten, welche weitere Programme starten? Ggf. for security reasons??

Merci & bis bald

Michael
Bitte warten ..
Mitglied: Grosser-Bruder
12.11.2010 um 11:01 Uhr
Mahlzeit zusammen,

also es liegt, (wie ich die ganze Zeit schon vermutet und mehrfach erwähnt habe) nicht an dem Script. Habe mein Script, sowie Timos Script getestet. Beide laufen Lokal, aber nicht per Scheduled Task.

Per Scheduled Task, laufen die Scripte, wenn der Benutzer, welcher den Task ausführt, angemeldet ist. Natürlich, habe ich den Haken, "Run only if logged on" nicht gesetzt. Der Task kann mit einem lokalen, sowie mit einem Domänenbenutzer gestartet werden..

Nun stellt sich folgende Frage, WARUM muss der sch.... Benutzer angemeldet sein, um den Task zu starten..

Beste Grüße
Michael
Bitte warten ..
Mitglied: 60730
12.11.2010 um 12:21 Uhr
moin,

schau mal unter secpol.msc, ob er User in der gruppe "log on as batch job" überhaupt drin steht.
Wie ich die ganze Zeit schon vermutet habe (auch das "dämliche" Script wurde gestartet ins Logfile schreiben - passiert ja nicht) startet das Script halt schlicht und einfach nicht.

Und deine letzten Zeilen deuten darauf hin, dass der User nicht in der Gruppe steckt.

Jeder versucht, den Fehler an dem Script zu suchen
Stimmt nicht...

Gruß
Bitte warten ..
Mitglied: Grosser-Bruder
12.11.2010 um 13:22 Uhr
Mahlzeit Timo,

habe eben geprüft.. "Leider" stehen alle, insbesondere der entsprechende Benutzer darin..



Mit freundlichen Grüßen
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Windows Server
gelöst RDS Server 2012 DC R2 64 Bit Fehler bei Gruppenrichtlinien 0x77F (2)

Frage von Tsunami87 zum Thema Windows Server ...

Microsoft Office
32 Bit CAD Programm und Excel 64 Bit geht nicht (5)

Frage von GrueneSosseMitSpeck zum Thema Microsoft Office ...

Windows 10
gelöst MacBook Air Intel HD 3000 und Windows 10 64 bit? (8)

Frage von NeXiaL-Computers zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...