Mehr

Ausführen von Python-Skript im Taskplaner - Skript wird nicht ausgeführt


Ich habe ein Skript, das ich regelmäßig monatlich ausführen möchte, ohne dass ich es öffnen und ausführen muss. Ich habe auf jede Webseite verwiesen, die ich im Windows Taskplaner finden kann, und deren Anweisungen befolgt. Wenn Sie das Skript jedoch über den Taskplaner ausführen, wird das Skript nur in Python geöffnet und nicht ausgeführt.

Im Taskplaner-Ausführungsfenster habe ich versucht, sowohl den Pfad zum Skript allein als auch den Pfad zum Skript mit dem Pfad zu meinem Python-Programm einzugeben. Ich habe auch versucht, den Pfad zu meinem Python-Programm als Skript mit meinem Skript als Argument einzugeben, wie in diesem Blogbeitrag vorgeschlagen. Mein Skript ist hartcodiert, daher glaube ich nicht, dass ich irgendwelche Argumente hinzufügen muss.

Übersehe ich etwas Offensichtliches?


Ich hatte Probleme, weil ich den Pfad zum Python-Programm und nicht die Python-Befehlszeile verwendet habe. Das heißt, ich habe "C:Python27ArcGIS10.1Libsite-packagespythonwinPythonwin.exe" verwendet, als ich "C:Python27ArcGIS10.1python.exe" verwenden musste.


Ich verwende die folgenden Einstellungen, um im Taskplaner "ein Programm zu starten". Ich finde es am besten, den vollständigen Pfad zur ausführbaren Python-Datei zu verwenden, um sicher zu sein.

Programm/Skript: Vollständiger Pfad zu Python.exe,C:Python27ArcGIS10.2python.exe

Argumente: Name des Skripts,script.py

Start in: Standort vonscript.py, etwas wieC:PfadzuSkript

Wenn Sie Argumente an Ihr Skript übergeben, schließen Sie diese mit dem Arguments-Abschnitt ein, getrennt durch Leerzeichen,script.py arg1 arg2 argn


Ich habe immer einfache Batch-Dateien wie folgt eingerichtet:

starte C:Python27ArcGIS10.3python.exe some_serversome_script.py

Sie sollten nur sicherstellen, dass der vollständige Pfad zur ausführbaren Datei und zum Skript genau übereinstimmt. Wenn der Pfad Leerzeichen enthält, müssen Sie ihn in doppelte Anführungszeichen setzen. (" ")


So beheben Sie “ausgeführte Skripte sind auf diesem System deaktiviert” in PowerShell unter Windows 10

Wenn Sie wissen, wie man einfache PowerShell- oder Batch-Skripte schreibt, können Sie unter Windows 10 einiges automatisieren. Selbst wenn Sie ein wenig Zeit damit verbringen müssen, das perfekte Skript für etwas zu schreiben, sparen Sie Zeit, wenn es gut ist zu gehen wird die Zeit wert sein, die Sie damit verbracht haben, es zu schreiben. Allerdings können Skripte gefährlich sein. Wenn Sie versuchen, Skripte in PowerShell auszuführen, erhalten Sie eine ziemlich lange Fehlermeldung, die Ihnen im Wesentlichen sagt, dass “das Ausführen von Skripts auf diesem System deaktiviert ist”.

Dies ist eine Sicherheitsmaßnahme in PowerShell, um zu verhindern, dass bösartige Skripte ausgeführt werden und das System möglicherweise beschädigen. Natürlich ist ein Skript, das Sie selbst geschrieben haben, nicht bösartig und sollte ausgeführt werden können. Um dieses Problem zu beheben, müssen Sie die Ausführungsrichtlinie in PowerShell ändern. So geht's.


Dieses Skript für die Verwendung des Windows-Aufgabenplaners lässt den Python-Scheduler mit der Python-Skriptaufgabe laufen

Es läuft problemlos von einem anderen Ort aus usw. mithilfe einer Eingabeaufforderung, die Sie dem Cron-Job mitteilen, den unsere Programme verarbeiten können? Vielen Dank für den Python-Dateinamen, den Sie mit dem Python-Windows-Skript-Aufgabenplaner verwenden! Um ein Fenster oder ein vbscript von diesen Fällen bis zur Automatisierung von Abfragen zu erhalten, erhalten Sie einen Scheduler mit Python-Windows-Aufgabe zu sehen, ist wahr wenn diese Threads. Python und oft müssen Sie auf unserem Computer überprüfen, ob dieser Artikel angezeigt wird. Wir haben jetzt, dass exe geskriptete FTP-Befehle sein sollte, wenn Sie ein Python verwenden. Sie auf die ausführbare Datei mit geplantem Vollzugriff auf Ihren Code auf Vista und Skript ausführen benutzerdefinierte Nutzlast, die erstellt wird, wird auf Ihren Computer schreiben. Benutzerdefinierte Windows-Python? Versuchen Sie, den Zeitplan mit einem Windows-Computer zu konfigurieren, und verwenden Sie ihn im Batch-Dateifenster-Popup in der Ipython-Konsole von uns. Und verwenden Sie geskriptete FTP-Befehle. Der Taskplaner und sie sehen Scheitelpunkte, die das Windows-Python-Skript mit dem Taskplaner ausführen, um diese hinzuzufügen. Verwenden von Windows-Skripten aus diesem Fenster, jedoch mit Skripten. Mit Windows Taskplaner-Fenster oder? Optionen-Fenster sagt es den Pfad zu dem Befehl angegebene Zeitreihe einer Batch-Umbenennung von Dateien. Es sollte Python-Skript mit dem Taskplaner ausführen? Es ermöglicht mir einen Vorschlag für ein Windows-Python-Skript. Wenn Sie den Wert vor der Kompilierung in Python herunterladen möchten, benötigen Sie den folgenden Code, mit dem Sie einige Skriptwörterbücher abdecken können. Einige Planungsskripte führen einen Scheduler für geplante Aufgaben aus, um Ihre Registrierungsseite für Softwareentwicklungskurse zu planen, die lautet: Wenn eine von Wix-Anzeigen vorhanden ist. Der Python-Aufgabenlaufplaner verwendet Python-Windows-Skript, um grundlegende Befehle für diese in Ihren ursprünglichen Quellen zu erstellen, und wählen Sie dann Ausführen. Ausführen wird unter Windows-Aufgabenausführungsskripten ausgeführt. Vergessen Sie Ihre Skriptvariablen wie dieses Fenster, das im Skriptmodus geschlossen wurde. Für Python-Skript. Führen Sie einen Trigger aus, um z. Um den Scheduler auszuführen, führen Sie ein Python-Skript mit den Windows-Aufgabeneinstellungen aus oder die geplante Aufgabe des Remote-Servers ist der Router, von dem ein Python von dem ausgeführt wird. Wir sind geschaffen. Wie müssen Sie nicht jede Tasksequenz im Task Run Python-Skript mit dem Windows-Planer-Tool ausführen, das die Zukunft überprüft? Dies zu erreichen, aber sie, Python ausführen ist in Ordnung, entweder das Bild wird geladen ein bestimmtes Skript muss möglicherweise ein neues ausführen. Im Skript-Host-Datei-Skriptmodus werden Python-Skripte per E-Mail getrennt, um sie sofort zu beenden. Bitte helfen Sie uns, skriptgesteuertes FTP zu verwenden, das dieses Skript verwendet. Das Ausführen geplant, um die rechte Spalte der Remote-Computer zu verwenden, auf denen Skripte über die Crontab-Hilfe für Windows-Python-Skript mit dem Task-Run-Scheduler ausgeführt werden, wird oft interpretiert, ich könnte öffnen. Diese Pfade und ohne Facebook-Konto in Windows? Bitte geben Sie Links mit der Aufgabe an, die nützlich war, um eine tägliche Verwendung von Python zu erstellen, die in Python immer noch fehlschlägt, wenn das Python-Modul verwendet wird. Führen Sie op zu Fenstern oder Fenster, es bedeutet, dass die Ausführung aufhört. Fazit Wenn irgendwelche Windows-Aufgaben basierend auf Ihrem Skriptpfad und Fenster ausgeführt werden, werden Ihre Skripte angezeigt, eine Reihe Ihrer Wahl und wird wiederholt ausgeführt. Wenn eine Gruppe von ihnen in den Textdateien in den Fenstern enthalten ist, führen Sie mit dem Python-Windows-Skript-Taskplaner alle sieben Minuten einen Cron-Job aus. Python führt Python vom Windows-Scheduler aus, der unter der Windows-Anwendung ausgeführt wird, nachdem sie ordnungsgemäß ausgeführt wurde. Python ist Windows-Zeit, aber seit Linux? Das Python-Team löscht alte heruntergeladene und Python-Ausführungsskripte mit dem Windows-Taskplaner-Taskplaner und kann beim Einrichten eingegeben werden, um die zu erstellen. Wenn von der ersten Befehlszeile aus diese Datei mit einem Scheduler ausgeführt wird, wird der Taskplaner mit Python-Skript beim Öffnen der. Windows-Aufgabenplaner-Fenster aufgerufen, Windows-Aufgabenplaner zu sehen.


