Information

2.7: Befehlszeilenschnittstelle - Biologie

2.7: Befehlszeilenschnittstelle - Biologie


We are searching data for your request:

Forums and discussions:
Manuals and reference books:
Data from registers:
Wait the end of the search in all databases.
Upon completion, a link will appear to access the found materials.

Obwohl Python eine großartige Sprache für die eigenständige Programmierung ist, ist es auch eine erstklassige Sprache für die Verbindung mit der Unix/Linux-Befehlszeile. Dieses Kapitel untersucht einige dieser Konzepte und ermöglicht es uns, Python als „Klebstoff“ zu verwenden, um andere leistungsstarke Befehlszeilenkonzepte zu verbinden.

Standardeingabe ist ein Datei-Handle

In den vorherigen Kapiteln haben wir gesehen, dass einfache Unix/Linux-Dienstprogramme wiegrepundSortierenkönnen für eine Vielzahl von Datenmanipulationsaufgaben verkettet werden.

Der obige Befehl verwendetgrepum Zeilen in der Datei abzugleichen pz_stats.table gegen das Muster_L, die auf die Standardausgabe gedruckt werden. Verwendung der|umleiten, senden wir diese Ausgabe anSortierenauf seiner Standardeingabe und sortieren Sie die Zeilen in der zweiten Spalte in allgemeiner numerischer Reihenfolge, bevor Sie diese Ausgabe an weiterleitenweniger -S.

Wieder,Sortierenundwenigerlesen ihre Eingaben nicht aus einer Datei, sondern aus Standardeingabeströmen. Ebenso schreiben sie ihre Ausgabe nicht in eine Datei, sondern drucken nur in die Standardausgabeströme. Es ist oft nützlich, unsere eigenen kleinen Dienstprogramme als Python-Programme zu entwerfen, die auf die gleiche Weise funktionieren.

Die Analogie „Dateihandle als Pipe“, die wir verwendet haben, wird uns gute Dienste leisten, wenn wir Programme schreiben, die Eingaben von der Standardeingabe lesen. Das mit der Standardeingabe verknüpfte Datei-Handle ist in Python einfach zu verwenden. Wir müssen nur die importierensysModul, und dannsys.stdinist eine Variable, die auf das schreibgeschützte Dateihandle verweist, die wie jede andere funktioniert. Wir müssen nicht einmal verwendenio.open(). Hier ist ein Programm, das jede darin übergebene Zeile als Standardeingabe ausgibt.

In diesem Fall verwenden wirsys.stdinähnlich wie die schreibgeschützten Dateihandles, die wir in den vorherigen Beispielen gesehen haben. Wir können unser Programm an einer einfachen Datei testen, die einige Gen-IDs enthält:

Aber wenn wir versuchen, unser Programm auszuführen, ohne ihm irgendeine Eingabe in den Standard-Eingabestrom zu geben, wird es sitzen und auf Daten warten, die nie kommen werden.

Um das Programm zu beenden, können wir das Übliche verwendenStrg-c. Der Grund für dieses Verhalten ist, dass der Standard-Eingabestrom für die Eingabe von Standard aus einem anderen Programm verwendet werden kann (wie wir es wünschen) oder zum Erstellen interaktiver Programme verwendet werden kann. Um dies zu sehen, können wir dasselbe Programm ausführen, außer dass wir diesmal etwas über die Tastatur eingeben und wenn wir fertig sind, den Steuercode sendenStrg-d, was eine Möglichkeit ist, Python mitzuteilen, dass wir mit dem Senden von Eingaben fertig sind.

Dies weist auf einige interessante Möglichkeiten für interaktive Programme hin,[1] aber in diesem Fall wäre es wahrscheinlich verwirrend für jemanden, der unser Programm verwenden möchte, indem er Daten an es weiterleitet. Glücklicherweise,sys.stdinhat eine Methode namens.isatty()das kehrt zurückWahrwenn keine Daten im Eingabestrom vorhanden sind, wenn er aufgerufen wird. (TTY ist die Abkürzung für „TeleTYpewriter“, ein gebräuchlicher Name für ein tastaturverbundenes Eingabegerät der vergangenen Jahrzehnte.) Wir können unser Programm also ziemlich einfach so modifizieren, dass es mit einem hilfreichen Verwendungstext beendet wird, wenn es erkennt, dass keine Daten vorhanden sind Standardeingabe.

