Python Script in der Aufgabenplanung von SmallBusinessServer

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
The Spirit
User
Beiträge: 276
Registriert: Freitag 8. Juni 2007, 08:50
Wohnort: 84xxx Bereich
Kontaktdaten:

HI.
Habe auf unserem SBS2008 ein Python script, was täglich um 00:30 ausgeführt wird.
Dieses checkt unseren FTP auf Änderungen und schreibt, falls änderungen vorhanden sind, diese in ein logfile mit zeitstempel.
Führe ich das script direkt aus, kann ich mögliche änderungen mit zeitstempel in einem logfile finden.
wenn ich das script aber im aufgabenplaner starten lassen, checkt das script zwar den ftp (sehe den zugriff), aber es schreibt nichts in das logfile.
auch wenn ich die aufgabe händisch im aufgabenplaner anwerfe, wird das script korrekt ausgeführt, aber wiederum nichts in das logfile geschrieben.
jemand ne idee woran das liegen kann?
danke
Benutzeravatar
sparrow
User
Beiträge: 4193
Registriert: Freitag 17. April 2009, 10:28

Wie genau schreibst du denn in die Logdatei?
The Spirit
User
Beiträge: 276
Registriert: Freitag 8. Juni 2007, 08:50
Wohnort: 84xxx Bereich
Kontaktdaten:

Code: Alles auswählen

FILE = open(filename,"a")
falls sich was ändert schreibe ich:

Code: Alles auswählen

FILE.writelines(str("Änderung am: ") + str(actual_time) + str("\t") + str(i))
falls sich nichts geändert hat:

Code: Alles auswählen

FILE.writelines("Änderung am: " + str(actual_time) + str("\t") + "Es wurden keine Änderungen gemacht.")
zuletzt kommt noch (in beiden fällen):

Code: Alles auswählen

FILE.writelines("\n")
FILE.close()
Benutzeravatar
sparrow
User
Beiträge: 4193
Registriert: Freitag 17. April 2009, 10:28

Was ist denn filename? Absoluter oder relativer Pfad? Und welches Verzeichnis?

Edit: Und mit welchen Rechten lässt du das Script laufen?
The Spirit
User
Beiträge: 276
Registriert: Freitag 8. Juni 2007, 08:50
Wohnort: 84xxx Bereich
Kontaktdaten:

hab das script in ne exe konvertiert, damit ich auf dem server kein python installieren muss.
die exe führe ich mit lokalen admin rechten aus und der pfad ist relativ angegeben.
Benutzeravatar
sparrow
User
Beiträge: 4193
Registriert: Freitag 17. April 2009, 10:28

The Spirit hat geschrieben:die exe führe ich mit lokalen admin rechten aus und der pfad ist relativ angegeben.
Versuch mal einen absoluten Pfad ('c:\\testlog.txt')
Ich hatte auf einem 2003-Server einmal das Problem, dass die Verknüpfung auf das Programm das Arbeitsverzeichnis zerreißt. Ich bin mir nicht sichr welches der Task-Sheduler heutzutage verwendet.
The Spirit
User
Beiträge: 276
Registriert: Freitag 8. Juni 2007, 08:50
Wohnort: 84xxx Bereich
Kontaktdaten:

fehler gefunden.
möglicherweise war es der absolute pfad, aber das wollte ich eigentlich nciht ändern.
hab jetzt gesagt, das das ausführungsziel der ordner meines programms ist, und voila, er schreibt auch in das logfile, welches im gleichen ordner liegt.
BlackJack

@The Spirit: Diese ganzen `str()`-Aufrufe sehen mir nicht nach Python aus. Und Namen in komplett Grossbuchstaben sind eigentlich für Konstanten vorgesehen.

Last but not least: `writelines()` erwartet ein iteriertbares Objekt und schreibt jedes Element davon per `write()` in die Datei. Und Zeichenketten sind iteriertbar -- sie liefern jedes Zeichen einzeln. Besonders effizient ist das so nicht.
The Spirit
User
Beiträge: 276
Registriert: Freitag 8. Juni 2007, 08:50
Wohnort: 84xxx Bereich
Kontaktdaten:

danke für die hinweise.
dann werd ich das mal überarbeiten.

edit:
wie würdest du das dann mit dem write in das logfile machen?
Benutzeravatar
sparrow
User
Beiträge: 4193
Registriert: Freitag 17. April 2009, 10:28

Code: Alles auswählen

FILE.writelines(str("Änderung am: ") + str(actual_time) + str("\t") + str(i))
wird zu:

Code: Alles auswählen

FILE.write("Änderung am: %s \t %i" % (actual_time, i))
Falls i ein Integer ist.


Ungetestet...


Edit: dein String-Zeugs ist aber auch unübersichtlich ;)
The Spirit
User
Beiträge: 276
Registriert: Freitag 8. Juni 2007, 08:50
Wohnort: 84xxx Bereich
Kontaktdaten:

des war auch schnell zusammengeschubst.

ich hab das aktuell draus gemacht:

Code: Alles auswählen

logfile.writelines("Änderung am: " + str(actual_time) + "\t" + str(i))
zusatz:
das mit den writelines hab ich auch genommen, weil mir das object FILE oder jetzt logfile (ist das gleiche, hab hier nur die variable getauscht) nur writelines direkt in eclipse angeboten hat ;-)
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Äh, verwendest du PyDev? - dort wird sehr wohl auch "write" direkt bei einem File Object angeboten.
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
The Spirit
User
Beiträge: 276
Registriert: Freitag 8. Juni 2007, 08:50
Wohnort: 84xxx Bereich
Kontaktdaten:

jo tu ich.
hab es jetzt auch gesehen.
könnte aber schwören, das das vorher nicht da war.
danke für den hinweis.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

The Spirit hat geschrieben:ich hab das aktuell draus gemacht
Also den Tipp ignoriert. Interessante Formulierung.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
The Spirit
User
Beiträge: 276
Registriert: Freitag 8. Juni 2007, 08:50
Wohnort: 84xxx Bereich
Kontaktdaten:

war nicht als ignorieren gedacht.
aber hatte zwischenzeitlich schon mal aus

Code: Alles auswählen

str("blabla")
einfach schon mal

Code: Alles auswählen

("blabla")
gemacht.
aber den tip hab ich natürlich schon umgesetzt. :wink:
Antworten