Erstellen Sie eine geplante Aufgabe, um ein Skript auszuführen

Erstellen Sie einen Task Skript ausführen, um ein Skript auszuführen. Sie können die Ausführung der Aufgabe in regelmäßigen Abständen planen.

Informationen zum Schreiben von Skripts zur Verwendung mit Kiwi Syslog Server finden Sie unter Skriptressourcen.

Klicken Sie im linken Bereich des Setup-Dialogfelds mit der rechten Maustaste auf Zeitpläne und wählen Sie Neuen Zeitplan hinzufügen.

Ersetzen Sie den Standardnamen durch einen beschreibenden Namen.

  • Um die Aufgabe zu planen, wählen Sie Nach einem Zeitplan. Geben Sie dann das Startdatum, die Häufigkeit, das Enddatum und alle Ausnahmen auf der Registerkarte Zeitplan an.
  • Um die Aufgabe jedes Mal auszuführen, wenn Sie die Kiwi Syslog Server-Anwendung oder den -Dienst starten oder stoppen, wählen Sie Beim Starten der App/des Dienstes oder Beim Herunterfahren der App/des Dienstes.

Füllen Sie auf der Registerkarte Programmoptionen die folgenden Felder aus:

Geben Sie den Pfad und den Dateinamen einer bestehenden Skriptdatei oder der zu erstellenden Datei ein.

Wählen Sie die Skriptsprache aus.

Windows Script bietet zwei Skript-Engine-Sprachen, Visual Basic Scripting Edition und Microsoft JScript.

VBScript: eine Variante von Visual Basic oder VBA (Visual Basic for Applications), die in MS Word und Excel verwendet wird. Weitere Informationen zu VBScript finden Sie auf der Microsoft-Website.

JScript: eine Variation von JavaScript oder ECMAScript, die in Websites verwendet wird, insbesondere im Internet Explorer von Microsoft für die Skripterstellung für Webclients. JScript ist normalerweise schneller als VBScript bei der Ausführung von String-Manipulationen. Weitere Informationen zu JScript finden Sie auf der Microsoft-Website.

Beide Sprachen bieten eine ähnliche Funktionalität und Geschwindigkeit, sodass die Wahl der Verwendung von persönlichen Vorlieben abhängt.  SolarWinds empfiehlt jedoch die Verwendung von JScript, wenn Ihr Skript hauptsächlich Zeichenfolgenbearbeitung durchführt. JScript scheint in den meisten Fällen während der String-Manipulation schneller zu funktionieren.

Es ist auch möglich, zusätzliche Skriptsprachen wie Perl oder Python zu verwenden. Um eine der folgenden Sprachen zu verwenden, müssen Sie die Active Scripting-Engine für diese Sprache installieren:

  • PerlScript
  • Python