Es ist fast immer eine gute Idee, dass ein Programm überprüft, ob es korrekt aufgerufen wird, und wenn nicht, einige hilfreiche Informationen zur Verwendung bereitstellt. Es ist auch üblich, in Kommentare am oberen Rand des Programms Autoreninformationen wie das Datum der letzten Aktualisierung und Kontaktinformationen aufzunehmen. Möglicherweise müssen oder möchten Sie auch einen Text zum Urheberrecht und zur Lizenzierung hinzufügen, entweder Ihrer Wahl oder der Ihrer Institution.

Beachten Sie, dass wir nicht angerufen haben.nah dran()auf dem Standard-Eingabedatei-Handle. Python wird sich zwar nicht beschweren, aber es ist nicht erforderlich, da die Standardeingabe eine spezielle Art von Datei-Handle ist, die das Betriebssystem automatisch verarbeitet.

Standardausgabe als Datei-Handle

Alles, was von einem Python-Programm gedruckt wird, wird in den Standardausgabestrom ausgegeben, und so kann diese Ausgabe auch an andere Programme zur Verarbeitung gesendet werden.

Allerdings ist diesys-Modul bietet auch Zugriff auf das Standard-Ausgabedatei-Handle,sys.stdout. Genau wie andere ausgabeorientierte Datei-Handles können wir aufrufen.schreiben()auf diesem Dateihandle zu drucken. Der Hauptunterschied zwischen dieser Methode und dem Aufrufendrucken()ist das währenddrucken()standardmäßig fügt a . hinzu" "Newline-Zeichensys.stdout.write()nicht.[2] Diese Funktion kann besonders nützlich sein, wenn wir eine Tabelle Element für Element drucken möchten, da die Daten nicht in Strings gespeichert werden, die einzelne Zeilen darstellen.

Ausgabe von oben:

Währenddrucken()ist eine einfache Möglichkeit, eine Textzeile zu drucken,sys.stdout.write()gibt Ihnen mehr Kontrolle über die Formatierung der Druckausgabe. Wie beisys.stdin, es ist nicht nötig anzurufen.nah dran()auf dem Dateihandle. Im Gegensatz zu anderen ausgabeorientierten Dateihandles werden Daten regelmäßig aus der Pipe geleert (entweder zum Drucken oder in die Standardeingabe eines anderen Programms).

Obwohl wir unsere Programme über die Befehlszeile ausgeführt haben, hat bisher keines unserer Python-Programme Eingabeparameter akzeptiert. Betrachten Sie das Beispiel aus Kapitel 18, „Python-Funktionen“, in dem wir den GC-Inhalt für jede Sequenz in einer Datei berechnet haben. Anstatt den Dateinamen fest in dasio.open()aufrufen, ist es vorzuziehen, den Dateinamen in der Befehlszeile anzugeben, wie in./ids_seqs_gcs.py ids_seqs.txt.

DiesysModul kommt wieder zur Rettung. Nach dem Importierensys, Die Variablesys.argvverweist auf eine Liste von Strings, die beginnend bei Index 0 den Namen des Skripts selbst und dann jeden Parameter enthalten. Weilsys.argvist immer eine Liste von Strings. Wenn wir ein Float- oder Integer-Argument eingeben möchten, müssen wir den entsprechenden Parameter mit konvertierenint()oderschweben()vor Gebrauch.

Dieser Code bestimmt auch, ob die erwartete Anzahl von Parametern vom Benutzer angegeben wurde, indem er auflen(sys.argv), Beenden, wenn dies nicht der Fall ist.

