Servus,
da ich kompletter python anfänger bin hätte ich eine frage.
ich muss über eine CLI in meinem fall ist das DOS bzw die DOS-Eingabeaufforderung ein programm steuern.
sprich ich gebe dort befehle ein und bekomme gewisse ergebnisse zurück.
das ganze sieht so aus:
kann ich mit hilfe von python nun den befehl ausgeben und die rückgabewerte einlesen und in einer datei abspeichern?
wenn es geht wie lauten die befehle dafür?
ich bedanke mich hier schon mal für eure stellungnahmen.
gruß
Pablo
Edit (jens): URL zum Bild geändert.
Schreiben und Auslesen in DOS mit hilfe von python
-
- User
- Beiträge: 21
- Registriert: Montag 12. November 2007, 15:15
- Wohnort: Stuttgart
kann ich mit hilfe von python nun den befehl ausgeben
Code: Alles auswählen
print "befehl"
Ich denke einmal, daß du so etwas gemeint hast:und die rückgabewerte einlesen und in einer datei abspeichern?
Code: Alles auswählen
cli> spam -eggs=bacon > outfile
In Python könntest du, wenns sein muss, über ein File (zB sys.stdin) iterieren:
http://docs.python.org/tut/node9.html#S ... 0000000000
-
- User
- Beiträge: 21
- Registriert: Montag 12. November 2007, 15:15
- Wohnort: Stuttgart
wofür ich python brauche:
es gibt ein programm namens mks integrity client.
mit hilfe von mks wird die entwickelte software in einer datenbank verwaltet. nun muss garantiert werden dass diese software auch fehlerfrei läuft und gewissen normen entspricht.
dafür muss ich nun ein python skript erstellen.
sprich ein entwickler will sein programm mit hilfe von mks auf dem server abspeichern.
wenn er dies versucht wird seinem auftrag eine id zu gewiesen.
bevor die software dann auf dem server gespeichert wird muss es von reviewern abgesegnet werden.
ich soll nun einen objektiven reviewer programmieren.
sprich ein programm in python entwickeln welches permanent die ids abfragt, guckt ob neue software abgespeichert werden soll und diese dann prüft ob sie compilierbar ist und ob sie andere verschiedene tests besteht. wenn dies der fall ist bekommt sie ein ok, wenn nicht gibts ne email an den entwickler und er muss nochmal alles überarbeiten.
nun bekomm ich den mks ablauf via cli hin.
sprich ich komm an die ids etc ran.
muss aber jetzt den prozess mit hilfe von python automatisieren.
nur hab ich von python wenig bis gar keine ahnung. ist absolutes neuland für mich. hab bisher immer in c/c++ und pascal programmiert.
sprich ich muss es schaffen mit python die befehle in die cli zu schreiben
die werte,die mir die cli liefert abspeichern und dann weiterverwenden.
und an dem punkt hapert es immoment, da ich nicht weiss wie ich das mit python realisiere.
ich hatte mit print schon rumgetestet nur hat es noch nicht wirklich funktioniert.
deswegen hab ich hier um hilfe gebeten
wenn einer ideen hat wie ich befehle in die cli bekomme und die rückgabewerte auslesen kann wär ich echt dankbar
hab bisher noch nichts zu so einem thema gefunden
es gibt ein programm namens mks integrity client.
mit hilfe von mks wird die entwickelte software in einer datenbank verwaltet. nun muss garantiert werden dass diese software auch fehlerfrei läuft und gewissen normen entspricht.
dafür muss ich nun ein python skript erstellen.
sprich ein entwickler will sein programm mit hilfe von mks auf dem server abspeichern.
wenn er dies versucht wird seinem auftrag eine id zu gewiesen.
bevor die software dann auf dem server gespeichert wird muss es von reviewern abgesegnet werden.
ich soll nun einen objektiven reviewer programmieren.
sprich ein programm in python entwickeln welches permanent die ids abfragt, guckt ob neue software abgespeichert werden soll und diese dann prüft ob sie compilierbar ist und ob sie andere verschiedene tests besteht. wenn dies der fall ist bekommt sie ein ok, wenn nicht gibts ne email an den entwickler und er muss nochmal alles überarbeiten.
nun bekomm ich den mks ablauf via cli hin.
sprich ich komm an die ids etc ran.
muss aber jetzt den prozess mit hilfe von python automatisieren.
nur hab ich von python wenig bis gar keine ahnung. ist absolutes neuland für mich. hab bisher immer in c/c++ und pascal programmiert.
sprich ich muss es schaffen mit python die befehle in die cli zu schreiben
die werte,die mir die cli liefert abspeichern und dann weiterverwenden.
und an dem punkt hapert es immoment, da ich nicht weiss wie ich das mit python realisiere.
ich hatte mit print schon rumgetestet nur hat es noch nicht wirklich funktioniert.
deswegen hab ich hier um hilfe gebeten
wenn einer ideen hat wie ich befehle in die cli bekomme und die rückgabewerte auslesen kann wär ich echt dankbar
hab bisher noch nichts zu so einem thema gefunden
Mir ist immer noch nicht so ganz klar ob Du ein Programm in der DOS-Eingabeaufforderung hast das eine CLI bietet oder ob Du dort einfach nur ein Programm mit Argumenten startest das nicht interaktiv abläuft!? Letzteres ist einfach mit dem `subprocess`-Modul machbar. Ersteres ist schwieriger. Da würde ich mal auf `pexpect` als Ansatz tippen.
Da hast du 2 Möglichkeiten: entweder du pipest die Ausgabe an python.exe (in welchem Fall du ein "sauberes" Script hättest, das nicht vom OS abhängt) oder du pfeifst auf die Kommandozeile und machst dir einen Prozess mit os.popen*, wobei du uU betriebsystemabhängig wirst.
Zu VAriante 2:
http://docs.python.org/lib/os-newstream ... newstreams
Zu VAriante 2:
http://docs.python.org/lib/os-newstream ... newstreams
Statt `popen*` sollte man aber lieber das `subprocess`-Modul benutzen, das soll die ganzen verschiedenen `popen*`-Varianten ablösen.
-
- User
- Beiträge: 21
- Registriert: Montag 12. November 2007, 15:15
- Wohnort: Stuttgart
@blackjack
ich hab ein programm welches man über verschiedene modi benutzen kann.
stell es dir so wie linux vor
in linux kannste doch auch auswählen ob du kde, welches ja windows ähnlich ist, die shell etc nimmst
bei meinem programm kannste dir halt aussuchen ob du die gui nimmst
sprich die grafische oberfläche, die weboberfläche oder aber die cli
im falle meines programmes ist die cli die eingabeaufforderung.
ich öffne halt von windows die eingabeaufforderung und kann direkt die befehle eingeben um das programm zu steuern.
nun kann ich das programm per hand steuern und will diesen prozess mit python automatisieren.
sprich das pythonskript was ich schreiben möchte läuft permanent auf einem server durch.
mein aktuelles problem ist, dass ich keine ahnung hab wie ich mit hilfe von python die befehle in die eingabeaufforderung bringe und die werte, die ich zurückbekomme, auslesen kann.
ich hab ein programm welches man über verschiedene modi benutzen kann.
stell es dir so wie linux vor
in linux kannste doch auch auswählen ob du kde, welches ja windows ähnlich ist, die shell etc nimmst
bei meinem programm kannste dir halt aussuchen ob du die gui nimmst
sprich die grafische oberfläche, die weboberfläche oder aber die cli
im falle meines programmes ist die cli die eingabeaufforderung.
ich öffne halt von windows die eingabeaufforderung und kann direkt die befehle eingeben um das programm zu steuern.
nun kann ich das programm per hand steuern und will diesen prozess mit python automatisieren.
sprich das pythonskript was ich schreiben möchte läuft permanent auf einem server durch.
mein aktuelles problem ist, dass ich keine ahnung hab wie ich mit hilfe von python die befehle in die eingabeaufforderung bringe und die werte, die ich zurückbekomme, auslesen kann.
Ganz ehrlich ist mir immer noch nicht ganz klar wie die Situation aussieht.
Wenn das Programm eine CLI zur Verfügung stellt ist das so etwas wie der Python-Interpreter im Terminal oder in der DOS-Eingabeaufforderung, also ein Programm mit "Textoberfläche" das ständig läuft und mit dem der Benutzer interagiert. Ist es so etwas?
Oder einfach nur Programme die aufgerufen werden und dann ohne Interaktion durchlaufen wie ``dir``, ``ping`` oder ``netstat``? Das ist dann aber nicht CLI. Ich weiss aber nicht ob Du das nicht eventuell mit der DOS-Eingabeaufforderung durcheinander bringst.
Wenn das Programm eine CLI zur Verfügung stellt ist das so etwas wie der Python-Interpreter im Terminal oder in der DOS-Eingabeaufforderung, also ein Programm mit "Textoberfläche" das ständig läuft und mit dem der Benutzer interagiert. Ist es so etwas?
Oder einfach nur Programme die aufgerufen werden und dann ohne Interaktion durchlaufen wie ``dir``, ``ping`` oder ``netstat``? Das ist dann aber nicht CLI. Ich weiss aber nicht ob Du das nicht eventuell mit der DOS-Eingabeaufforderung durcheinander bringst.
Ich glaube, dass sein Programm interaktiv Textzeilen einliest, und dass er mit CLI sein Programm-Interface meint.
Weil's mir gerade einfällt: am schönsten wäre eine Wrapper-Bibliothek um den C-Code. Dann kann man alle Interfaces mit Python bauen und muss dann nicht pfuschen.
Weil's mir gerade einfällt: am schönsten wäre eine Wrapper-Bibliothek um den C-Code. Dann kann man alle Interfaces mit Python bauen und muss dann nicht pfuschen.
-
- User
- Beiträge: 21
- Registriert: Montag 12. November 2007, 15:15
- Wohnort: Stuttgart
platt formuliert könnte man sagen, ich will mit hilfe von python ein programm steuern. deswegen hatte ich mir überlegt mit python befehle in das command line interface des programmes einzugeben und die daten, die von dem programm zurückgegeben werden, mit python auszulesen,abzuspeichern und zu verwenden.
das skript soll halt gewisse dinge überwachen und dann auf veränderungen reagieren.
bin nun dabei mich mit dem subprocess modul und den popen objects auseinanderzusetzen. sprich erstmal gucken was das alles ist und was das alles kann^^
ich danke euch schon mal für eure hilfe. ohne euch hätte ich keinerlei ansatz gehabt und mir nen wolf gesucht.
also vielen dank das ihr euch die mühe gegeben habt und mir tipps gegeben habt. bei problemen werd ich mich hier im thread nochmal melden, vielleicht habt ihr ja dann noch die muse sich auch damit zu beschäftigen;)
danke euch
das skript soll halt gewisse dinge überwachen und dann auf veränderungen reagieren.
bin nun dabei mich mit dem subprocess modul und den popen objects auseinanderzusetzen. sprich erstmal gucken was das alles ist und was das alles kann^^
ich danke euch schon mal für eure hilfe. ohne euch hätte ich keinerlei ansatz gehabt und mir nen wolf gesucht.
also vielen dank das ihr euch die mühe gegeben habt und mir tipps gegeben habt. bei problemen werd ich mich hier im thread nochmal melden, vielleicht habt ihr ja dann noch die muse sich auch damit zu beschäftigen;)
danke euch