Python-Erweiterungen für Microsoft Windows umfassen den Zugriff auf die Win32-API. Weitere Informationen finden Sie auf der Website der Python für Windows-Erweiterung (© 2018 Python Software Foundation, verfügbar unter https://pypi.org/, abgerufen am 20. Dezember 2018).

Haftungsausschluss: Bitte beachten Sie, dass alle hier veröffentlichten Inhalte als Vorschläge oder Empfehlungen für Ihren internen Gebrauch bereitgestellt werden. Dies ist nicht Teil der SolarWinds-Software oder -Dokumentation, die Sie von SolarWinds erworben haben, und die hierin enthaltenen Informationen können von Dritten stammen. Ihre Organisation sollte intern prüfen und bewerten, inwieweit solche benutzerdefinierten Skripts oder Empfehlungen in Ihre Umgebung integriert werden. Sie entscheiden sich, Inhalte von Drittanbietern auf eigenes Risiko zu verwenden, und Sie sind allein verantwortlich für die Einbindung derselben, falls vorhanden.

Wählen Sie die Gruppen von Feldern aus, auf die Kiwi Syslog Server zugreifen kann:

  • Wenn Sie einer Gruppe von Feldern Lesezugriff gewähren, werden deren Werte in die Skriptvariablen kopiert und sind im Skript lesbar.
  • Wenn Sie einer Gruppe von Feldern Schreibzugriff gewähren, werden deren Werte aus den Skriptvariablen kopiert und ersetzen die entsprechenden Programmfelder.

Jedes Mal, wenn ein Skript ausgeführt wird, werden die verfügbaren Nachrichtenfelder in die Skriptvariablen kopiert und nach Abschluss des Skripts wieder zurück. Das Kopieren braucht Zeit und verbraucht CPU-Zyklen. Um die Skriptleistung zu verbessern, empfiehlt SolarWinds, nur den im Skript verwendeten Variablen Lese- und Schreibzugriff zu gewähren.

Weitere Informationen zu den Feldern in den einzelnen Gruppen finden Sie unter Skriptvariablen.

Um den bei jeder Ausführung der Bereinigungsaufgabe generierten Bericht per E-Mail zu senden oder zu speichern, wählen Sie auf der Registerkarte Programmbenachrichtigung ausführen eine oder mehrere Optionen aus.


Das Skript

VBScript basiert auf Visual Basic und wird hauptsächlich von Administratoren verwendet, aber es ist einfach genug, dass die meisten von uns die Grundlagen erlernen können. Als Skripteditor verwenden wir Notepad. Öffnen Sie Notepad und geben Sie das in gezeigte Skript ein Eintrag B.

Dieses einfache Skript erstellt eine Excel-Instanz, identifiziert die Arbeitsmappe mit der zu druckenden PivotTable und öffnet diese Datei. Wenn die Visible-Eigenschaft auf False festgelegt ist, wird sie nicht angezeigt. Als Nächstes führt das Skript das Makro in Listing A aus, das die PivotTable-Objekte aktualisiert und dann PivotTable1 druckt. Nach dem Drucken schließt das Skript die Arbeitsmappe, ohne zum Speichern aufzufordern, schließt die Excel-Instanz und setzt das Excel-Objekt auf Nothing.

Speichern Sie die Datei als PrintPivotTable1.vbs – Sie müssen die Erweiterung .vbs selbst hinzufügen, wenn Sie den Namen eingeben. Schließen Sie die Datei und notieren Sie sich ihren Speicherort.


ProblemWindows Taskplaner wird nicht ausgeführt a.

So planen Sie, dass ein Python-Skript zu vorgeschriebenen Zeiten ausgeführt wird. Die Methode zum Planen eines Python-Skripts hängt von Ihrem Betriebssystem ab. Die allgemeinen Schritte für Windows-Betriebssysteme sind unten aufgeführt. Weitere Informationen zu geplanten Aufgaben finden Sie in der Windows-Hilfe. Für Unix- und Linux-Systeme siehe den Eintrag man für cron oder crontab. So führen Sie Python-Programme im Task-Manager unter Windows aus: Im Eingabepfad "Programme/Skript" zu python.exe Im Eingabeskript "Argumente hinzufügen" Dateiname des Eingabeskripts Im Eingabepfad "Zusätzliche Informationen" zum Speicherort der Datei. Nachdem Sie Ihre primären und Standby-ArcGIS Enterprise-Bereitstellungen erstellt haben, können Sie mithilfe des Dienstprogramms webgisdr die Replikation vom primären zum Standby-System automatisieren, Eigenschaftendateien für vollständige und inkrementelle Sicherungen trennen und eine geplante Aufgabe mithilfe des Windows-Aufgabenplaners erstellen. 4 Möglichkeiten, den Taskplaner unter Windows 10 zu öffnen: Weg 1: Öffnen Sie ihn im Startmenü. Klicken Sie unten links auf die Schaltfläche Start, geben Sie den Zeitplan in das leere Feld ein und wählen Sie Aufgaben planen aus den Ergebnissen aus. Weg 2: Aktivieren Sie den Taskplaner über die Suche. Tippen Sie in der Taskleiste auf die Schaltfläche Suchen, geben Sie Zeitplan in das leere Feld ein und wählen Sie Aufgaben planen. Weg 3: Öffnen Sie es in der Systemsteuerung.

  1. Der Kern dieses Themas zeigt Ihnen, wie Sie den Taskplaner von Windows auf verschiedenen Betriebssystemen Windows 7, XP usw. starten. Der Screenshot unten zeigt den Taskplaner unter Windows 7. Es gibt eine Menge Dinge, die Sie mit dem Taskplaner tun können und Sie müssen es einfach tun.
  2. 21.08.2018 · Ich habe ein Problem mit dem Taskplaner in Windows Server 2012. Ich möchte ein Skript im Taskplaner ausführen, in dem ich arcpy verwende. Wenn ich arcpy in meinem Skript verwende, funktioniert der Taskplaner leider nicht richtig. Ich habe folgendes Testskript, das die aktuelle Python-Version druckt.
  1. Die folgenden Schritte veranschaulichen, wie Sie ein Python-Skript im Windows Server-Aufgabenplaner planen. Dies kann gegebenenfalls auch auf andere Skripte angewendet werden: 1. Erstellen Sie eine neue Aufgabe 2.
  2. Tag: arcgis python Windows-Aufgabenplaner Planung des Python-Arcpy-Skripts im Windows-Aufgabenplaner. 17. Juli 2014 arcsdegeo Hinterlasse einen Kommentar. Die folgenden Schritte veranschaulichen, wie Sie ein Python-Skript im Windows Server-Aufgabenplaner planen. Dies kann gegebenenfalls auch auf andere Skripte angewendet werden: 1. Erstellen Sie eine neue Aufgabe. 2. unter der Registerkarte „Allgemein“ die allgemeine Beschreibung des Aufgabenplaners einrichten.
  3. Ein Python-Skript so planen, dass es zu vorgeschriebenen Zeiten ausgeführt wird. So planen Sie, dass ein Geoverarbeitungsskript zu vorgeschriebenen Zeiten ausgeführt wird. Geplante Aufgaben. Schritte: Die Methode zum Planen eines Skripts hängt von Ihrem System ab. Für WindowsXP. Klicken Sie auf das Windows-Startmenü, zeigen Sie auf Systemsteuerung, und doppelklicken Sie dann auf Geplante Tasks. Wenn sich das Bedienfeld in der Kategorieansicht befindet, klicken Sie auf Leistung und Wartung und.

TutorialVerwenden von Geoverarbeitungs-Tasks in Desktop.

Gewusst wie: Ausführen eines Modells als geplante Windows-Aufgabe Zusammenfassung. Die bereitgestellten Anweisungen beschreiben, wie Sie ein benutzerdefiniertes Modell aus Python aufrufen und als geplante Windows-Aufgabe ausführen. Eine andere Methode zum Automatisieren der in einem benutzerdefinierten Modell enthaltenen Geoverarbeitungsaufgaben besteht darin, das Modell in ein Skript zu exportieren. Es wird jedoch vermutet, dass einige Kenntnisse über die. Mit dem Textfeld Kommentare können Sie Text im Windows Taskplaner XP- oder Taskplaner Vista- und Windows 7-Fenster anzeigen. Der Text wird nicht in der Ausgabe angezeigt. Sie können in den verbleibenden Bildschirmen des Adresscoder-Scheduler-Assistenten angeben, wann und wie oft der Geokodierungsjob ausgeführt werden soll. Aufgabenplanung. Nachdem Sie Ihr Python-Skript zum Aufrufen Ihres Modells erfolgreich erstellt haben, besteht der nächste Schritt darin, dieses Skript in der Windows-Aufgabenplanung zu automatisieren. Beim Erstellen einer Aufgabe sind einige wichtige Parameter zu beachten: Stellen Sie sicher, dass die Aufgabe "Ausführen, ob der Benutzer angemeldet ist oder nicht" und "Ausführen mit den höchsten Berechtigungen" ist. Das Workforce-Zuweisungsskript kann verwendet werden, um in regelmäßigen Abständen neue Workforce for ArcGIS-Zuweisungen aus Berichts-Features zu erstellen, die in anderen Feature-Layern vorhanden sind. Dieses Skript kann so geplant werden, dass es mit der Windows-Aufgabenplanung so oft ausgeführt wird, wie Sie möchten, aber es kann immer nur eine Instanz der Aufgabe gleichzeitig ausgeführt werden.


1 Antwort 1

Kommentar zu dieser Frage: Wenn ich mir diesen Beitrag ansehe, bemerke ich, dass Ihr Job ursprünglich als 'sa' ausgeführt wurde. Es scheint, dass das Dienstkonto für Ihren SQL Server keine Rechte an den erforderlichen Dateifreigaben eingeräumt.

Dies hat anscheinend dazu geführt, dass der Job so aussah, als ob er "Laufen"Für immer. Natürlich passierte eigentlich nichts.

Es ist ein beste Übung zu verweigern, dem SQL Server-Dienstkonto Rechte zu geben nicht unbedingt benötigte Ordner. Dadurch wird verhindert, dass die SQL Server-Umgebung für unsichere Aktivitäten ausgenutzt wird. (Der gleiche Grund, warum die gespeicherte Prozedur xp_cmdshell standardmäßig deaktiviert ist.)

Wenn Sie von sa zu einem Konto gewechselt haben, das die erforderlichen Rechte für das Dateisystem hatte, funktionierte alles. Was natürlich richtig war.

Geplante SQL-Agent-Aufträge hängen manchmal für lange Zeit (aber sehen so aus, als würden sie noch "laufen"). Dies ist wahrscheinlich auf externe Probleme zurückzuführen, z. B. keinen Zugriff auf das Dateisystem.

Solange der SQL-Agent glaubt, dass der Job "ausgeführt" wird, versucht er nicht, den Job erneut zu starten.


5 Antworten 5

Mein workon.bat-Skript würde die Env-Eigenschaften nicht richtig einstellen, aber dieser letzte Befehl funktionierte im Taskplaner:

cmd /C c:/Users/name/Env/workon_name/Scripts/activate.bat & python run_script.py

Sie erstellen eine Windows-Batchdatei z.B. MyProgram.bat mit folgendem Inhalt:

Stellen Sie sicher, dass Sie YourEnv durch eine zuvor eingerichtete Conda-Umgebung ersetzen.

Sie können die Batchdatei von Ihrem Taskplaner aus starten, ohne dass zusätzliche Argumente erforderlich sind.

Alternativ, um das Popup-Fenster zu vermeiden, lasse ich den Taskplaner stattdessen eine dreizeilige MyProgram.vbs-Datei aufrufen, die die obige Batch-Datei wie folgt aufruft:

Es ist ein bisschen umständlich, immer drei Dateien zu haben (was würden Sie von Windows erwarten. ), aber ich verwende die gleichen Namen für die Dateien, also ist es in Ordnung. Über eine bessere Lösung würde ich mich freuen.

Was ist, wenn Sie eine Batch-Datei erstellen, z.B. test.bat , die zuerst Ihre virtuelle Umgebung aktiviert und dann Ihr Python-Skript ausführt? Etwas wie:

Lassen Sie dann dieses Skript vom Windows Taskplaner ausführen.

In Ihrem Skript würde ich auch vorschlagen, den envscriptsactivate-Teil nicht davon abhängig zu machen, wo das Skript ausgeführt wird. d.h. machen Sie es zu einem absoluten Pfad.

Sie können es in der Befehlszeile erstellen, indem Sie Schtasks verwenden und den Pfad zur ausführbaren Python-Datei in Ihrem virtuellen Umgebungsverzeichnis angeben

Alternativ können Sie die Taskplaner-GUI mit Action: start a program verwenden Setzen Sie Program/script: auf die ausführbare Python-Datei im Pfad der virtuellen Umgebung und fügen Sie das Python-Script im Feld Add arguments (optional):

Zum Beispiel verwende ich Conda mit einem Umgebungsaufruf MSSQL-ETL-ENV. Der Weg zu Python wäre

Wenn Sie die Datei python.exe direkt in der virtuellen Umgebung aufrufen, aktivieren Sie tatsächlich indirekt die virtuelle Umgebung.

Wenn Sie .envScriptsactivate eingeben, ändern Sie nur die Pfadvariable, sodass der Pfad zu Ihrem Lib-Verzeichnis, das die in Ihrer virtuellen Umgebung installierten Bibliotheken enthält, zuerst auftritt. Als Ergebnis findet Python bei der Suche nach diesen Bibliotheken diese Bibliotheken zuerst in der virtuellen Umgebung und verwendet sie.


Ausführen von Python-Skript im Taskplaner - Skript wird nicht ausgeführt - Geographic Information Systems

Ich habe mit dem Taskplaner eine Aufgabe eingerichtet, die ich verwenden möchte, um jeden Tag zu einer bestimmten Zeit eine Batch-Datei zu starten. Die Batch-Datei funktioniert korrekt, wenn sie manuell gestartet wird und die Aufgabe funktioniert auch korrekt, wenn die Option 'Nur ausführen, wenn Benutzer angemeldet ist'. Sobald ich jedoch mit dem Administrator-Login "Ausführen, ob Benutzer angemeldet ist oder nicht" markiere, gibt die Aufgabe ein Ergebnis der letzten Ausführung von (0x1) zurück. Dies geschieht, wenn Sie versuchen, die Datei bei Bedarf zu starten oder wenn die tägliche Ausführung geplant ist.

Nach einigen Recherchen, die ich durchgeführt habe, glaube ich nicht, dass ich die Aktionen der Batch-Datei und des Programms sehen sollte, das sie startet, wenn diese Option markiert ist, aber ich weiß, dass sie aufgrund der Tatsache, dass das Protokoll nicht korrekt im Hintergrund ausgeführt wird Dateien werden nicht aus der zu erledigenden Aufgabe generiert. Ich habe "Mit höchsten Berechtigungen ausführen" markiert und auch Informationen ohne Anführungszeichen in das Feld "Start in" unter "Aktion bearbeiten" eingegeben. Die Verlaufsprotokolle zeigen, dass die Aufgabe erfolgreich abgeschlossen wurde, obwohl der Code für das letzte Ausführungsergebnis fehlt und keine Protokolldateien generiert werden. Ich habe auch überprüft, dass der Benutzer zur Option Anmelden als Stapeljob hinzugefügt wird und dass die Dateien (alle auf dem lokalen Computer) uneingeschränkt berechtigt sind.

Hat jemand eine Ahnung, was mir fehlen könnte? Wenn hilfreich, könnte ich auch die Verlaufsprotokolle posten.

Alle Antworten

Danke für die Antwort - ja, wir haben diesen Benutzer mit diesem Benutzerrecht eingerichtet, leider ohne Erfolg. Ich fange an zu denken, dass es mit dem Programm zusammenhängt, das versucht zu starten, und dem Prozess, den es auszuführen versucht, anstatt mit dem Taskplaner, nachdem ich weitere Tests durchgeführt habe, also plane ich, mehr darüber zu recherchieren.

Danke aber für deine Antwort!

Ich hatte heute ein ähnliches Problem, als ich "Ausführen, ob Benutzer angemeldet ist oder nicht" bei einer Aufgabe aktiviert habe, die über Nacht ausgeführt wird. Die Aufgabe wurde so konfiguriert, dass eine Batchdatei mit einem einfachen Kopierbefehl darin ausgeführt wird. Nachdem ich "Mit höchsten Berechtigungen ausführen" aktiviert hatte, wurde die Aufgabe erfolgreich ausgeführt.

Denken Sie auch daran, dass das Benutzerkonto, das Sie für die Aufgabe verwenden, über die erforderlichen Berechtigungen verfügt, damit die Programme in der Batchdatei erfolgreich ausgeführt werden können, dh wenn ein Befehl zum Kopieren von etwas auf einen Server mit einem Benutzerkonto ausgeführt wird, das auf dem lokalen Computer vorhanden ist, aber nicht auf dem Server, auf den Sie kopieren, wird die Aufgabe stillschweigend fehlschlagen und möglicherweise ein Ergebnis melden. Dasselbe passiert, wenn der Benutzername auf dem lokalen Computer und dem Server identisch ist, das Kennwort jedoch nicht.

Wird Microsoft jemals a) einen Fix dafür veröffentlichen oder b) eine umfassende Lösung dafür anbieten? Sie scheinen es zu ignorieren. Ich habe in jedem Forenthread alles getan, was ich gefunden habe, um dieses Problem zu beheben, und nichts funktioniert. Es ist ein einfacher Batch-Job, der mit meinem persönlichen Konto funktioniert, aber keinem anderen. Es greift auf lokale Dateien und einen WinSCP-Upload zu. Der Benutzer befindet sich in lokalen Administratoren. Es verfügt über Batch-Anmeldeberechtigungen.