Wie bei anderen Programmen, die auf der Befehlszeile ausgeführt werden, müssen wir einen einzelnen Parameter, der Leerzeichen enthält, in einfache oder doppelte Anführungszeichen setzen.

Obwohl wir es hier nicht behandeln werden, dieargparse-Modul macht das Schreiben von Skripten relativ einfach, die Eingabeparameter verschiedener Typen erfordern. DieargparseDas Modul automatisiert auch das Drucken und Formatieren von Hilfeinformationen, auf die Benutzer zugreifen können, die das Programm mit a . ausführen-hoder--HilfeFlagge. Eine Vielzahl von Tutorials fürargparseist im Internet zu finden. (Es gibt auch ein einfacheres, aber weniger funktionstüchtiges Moduloptparse.)

Ausführen von Shell-Befehlen in Python

Manchmal ist es sinnvoll, andere Programme aus unseren eigenen Programmen heraus auszuführen. Dies könnte daran liegen, dass wir eine algorithmisch generierte Reihe von Befehlen ausführen möchten (z. B. möchten wir vielleicht ein Genom-Assembly-Programm auf einer Vielzahl von Dateien nacheinander ausführen), oder vielleicht möchten wir die Ausgabe eines Programms erhalten, das mit dem Befehl ausgeführt wird Leitung.

Betrachten Sie die Befehlszeilenaufgabe, alle Dateien im aktuellen Verzeichnis aufzulisten, die dem Muster entsprechenCluster*.fasta. Dafür können wir verwendenls -1 Cluster*.fasta, wo-1erzähltlsum seine Ausgabe als einzelne Spalte mit Dateinamen zu drucken, undCluster*.fastastimmt mit allen Dateinamen überein, die dem gewünschten Muster entsprechen (wie cluster_AB.fasta, cluster_AC.fasta, cluster_AG.fasta, und cluster_D.fasta.).

Es gibt mehrere Möglichkeiten, diese Informationen in einem Python-Programm abzurufen, aber eine der einfachsten ist die Ausführung derls -1 Cluster*.fastaBefehl aus unserem Programm heraus und erfasst das Ergebnis als String.[3] DieTeilprozessModul ermöglicht es uns, genau dies zu tun, indem wir dasUnterprozess.check_output()Funktion. Diese Funktion benötigt eine Reihe potenzieller Parameter, aber wir führen sie mit nur zwei aus: (1) dem Befehl, den wir ausführen möchten (als String) und (2)Schale = Wahr, was angibt, dass der Python-Interpreter den Befehl ausführen soll, als ob wir ihn auf der Befehlszeile ausgeführt hätten.

Das Ergebnis des Funktionsaufrufs ist eine einzelne Zeichenfolge, die alles enthält, was der Befehl auf der Standardausgabe ausgegeben hat. Da es sich um einen einzelnen String handelt, müssen wir ihn zuerst als Liste von Zeilen darstellen.Streifen()Entfernen Sie alle Zeilenumbruchzeichen am Ende und teilen Sie es dann auf der Zeichen, die die Zeilen trennen.

Beim Ausführen des Programms sehen wir, dass das Ergebnis eine Liste von Zeichenfolgen ist, eine pro Datei:

Mit dieser Liste von Dateinamen möchten wir vielleicht eine Reihe von Assemblies mit dem Programm ausführenrunAssembly(hergestellt von 454 Life Sciences zum Aufbau von Transkriptsequenzen). Dieses Programm erfordert aParameter, um anzugeben, wohin Ausgaben geschrieben werden sollen, sowie eine Dateinameneingabe; wir generieren diese mit String-Operationen, um einen auszuführenden Befehl zu „bauen“. Sobald wir mit den Befehlen zufrieden sind, können wir den eigentlichen Aufruf an . auskommentierenUnterprozess.check_output().

Diese Version des Programms meldet die Befehle, die ausgeführt werden.[4]