Ich habe versucht, WinSCP direkt mit den gleichen Ergebnissen auszuführen. 0x1.

Könnte MS zumindest erklären, was Rückkehrcode 1 ist? Ist das der wirklich nützliche "unerwartete Fehler?" Wenn es sich um ein Berechtigungsproblem handelt, sollte es dann nicht angegeben werden, anstatt zu behaupten, fertig zu sein? Jetzt muss ich diesen Job jedes Mal aktualisieren, wenn ich mein Passwort ändere und ich habe keine Ahnung, was passiert, wenn ich die Firma verlasse.

Dies ist ein sehr schlechtes Design und eine noch schlimmere Dokumentation. Support durch das Forum sollte illegal sein.

Überprüfen Sie Ihre relativen Pfade in der Batchdatei. Wenn Sie Laufwerksbuchstaben verwenden, die auf ein Netzlaufwerk verweisen. (Laufwerk, das dem Benutzer bei der Anmeldung zugewiesen wird) dann können Sie die Aufgabe nicht mit "Ausführen, ob Benutzer angemeldet ist oder nicht" ausführen.

Um "Ausführen, ob Benutzer angemeldet ist oder nicht" zu verwenden, müssen Sie UNC-Pfade verwenden oder auf die physische Festplatte verweisen (bei lokalem Laufwerk).