Während ein Befehl über dieUnterprozess.check_output()Auf diese Weise wartet das Programm, bevor es mit der nächsten Zeile fortfährt (obwohl Sie dies wahrscheinlich nur bemerken werden, wenn die Ausführung des Befehls lange dauert). Wenn der Befehl abstürzt oder beendet wird, stürzt das Python-Programm mit a . abCalledProcessErrorauch (normalerweise eine gute Sache!).

Weitere Funktionen imTeilprozessModule erlauben, Befehle im Hintergrund auszuführen – das Skript wartet also nicht, bis sie abgeschlossen sind, bevor es mit seiner eigenen Ausführung fortfährt – und mit mehreren solcher Prozesse zu arbeiten, während es mit ihnen kommuniziert. Andere Python-Module ermöglichen sogar fortgeschrittene Arbeiten mit paralleler Ausführung und Threading, obwohl diese Themen den Rahmen dieses Kapitels sprengen würden.

Vergessen Sie nicht, dass Sie für die Ausführung Ihrer Programme verantwortlich sind! Wenn Sie ein Programm schreiben, das viele andere Programme ausführt, können Sie schnell mehr Rechenressourcen verbrauchen, als Sie denken. Wenn Sie an einem System arbeiten, bei dem es Ihnen nichts ausmacht, Risiken einzugehen, könnten Sie versuchen, das folgende Programm auszuführen, das eine Kopie von sich selbst ausführt (das wiederum eine Kopie von sich selbst ausführt, das wiederum eine Kopie von ausführt) selbst, und weiter und weiter):

Übungen

  1. Das verwendete Tabellendruckbeispielsys.stdoutum eine Tabelle in Spalten-Major-Reihenfolge zu drucken. Schreiben Sie eine Funktion namensprint_row_major()das druckt eine Tabelle, die in Zeilen-Major-Reihenfolge gespeichert ist, also ein Aufruf wieprint_row_major([["A", "B"], ["C", "D"], ["E", "F"]])ergibt eine Ausgabe, die wie folgt aussieht:
  2. Schreiben Sie ein Programm namensstdin_eval_mean.pydas liest eine Datei im Format von pz_blastx_yeast_top1.txt Ansys.stdin, berechnet den Mittelwert der E-Wertspalte (Spalte 11, mit Werten wie1e-32) und druckt den Mittelwert in die Standardausgabe. Wenn keine Daten auf der Standardeingabe vorhanden sind, sollte das Programm eine "Verwendung"-Meldung erzeugen.

    Versuchen Sie als Nächstes, das Programm mit auszuführenKatze pz_blastx_yeast_top1.txt | ./stdin_eval_mean.py. Versuchen Sie auch, die Zeilen vor der Berechnung mit etwas wie vorzufilternKatze pz_blastx_yeast_top1.txt | grep '_L' | ./stdin_eval_mean.py.

    Kopieren Sie nun dieses Programm zu einem mit dem Namenstdin_eval_sd.pydas liest sich ein pz_blastx_yeast_top1.txt Ansys.stdinund berechnet und druckt die Standardabweichung der E Werte. Versuchen Sie erneut, das Programm mit und ohne Vorfilterung mit auszuführengrep. (An dieser Stelle sollten Sie sich mit dem Schreiben wohl fühlenbedeuten()undsd()Funktionen, die Listen von Gleitkommazahlen annehmen und Antworten zurückgeben. Ihresd()Funktion könnte gut die aufrufenbedeuten()Funktion.)

  3. Modifiziere denstdin_eval_mean.pyProgramm oben (neue Version aufrufenstdin_eval_mean_threshold.py) um ein zu akzeptieren E-Wert oberer Schwellenwert als erster Parameter. DaherKatze pz_blastx_yeast_top1.txt | ./stdin_eval_mean.py 1e-6sollte den Mittelwert der berechnen und drucken E-Wertspalte, aber nur für die Zeilen, deren E Wert ist kleiner als 1e-6. (Sie müssen verwendensys.argvund achten Sie darauf, den Eintrag darin in einen Float umzuwandeln.)

    Ihr Programm sollte Nutzungsinformationen ausgeben und beenden, wenn entweder keine Daten für die Standardeingabe bereitgestellt werden oder wenn kein Schwellenwertargument vorhanden ist.