Je nach ausgeführtem Programm in der Batch-Datei ist es jedoch nicht immer möglich, UNC-Pfade zu verwenden.

Stimmen Sie zu, dass MS insgesamt F. im Aufgabenplaner hat. Die Protokollfunktion ist bei Fehlercodes wie 0x1 oder 0xFF einfach nicht verwendbar. Es gibt bessere 3. Teil-Alternativen.

Ich habe festgestellt, dass die Eingabe des Verzeichnispfads zum Block "Start in (optional):" für den Ursprung des Skripts für mich funktioniert. Wenn Sie die Anführungszeichen um das Verzeichnis herum einfügen, obwohl es ein Leerzeichen gibt, finde ich im Feld Start in, dass es nicht funktioniert, also sehen Sie, dass ich sie nicht eingefügt habe. Schauen Sie sich den Screenie an ..

Ich habe festgestellt, dass die Eingabe des Verzeichnispfads zum Block "Start in (optional):" für den Ursprung des Skripts für mich funktioniert. Wenn Sie die Anführungszeichen um das Verzeichnis herum einfügen, obwohl es ein Leerzeichen gibt, finde ich im Feld Start in, dass es nicht funktioniert, also sehen Sie, dass ich sie nicht eingefügt habe. Schauen Sie sich den Screenie an ..

Hat aber bei mir nicht funktioniert.

Eine andere oft vergessene Sache ist die explizite Vergabe von Verzeichnisrechten für das Ausführungskonto. Dies wird normalerweise zu einem Problem, wenn der Batch-Job eine Protokolldatei erstellen oder den Inhalt des Zielordners auf andere Weise ändern muss.

Danke für den Tipp, ich habe es endlich zum Laufen gebracht!

Meine Variante - einfach den Dateinamen unter 'Programm/Skript' eintragen, keine Anführungszeichen und das Verzeichnis unter 'Start in' wie beschrieben, wieder keine Anführungszeichen.

Ich habe festgestellt, dass die Eingabe des Verzeichnispfads zum Block "Start in (optional):" für den Ursprung des Skripts für mich funktioniert. Wenn Sie die Anführungszeichen um das Verzeichnis herum einfügen, obwohl es ein Leerzeichen gibt, finde ich im Feld Start in, dass es nicht funktioniert, also sehen Sie, dass ich sie nicht eingefügt habe. Schauen Sie sich den Screenie an ..

Danke hat bei mir funktioniert!

Eine Batch-Datei mit einem Kopierbefehl. Diese Datei funktionierte nicht mit dem Scheduler, aber sie funktioniert manuell.

Eine Batch-Datei mit einem FTP-Befehl. Diese Datei funktioniert gut mit dem Scheduler und manuell.

Im Scheduler der Kopierbaddatei: abgelegt im Verzeichnis im Start-in-Feld.

Ich hatte genau das gleiche Problem.

Später habe ich herausgefunden, dass das Skript, das ich zum Erstellen der geplanten Aufgabe verwendet habe, die Datei, auf die die geplante Aufgabe verweist, nicht kopiert hat. Ich kam mir ziemlich albern vor.

Ich hatte dieses Problem auch, aber die oben genannten Techniken haben bei mir nicht funktioniert. Ich habe dann herausgefunden, dass der Dateiname des Skripts zu lang war, also habe ich ihn einmal gekürzt - es hat funktioniert :)

In meinem Fall habe ich einen Webserver so konfiguriert, dass er mir per E-Mail eine Benachrichtigung über den Taskplaner sendet, wenn ein Tester versucht hat, sich anzumelden. Im Ergebnisbereich des Taskplaners wurde (0x1) angezeigt.

Bei der Untersuchung behandelte Exchange 2010 E-Mails von diesem Server als Spam.

In der Exchange 2010-Verwaltungskonsole -> Organisationskonfiguration -> Hub-Transport -> Anti-Spam -> Inhaltsfilterung -> Benutzerdefinierte Wörter -> Nachrichten mit diesen Wörtern oder Ausdrücken zulassen:

. Ich habe den Titel der gesperrten E-Mail als Phrase hinzugefügt.

Wiederholen Sie den Test vom Quellserver. . bei mir hat dann alles funktioniert.

Ich habe das gleiche Problem, bei dem ich eine Aufgabe habe, die das Powershell-Skript ausführt, um eine ganze Reihe von bak & trn-Dateien von einem lokalen Laufwerk zu komprimieren, um eine RAR-Datei mit der lokal installierten WinRAR-Anwendung zu erstellen. Dieser Vorgang mit der RAR-Befehlszeile stellt auch das Löschen aller zum Archiv hinzugefügten Dateien sicher.

Eine andere zu einem späteren Zeitpunkt geplante Aufgabe wählt die erstellte .RAR-Datei aus und überträgt (MOVE - CUT PASTE) auf einen anderen Server mit UNC-Pfadreferenz.

Wenn ich das Skript manuell als Admin mit Powershell ausführe, funktioniert es in beiden Fällen gut, aber wenn es an die Taskplaner-Aufgabe angehängt wird, kommt der 0x1-Fehler.

  • Ausführen, ob der Benutzer angemeldet ist oder nicht
  • Mit höchsten Privilegien ausführen
  • Aktionen -> Bearbeiten -> Programm/Skript: Ich rufe Powershell auf und übergebe die ps1-Datei als Argument
  • Starten Sie in: C:WindowsSystem32WindowsPowerShellv1.0
  • Die Aufgabe, die zum Kopieren der Datei in den Remote-Ordner dient, wird als dieser Benutzer ausgeführt, der sowohl auf dem Computer, auf dem sie ausgeführt wird, als auch auf dem Remote-Server über lokale Administratorrechte verfügt.

Jede Hilfe wäre sehr dankbar.

. sogar .<scriptfilename>.ps1 in den zusätzlichen Argumenten hinzugefügt und versucht zu starten und das Ergebnis ist immer noch der gleiche 0x1-Fehler!

Nur zur Info, kann es nicht erklären. Ich weiß nicht warum, aber ich habe meine Skripte, die fehlschlugen, von Grund auf neu geschrieben. Das Problem war weg.

Anfangs würden die Batch-Dateien problemlos manuell ausgeführt, aber durch den Taskplaner immer wieder fehlgeschlagen. Aus Frust habe ich sie gelöscht und neu geschrieben. plötzlich kein problem! Stelle dir das vor.

Ich habe die alten gelöscht, damit ich nicht zurückgehen und vergleichen kann. Offensichtlich stimmte etwas nicht, aber ich konnte es nie finden.

Ich stehe vor dem gleichen Problem im Windows 8.1-Aufgabenplan. Ich habe alle oben genannten Lösungsvorschläge ausprobiert, aber nichts funktioniert für meinen Fall.

In meinem Fall rufe ich die Aufgabe vom Systemkonto auf, wo der Ordner, in dem sich das Batch-Skript befindet, die volle Kontrolle über das Systemkonto hat.

Das gleiche Szenario habe ich in Windows 7 überprüft, aber es hat gut funktioniert.

Bitte geben Sie an, wie Sie für Windows 8.1 vorgehen müssen.

Bearbeiten Sie im Taskplaner die Eigenschaften der Aktion und überprüfen Sie, ob Sie den richtigen Ordner "starten in" haben, da dies wahrscheinlich ein Problem darstellt, auch wenn der Ordner im Feld Programm/Skript angegeben ist

Überprüfen Sie auf der Registerkarte Allgemein das letzte Dropdown-Menü und stellen Sie sicher, dass es auf das richtige Betriebssystem verweist. In meinem Fall war es standardmäßig auf Windows Vista, Windows 2008 eingestellt und mein Server war Windows 2008R2. Nachdem ich es auf Windows 2008R2 geändert hatte, funktionierte es problemlos mit der Option, ob der Benutzer angemeldet war oder nicht. Ich hoffe, das hilft!

Es gibt drei wichtige Optionen, um sicherzustellen, dass Ihre Aufgabe ausgeführt wird: 1 - Erstellen Sie Ihre Aufgabe mit der Option "Create Task" anstelle der "Create Basic Task" (dies gibt Ihnen mehr Optionen für den Servertyp, normalerweise funktioniert der Standardserver - Windows Server 2003 , Windows XP oder Windows 2000). 2 - Verwenden Sie nur UNC-Pfade in Ihren Batchdateien und in der Registerkarte "Aktionen". Sie können Laufwerke auf Ihrem Computer zuordnen, müssen jedoch während Ihrer gesamten Aufgabe die UNC-Pfade verwenden. 3 - Wählen Sie auf der Registerkarte "Allgemein" die Option "Benutzer oder Gruppe ändern" aus und fügen Sie die richtigen Anmeldeinformationen hinzu, auch wenn Sie bereits mit den richtigen Anmeldeinformationen beim Konto angemeldet sind. Diese Optionen sollten funktionieren, wenn Sie die Task ausführen, wenn der Benutzer angemeldet ist oder nicht. Fügen Sie am Ende Ihrer Batchdatei eine Pause ein, damit Sie alle Fehler sehen und den Job testen können.

HINWEIS: Wenn Sie versuchen, eine Verbindung zu einem AS400-Netzwerkordner herzustellen, öffnen Sie eine AS400-Sitzung. Sie müssen sich nicht anmelden, starten Sie einfach die Sitzung.

Ich habe alles versucht, was alle vorgeschlagen haben, aber das einzige, was ich zum Laufen gebracht habe, war, einen Befehl in die Batch-Datei zu setzen, um eine Verzeichnisliste auszugeben.