Befehlszeilenschnittstelle¶

Dies ist die aktualisierte Version (LiveRebel 1.1+) der Command Line Interface (CLI)-Referenz von LiveRebel Command Center. In diesem Artikel zeigen wir die grundlegende Verwendung und beschreiben die Eigenschaften aller Befehle, die Ihnen bei der Verwaltung von Command Center über die CLI helfen.

Das LiveRebel-Download-Archiv enthält Dienstprogramme, die von der Behälter Mappe. Um auf die CLI zuzugreifen, verwenden wir die lr-cli.sh Skript (Windows-Äquivalent ist lr-cli.cmd ). Mit diesem Tool können Sie die meisten LiveRebel-Funktionen über die Befehlszeile verwalten. Laufen binlr-cli.cmd Hilfe zeigt den Hilfebildschirm an.

Um das CLI-Tool auszuführen, benötigen Sie entweder den Benutzernamen und das Kennwort eines Benutzers im LiveRebel Command Center oder ein Sicherheitstoken für einen Benutzer. Um den Token Ihres Benutzers herauszufinden, navigieren Sie zu Ihrer Profilseite (im LiveRebel Command Center befindet sich oben rechts Ihr Benutzername, den Sie anklicken können) und Ihr Sicherheitstoken wird dort angezeigt. Weitere Informationen finden Sie in den Screenshots.

Ihr Authentifizierungstoken auf der Profilseite

Wenn Sie die LiveRebel Command Center-URL und die Benutzeranmeldeinformationen (entweder ein Benutzername/Passwort-Paar oder ein Authentifizierungstoken) kennen, können Sie lr-cli.sh Skript, um die folgenden Aspekte Ihres LiveRebel Command Centers zu verwalten.

Wichtiger Hinweis: Sie können zur Verfügung stellen lr-cli.properties (Legen Sie es in den LiveRebel-Installationsordner unter Behälter ) Datei mit Command Center-URL und Anmeldeinformationen und lassen Sie diese Informationen bei jeder Befehlsausführung aus. Es empfiehlt sich, die Dateiberechtigungen auf 600 zu setzen oder auf andere Weise nur für Admins lesbar zu machen. Legen Sie einfach die folgende Datei neben das lr-cli-Skript:

Denken Sie daran, dass Sie auf diese Weise die URL und das Token nicht als angeben müssen lr-cli.sh Parameter, so dass Befehle viel besser lesbar sind. In diesem Artikel gehen wir davon aus, dass Sie eine Datei lr-cli.properties mit angegebener URL und Authentifizierungstoken haben (wie oben gezeigt) und nur gelegentlich eine Vollversion eines Befehls mit diesen Parametern bereitstellen.

Mit dem CLI-Skript und Ihrem Authentifizierungstoken oder Ihrer Benutzername/Passwort-Kombination können Sie die folgenden Aspekte Ihres LiveRebel Command Center verwalten.


Zusammenfassung¶

--cli-input-json | --cli-input-yaml (string) Liest Argumente aus dem bereitgestellten JSON-String. Der JSON-String folgt dem von --generate-cli-skeleton bereitgestellten Format. Wenn andere Argumente in der Befehlszeile bereitgestellt werden, überschreiben diese Werte die von JSON bereitgestellten Werte. Es ist nicht möglich, beliebige Binärwerte mit einem von JSON bereitgestellten Wert zu übergeben, da die Zeichenfolge wörtlich genommen wird. Dies darf nicht zusammen mit --cli-input-yaml angegeben werden.

Ein Token, um anzugeben, wo mit der Paginierung begonnen werden soll. Dies ist das NextToken aus einer zuvor abgeschnittenen Antwort.

Anwendungsbeispiele finden Sie unter Paginierung im AWS Command Line Interface-Benutzerhandbuch .