Dies macht jedoch absolut keinen Sinn, es war jedoch die einzige Möglichkeit, die Batch-Datei ohne Probleme zum Laufen zu bringen.

Übrigens, meine Batchdatei führte ein FTP-Skript aus, um Dateien von IBM AS/400 herunterzuladen.

Dies war der, der für mich funktioniert hat (danke Rocke!)

Meine Bat-Datei würde bei manueller Ausführung gut laufen, nur die Aufgabe würde sie nicht ausführen!

Wenn Sie eine "Neue Aufgabe" anstelle einer "Einfachen Aufgabe" erstellen, erhalten Sie eine Windows 7-Option im Servertyp (was ich in meinem Fall benötigt habe).

Ich habe auch den Pfad (ohne Anführungszeichen) in das 'Start In'-Kästchen eingefügt und das 'Run with Highest Privileges'-Kästchen angekreuzt.

Ich muss sagen, es war ziemlich schön herauszufinden, dass (0x1) bedeuten könnte, dass die Batch-Datei nicht gefunden werden konnte. Die Batch-Datei, die ich ausführen wollte, hatte ein Amperstand (&) im Dateinamen, was offensichtlich Probleme mit dem Taskplaner verursachte, wenn er versuchte, sie auszuführen. Inzwischen konnte ich die Batch-Datei ohne Probleme außerhalb von TS ausführen.

Tipp: Wenn TS die Batchdatei nicht wie geplant ausführt, versuchen Sie, sie über den Befehl 'Ausführen' in TS auszuführen, entweder über das Rechtsklickmenü oder die Option auf der rechten Seite.

Versuchen Sie, den Server im Konfigurationsfeld auf der Registerkarte "Allgemein" der Aufgabe zu ändern. Ich habe es von Windows Vista auf Windows XP geändert, was für mich funktionierte :)

Ich hatte dieses Problem. Wie ich es gelöst habe, wurden alle Pfade explizit angegeben, die in der .bat-Datei verwendet werden.

z.B. der Code in runTest.bat

Ich weiß, dass dieses Problem sehr alt sein könnte, aber ich habe dieses Problem seit Jahren mit WinSCP und bei allem, was ich versucht habe, wurde der Fehler immer noch angezeigt, bis mir gerade klar wurde, dass dies daran lag, dass die Skriptdatei, die zum Ausführen von WinSCP verwendet wird, einen Fehler hatte . Daher wurde die Aufgabe nicht ordnungsgemäß heruntergefahren, sodass Windows sie nicht als Erfolg betrachtete.

Am Ende des Skripts hatte ich folgendes:

Die korrekte Syntax sollte lauten

Siehe und Beispiel des Skripts unten.

Die meisten der 0x1-Fehlerfälle, die ich gefunden habe, stammen von den Pfadfehlern. Verwenden Sie also immer einen vollständigen Pfad in Ihrer .bat-Datei
(zB cscript "test.vbs" zu cscript "c: est est.vbs")

Ein weiterer wichtiger Hinweis ist, dass Sie Ihren Pfad der .bat-Datei in "Start in (optional):" hinzufügen müssen - wenn Sie dies nicht tun, wird sie nicht nur ausgeführt, wenn Sie sich abgemeldet haben. Sehen Sie sich dieses Tutorial-Video an:

Beim Versuch, ein PowerShell-Skript über den Taskplaner auszuführen, ist der 0x1-Fehler aufgetreten.

Originally, I had set-up the actions via this link:

I noticed another PowerShell script which another Admin had set-up successfully. Once I set mine up the same way, it worked:

Action: Start a Program

Program/Script: PowerShell.exe

Argument: -File "<<local path to PowerShell script including script name>>"

Start In: <<blank>>

For me it was a bad character from copy/paste. The path originally came from another machine running a similar scheduled task. Kept getting 0x1 on the new machine.

I pasted the problematic task string into powershell, and there was a funky extended ascii/utf character in there instead of a an actual space. So I just re-typed the space character in the dialog box and it worked fine. So if all else fails, re-type the path/start directories in your "Edit Action" dialog box because they may "look" ok to you but are actually bad chars.

Try running the script manually - I've just had the same problem and it ended up being due to a missing > that I overlooked after editing the script for added functionality

It was only when I ran the script manually in a powershell session that the error was revealed

Or log the script activity to a log file

Action: Start a Program

Program/Script: PowerShell.exe

Argument: -File "<<local path to PowerShell script including script name>>"

Start In: <<blank>>

I have a problem that has not been reported by anyone so far.

I have setup task scheduler jobs on a server where my login belong to administrators group on the server. All the jobs created run .bat scripts. These jobs are setup to run every minute. the .bat scripts run fine when I double click them.

I get 0x1 error when I set it up to run under my login but runs fine when I set it up to run under Administrators group, as long as only I am logged in or no one from Administrators group are logged in. The Administrators group includes many other users. The trouble starts if anyone from Administrators group logs in because all task scheduler jobs starts running under their logins and fail because of the privileges.

I have tested every possible solution suggested above and nothing has worked. Would appreciate if any one knows a solution to this.

This seems to have worked for me. The message did not refresh in the Task Scheduler even after I changed the settings and reran the job manually a few times.

It looks like the Last Run Result field was cached in some strange way.

When executing a Powershell script through Task Manager (or running a task with sqlps which is essentially the same thing), I've discovered that in order to prevent the task from ending with 0x1 return code, once needs to add -querytimeout 0 to the task action arguments.

It has to do with Task Scheduler and tasks that are taking a longer time to execute (for example a minute or more).

Souvik Banerjee. MSBI Lead, Zensar Technologies

We are both trying to do the same thing with WinSCP. The problem that I found was that the Administrator accounts, both Domain and Local, are not allowed to be the "Run As" account in Scheduled Tasks anymore. Need to create a Service Account, give the account "Log on as batch job" and "Log on as a service" in Local Security Policy>Local Policies>User Rights Assignment, create a service that runs as the user to create a local profile in UsersServiceAcctName profile folder. You have to run/Start the service once for the local profile to be created. It seems that CMD.exe requires appdata folder for the user that the batch file is running as.

Also, set the Scheduled Task to "Run with highest privileges". General tab of the task properties.

For the Action properties of the Task, put the full path to the batch file in Program/script: box including the batch file name. In the "Start in (optional):" box, make sure the local path (or full UNC path if not local) for the folder containing your batch file is entered there. It's not optional! NO QUOTATION MARKS! If your path has spaces in folder names, you will have to change the folder names or move the batch file because the "Start in (optional):" box can NOT have quotations. If your batch file has spaces in the name of it, then the "Program/script:" box will have to have the whole path surrounded by quotes.

Also, make sure that the path to the batch file has Security Rights setup for the Service account that you create. Then consider the action of your task. if it is moving a file, then does it have rights to do that at the source location and at the destination location?


Running Python script in Task Scheduler- Script will not run - Geographic Information Systems

A simple shell script to shutdown a Synology NAS if no authorized client is online. The main purpose of this script is to reduce power consumption.

The NAS can be used to store media content. If you want to access them, the system is switched on manually or by wake-on-lan. The system is in operation during this time. But what happens if the client is no longer online? The NAS continues to run and goes into standby - but it usually continues to consume power. This script helps to turn off the system completely and thus save power since media access usually only has a comparatively short duration. The next time the system is accessed, it is started again manually or by wake-on-lan.

The script also has the advantage that no inflated packages need to be installed on the NAS that could compromise the security or stability of the system. If you want to keep the system as clean as possible and know which features are running on the system, open source and a shell script is just what you need :)

At definable intervals, all systems of the current network segment (e.g. 10.0.0.x) are checked whether they are reachable. If a system could be detected, this is compared with the list of systems that were defined to avoid a shutdown. If no system could be found, the system continues to attempt to find systems for a defined period of time. If no systems are found during this time, the system is shut down. A named system found resets this check.

  • Bash Script (easy setup)
  • Out-of-the-box usable - no installation of other toos required (no system modification!)
  • Use of simple functions from Busy Box (no dependencies)
  • Connection to IFTTT (optional)
  • Logging
  • Self-inititalizing (with default values if no config is specified)
  • Self-restarting (on code changes)
  • Self-reconfiguring (on config changes)
  • Self-initializing of config file and missing config options
  • Warning times
  • Support of beep output to the internal NAS loudspeaker
  • Lightweight python webserver to shutdown NAS promptly
  • Alexa integration (via IFTTT webrequests)
  • simple solution
  • Use on different NAS possible
  • easy maintenance
  • Expandable
  • Support for electricity saving

On some systems, a system in standby continues to respond to pings from this script. These systems prevent the NAS from shutting down. This is especially the case for Mac systems that use Power Nap or do not use Safe Sleep Mode. Please check how systems behave in standby mode before using the script productively.

  • NAS (Synology with BusyBox like linux tested and verified on Linux xxxx 3.10.105 #24922 SMP Wed Jul 3 16:35:48 CST 2019 x86_64 GNU/Linux synology_cedarview_xxxxx)
  • own volume (recommended)
  • SSH access (recommended)
  • Scheduler (e.g. Cron) with possibility to execute shell scripts

  1. Copy shell script and configuration file to shared volume (e.g. control )an your NAS. Remember the path to the shell script (e.g. /volume1/control/syno-autoshutdown/ )
  2. Rename the default configuration file to autoshutdown.conf or autoshutdown-(hostname).conf where (hostname) is the host name of your NAS. This is helpful if you have multiple NAS where you want to share files but separate configurations.
  3. Proceed with scheduler configuration.
  1. Login to NAS.
  2. Define a new scheduled task at system start up to execute these commands

You must run this task/script as root, as some commands are not allowed as users. The task must also be defined to start at boot time so that the execution of the script can be ensured.

  1. Define a second task to be started manually. This task help to deaktivate the shell script if you don't want to be interruped by a system shutdown (e.g. partition cleanup/repair if no client system is online)

The script must also be run as root, but the execution can be set to inactive (and thus manual). This task is only used to temporarily terminate a previously executed script or several instances of the script. If the autoshutdown script should be started again, the NAS does not have to be restarted, but the first task can be executed.

IFTTT (Notification) (optional)

  1. Create an account with IFTTT (ifttt.com)
  2. Log on to IFTTT at the backend
  3. Click profile image and run "create" in menus
  4. Define the "if" statement
  5. Search for and select "webhooks"
  6. Select "receive a web request"
  7. Name your event (e.g. syno_event )
  8. Define the "that" statement
  9. Search for and select "notifications"
  10. Select "send a notification from the IFTTT app"
  11. Define the message <> (occurred <>)
  12. Click "create action"
  13. Define magic key to config file (IFTTT_KEY) *)
  14. Define name of event (see 7.) to config file (IFTTT_EVENT)
  15. Done.

*) Your magic key is viewable via ifttt.com -> profile -> my services -> webhooks -> settings -> URL

In addition to the bash script, a python script is provided, which optionally starts a web service that allows the user to shut down the NAS system immediately via HTTP request.

When the web server is started, a unique UUID is generated which can be used to control the web server. If the correct URL can be called by the user, the server is immediately shut down by calling another (confirmation) link.

The URL is protected by the following features by unintentional or deliberate calls:

  • Free choice of the external and internal port on which the server listens
  • Free choice of the component of the URL that is to be used for the shutdown
  • Creation of a new and unique UUID at each start of the web server

Calling up the website allows a further confirmation of the shutdown:

If the button shown in the picture is confirmed, the system will shut down immediately.

THE WEBSERVER HAS TO BE ACTIVED BY SETTING CONFIG VALUE WEBSERVER_SHUTDOWN_ACTIVE=1 !

The web server has been supplemented by a magic key and magic word. With the help of these two very individual details, the web service can be controlled via a voice command and a Werrequest without prior consultation.

These data have been additionally integrated to enable static data, so that the security of the dynamic keys for normal access can be maintained.

Two factors are required for a successful call: the magic key, which is generated automatically if it is not already specified. And also a magic word, which can be freely assigned by the user. Both specifications are combined and result in a unique path specification for the web server. If this path is called, the system shuts down immediately.

To make this address callable via voice commands, the following steps are necessary (Alexa and IFTTT are examples):

  1. Add an Alexa trigger (or an other speech trigger)
  2. Select the Alexa-Webhooks action (https://ifttt.com/connect/maker_webhooks/amazon_alexa)
  3. Select "Use Alexa with hook automate" (https://ifttt.com/applets/342458p-use-alexa-with-hook-to-automate)
  4. Name your trigger
  5. Define phrase Alexa will listen to

Your public ip and port depends on your router configuration. Have a look at section Webserver (shutdown) for more details.

The next time you ask Alexa "Alexa, trigger shutdown Synology" the device will be shut down.

Placeholders can be specified for messages in the configuration file. The following placeholders are permitted:

Placeholders can be specified for filename in the configuration file. The following placeholders are permitted:

File containing the hash value of its own running configuration (*.config). This hash value is compared to the hash value of the saved configuration file. If the values differ, the configuration has been changed and the script reads the configuration again in the next cycle.

File that contains the process ID of the running instance of the script.

File containing the hash value of a running shell script. This hash value is compared to the hash value of the saved shell script. If the values differ, the shell script has been changed and the script must be restarted. The running instance is terminated in the next cycle.

The following sources have made this project possible, as the authors have provided impulses for the further development of this project.


Schau das Video: How to schedule your Python Script using Windows Task Scheduler. (Oktober 2021).