Die Gesamtzahl der Elemente, die in der Ausgabe des Befehls zurückgegeben werden sollen. Wenn die Gesamtzahl der verfügbaren Elemente den angegebenen Wert überschreitet, wird ein NextToken in der Ausgabe des Befehls bereitgestellt. Um die Paginierung fortzusetzen, geben Sie den NextToken-Wert im Argument start-token eines nachfolgenden Befehls an. Nicht Verwenden Sie das NextToken-Antwortelement direkt außerhalb der AWS CLI.

Anwendungsbeispiele finden Sie unter Paginierung im AWS Command Line Interface-Benutzerhandbuch .

--generate-cli-skeleton (string) Gibt ein JSON-Skelett in die Standardausgabe aus, ohne eine API-Anfrage zu senden. Wenn kein Wert oder der Wert input angegeben wird, wird ein JSON-Beispiel für die Eingabe ausgegeben, das als Argument für --cli-input-json verwendet werden kann. In ähnlicher Weise wird, wenn yaml-input bereitgestellt wird, ein Beispiel-Input-YAML ausgegeben, das mit --cli-input-yaml verwendet werden kann. Wenn es mit dem Wert output bereitgestellt wird, validiert es die Befehlseingaben und gibt eine JSON-Beispielausgabe für diesen Befehl zurück.

Beschreibungen der globalen Parameter finden Sie in der „aws-Hilfe“.


Ausgabe¶

Die Ziele.

(Struktur)

Stellt ein kontoübergreifendes Ziel dar, das Abonnementprotokollereignisse empfängt.

Zielname -> (Zeichenfolge)

Der Name des Ziels.

Der Amazon-Ressourcenname (ARN) des physischen Ziels, an das die Protokollereignisse übermittelt werden (z. B. ein Kinesis-Stream).

Eine Rolle für den Identitätswechsel, die bei der Übermittlung von Protokollereignissen an das Ziel verwendet wird.

Ein IAM-Richtliniendokument, das regelt, welche AWS-Konten Abonnementfilter für dieses Ziel erstellen können.

Der ARN dieses Ziels.

Die Erstellungszeit des Ziels, ausgedrückt in Millisekunden nach dem 1. Januar 1970 00:00:00 UTC.

Das Token für den nächsten zurückzugebenden Satz von Elementen. Das Token läuft nach 24 Stunden ab.


4 Antworten 4

Wenn Sie Ihre Python-Skripte direkt mit python script.py aufrufen, sollte die Einstellung des PATH auf das 2.7-Verzeichnis zuerst ausreichen.

Wenn Sie Python-Skripte indirekt mit der Shell aufrufen möchten, d.h. indem Sie einfach script.py schreiben oder Durch Ausführen der Datei im Explorer müssen Sie die 2.7-Installation als Standardprogrammhandler für die .py-Erweiterung festlegen. Der einfachste Weg, dies zu tun, besteht darin, das Python-Installationsprogramm erneut auszuführen und die Option „Diese Installation als Standard festlegen“ auszuwählen.

Beachten Sie, dass Sie dies beim neuen Launcher, der mit 3.3+ ausgeliefert wird, nicht benötigen, da Sie die Versionsnummer mit einer Shebang-Zeile angeben können und der Launcher automatisch den entsprechenden Interpreter auswählt.


1.2. Umgebungsvariablen¶

Diese Umgebungsvariablen beeinflussen das Verhalten von Python, sie werden vor den Befehlszeilenschaltern außer -E verarbeitet. Es ist üblich, dass Befehlszeilenschalter Umgebungsvariablen überschreiben, wenn ein Konflikt vorliegt.

Ändern Sie den Speicherort der Python-Standardbibliotheken. Standardmäßig werden die Bibliotheken durchsucht in Präfix /lib/python Ausführung und exec_prefix /lib/python Ausführung, wo Präfix und exec_prefix sind Installations-abhängige Verzeichnisse, beide standardmäßig auf /usr/local .

Wann PYTHONHOME auf ein einzelnes Verzeichnis gesetzt ist, ersetzt sein Wert beide Präfix und exec_prefix. Um unterschiedliche Werte für diese festzulegen, setzen Sie PYTHONHOME zu Präfix : exec_prefix.

Erweitern Sie den Standardsuchpfad für Moduldateien. Das Format ist das gleiche wie die Shell’s WEG : ein oder mehrere Verzeichnispfadnamen getrennt durch os.pathsep (z. B. Doppelpunkte unter Unix oder Semikolons unter Windows). Nicht vorhandene Verzeichnisse werden stillschweigend ignoriert.

Neben normalen Verzeichnissen können auch einzelne PYTHONPFAD Einträge können sich auf Zip-Dateien beziehen, die reine Python-Module enthalten (entweder im Quellcode oder in kompilierter Form). Erweiterungsmodule können nicht aus Zip-Dateien importiert werden.

Der Standardsuchpfad ist Installationsabhängig, beginnt aber im Allgemeinen mit Präfix /lib/python Ausführung (sehen PYTHONHOME Oben). es ist immer angehängt an PYTHONPFAD .

Im Suchpfad wird vor ein zusätzliches Verzeichnis eingefügt PYTHONPFAD wie oben beschrieben unter Schnittstellenoptionen. Der Suchpfad kann aus einem Python-Programm heraus als Variable manipuliert werden sys.pfad .

Wenn dies der Name einer lesbaren Datei ist, werden die Python-Befehle in dieser Datei ausgeführt, bevor die erste Eingabeaufforderung im interaktiven Modus angezeigt wird. Die Datei wird im gleichen Namensraum ausgeführt, in dem interaktive Befehle ausgeführt werden, damit darin definierte oder importierte Objekte ohne Qualifikation in der interaktiven Sitzung verwendet werden können. Sie können auch die Eingabeaufforderungen ändern sys.ps1 und sys.ps2 in dieser Datei.

Setzen Sie dies auf eine nicht leere Zeichenfolge, damit die Zeit Das Modul erfordert, dass Datumsangaben, die als Strings angegeben werden, 4-stellige Jahreszahlen enthalten, andernfalls werden 2-stellige Jahreszahlen gemäß den in der beschriebenen Regeln konvertiert Zeit Moduldokumentation.

Wenn dies auf eine nicht leere Zeichenfolge gesetzt ist, entspricht dies der Angabe des Möglichkeit. Wenn auf eine ganze Zahl gesetzt, entspricht dies der Angabe von mehrmals.

Wenn dies auf eine nicht leere Zeichenfolge gesetzt ist, entspricht dies der Angabe des -D Möglichkeit. Wenn auf eine ganze Zahl gesetzt, entspricht dies der Angabe von -D mehrmals.

Wenn dies auf eine nicht leere Zeichenfolge gesetzt ist, entspricht dies der Angabe des -ich Möglichkeit.

Diese Variable kann auch durch Python-Code mit geändert werden os.environ um den Prüfmodus bei der Programmbeendigung zu erzwingen.

Wenn dies auf eine nicht leere Zeichenfolge gesetzt ist, entspricht dies der Angabe des -u Möglichkeit.

Wenn dies auf eine nicht leere Zeichenfolge gesetzt ist, entspricht dies der Angabe des -v Möglichkeit. Wenn auf eine ganze Zahl gesetzt, entspricht dies der Angabe von -v mehrmals.

Wenn dies gesetzt ist, ignoriert Python die Groß-/Kleinschreibung in importieren Aussagen. Dies funktioniert nur unter Windows, OS X, OS/2 und RiscOS.

Wenn dies festgelegt ist, versucht Python nicht zu schreiben .pyc oder .pyo Dateien zum Importieren von Quellmodulen. Dies entspricht der Angabe der -B Möglichkeit.

Wenn diese Variable auf gesetzt ist willkürlich , der Effekt ist der gleiche wie bei der Angabe von -R Option: Ein zufälliger Wert wird verwendet, um die Hashes von str-, bytes- und datetime-Objekten zu setzen.

Wenn PYTHONHASCHSAMEN auf einen ganzzahligen Wert gesetzt ist, wird er als fester Startwert zum Generieren des hash() der von der Hash-Randomisierung abgedeckten Typen verwendet.

Sein Zweck besteht darin, wiederholbares Hashing zu ermöglichen, z. B. für Selbsttests für den Interpreter selbst, oder es einem Cluster von Python-Prozessen zu ermöglichen, Hashwerte gemeinsam zu nutzen.

Die ganze Zahl muss eine Dezimalzahl im Bereich [0,4294967295] sein. Die Angabe des Werts 0 führt zu denselben Hashwerten wie bei deaktivierter Hash-Randomisierung.


Sie können Ihre bevorzugte Telnet- (nicht empfohlen) oder ssh- (empfohlene) Anwendung verwenden, um eine Verbindung zu Ihrer Synology-Box herzustellen und sie als Terminal zu verwenden.

  1. Aktivieren Sie die Befehlszeilenschnittstelle (CLI) über die Netzwerkdienste
  2. Definieren Sie das Protokoll und den Benutzer und stellen Sie sicher, dass der Benutzer ein Kennwort festgelegt hat
  3. Zugriff auf die CLI

Ich benutze GateOne von der Synocommunity.

Gehen Sie zu den Einstellungen im Paketzentrum und fügen Sie http://packages.synocommunity.com/ als Paketquelle hinzu. Dann sollten Sie es einfach über das Paketzentrum hinzufügen können.

Windows XP ---> Synology:DS218+

Schritt 2:
Telnet-Dienst aktivieren (啟動 Telnet 功能)
oder SSH-Dienst aktivieren (啟動 SSH 功能)


Schritt 3: Starten Sie das Terminal unter Windows (oder über Ausführen, um das Terminal zu starten)

Schritt 4: Geben Sie Folgendes ein: telnet your_nas_ip_or_domain_name, wie unten



Das aktuelle Windows 10 (Version 1803 (OS Build 17134.1)) hat SSH integriert. Damit aktivieren Sie einfach SSH über die Systemsteuerung, Terminal und SNMP, stellen Sie sicher, dass Sie ein Konto in der Administratorgruppe verwenden, und Sie sind alle einstellen.


Befehlsverlauf

Änderung

Dieser Befehl wurde eingeführt.

Nutzungsrichtlinien

Beim Konfigurieren von url sftp: im Submodus müssen Sie zuerst den RSA-Fingerabdruck (AKA host-key) vom Ziel-SFTP-Host in ISE laden. Sie können dies tun, indem Sie den Befehl crypto host_key add über die CLI verwenden. Siehe die Krypto Befehl für weitere Informationen.

Um diese Funktion zu deaktivieren, verwenden Sie den Befehl no form of host-key host im Untermodus.

Cisco ISE zeigt die folgende Warnung an, wenn Sie ein sicheres FTP-Repository im Cisco ISE-Admin-Portal unter Administration > System > Wartung > Repository > Repository hinzufügen konfigurieren.

Der Hostschlüssel des SFTP-Servers muss über die CLI mithilfe der Option host-key hinzugefügt werden, bevor dieses Repository verwendet werden kann.

Ein entsprechender Fehler wird in den Cisco ADE-Protokollen ausgegeben, wenn Sie versuchen, in ein sicheres FTP-Repository zu sichern, ohne den Hostschlüssel zu konfigurieren.

Cisco ISE initiiert ausgehende SSH- oder SFTP-Verbindungen im FIPS-Modus, auch wenn der FIPS-Modus auf ISE nicht aktiviert ist. Stellen Sie sicher, dass die Remote-SSH- oder SFTP-Server, die mit ISE kommunizieren, FIPS 140-2-genehmigte kryptografische Algorithmen zulassen.

Cisco ISE verwendet eingebettete FIPS 140-2-validierte kryptografische Module. Einzelheiten zu den FIPS-Compliance-Ansprüchen finden Sie im FIPS-Compliance-Letter.