.bat & .sh Code ausführen

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.
Michael

.bat & .sh Code ausführen

Beitragvon Michael » Freitag 30. September 2005, 12:45

Hallo,
ich habe folgendes Problem:

Ich möchte Code der in einer .bat und .sh Datei über Python ausführen.

Kann mir jemand sagen wie das funktioniert?

Gruss Michael
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Freitag 30. September 2005, 12:50

In einer .bat Datei stehen Windows Batch Befehle drin und in einer .sh Datei ist es oft Bash-Script. Wie willst du das durch den Python-Interpreter ausführen? Der kann nur Python!

Oder meinst du, dass du diese Dateien ausführen willst (von cmd/bash)? Dann ist os.system() was für dich.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Michael

Beitragvon Michael » Freitag 30. September 2005, 12:59

Leonidas hat geschrieben:In einer .bat Datei stehen Windows Batch Befehle drin und in einer .sh Datei ist es oft Bash-Script. Wie willst du das durch den Python-Interpreter ausführen? Der kann nur Python!

Oder meinst du, dass du diese Dateien ausführen willst (von cmd/bash)? Dann ist os.system() was für dich.


Ich habe da ein Script mit 3 Variablen in einer .bat bzw. .sh Datei. Die wären LogPfad, ExportPfad und Oracle Pfad.

Da es für Kunden immer ein gefummle ist die Scripte richtig einzustellen habe ich nun eine Eingabe gebastelt.

Nun möchste ich den Code der in der .bat bzw. .sh Datei steht mit den über die Console eingegebenen Werten ausführen.

Mein problem besteht darin, das ich nicht weis wie ich in Python den Code ausführen kann.
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Freitag 30. September 2005, 13:19

Du kannst folgendes machen:

Das Script sieht in etwa so aus (nur mit ZSH getestet):

Code: Alles auswählen

#!/bin/bash
LogPfad=$1
ExportPfad=$2
OraclePfad=$3

# irgendwas mit den Variablen machen
echo $LogPfad
echo $ExportPfad
echo $OraclePfad


Und dann im Python-Programm:

Code: Alles auswählen

import os
pfad = '/usr/local/share/'
os.system("./script.sh %s %s %s" % (pfad, pfad, pfad))


Ich hoffe du hast das Prinzip verstanden. Dem Script werden die Variablen über die Kommandozeile übergeben.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
henning
User
Beiträge: 274
Registriert: Dienstag 26. Juli 2005, 18:37

Beitragvon henning » Freitag 30. September 2005, 14:05

Leonidas hat geschrieben:Das Script sieht in etwa so aus (nur mit ZSH getestet):

Sollte egal sein, du schreibst ja am Anfang

Code: Alles auswählen

#!/bin/bash

Ab da macht ja eben die Bash weiter also hat die zsh da schon nix mehr mit zu tun.

Ich würds auch in jedem Fall mit so 'ner Parameterübergabe machen wenns irgendwie geht.
Wenns sich gar nicht vermeiden lässt, kann man noch in dem bash/batch-skript von python aus rumschreiben bevor mans ausführt, sollte aber in dem Fall total unnötig sein (ausserdem wärs da wahrscheinlich bald weniger aufwendig, die scripts nach python zu portiern ,-))
Michael

Beitragvon Michael » Freitag 30. September 2005, 14:53

Also so sehen die Scripte aus:

Code: Alles auswählen

set ORACLE_SID=[b]WG81[/b]
set NLS_LANG=american_america.we8iso8859p1

[b]d:\oracle\Ora81\bin\exp [/b][b]User/PW[/b] parfile=[b]d:\DB-Scripts.NT\export.par[/b]


USERID=User/PW
BUFFER=10000000
FILE=d:\backup\exp.dmp
LOG=d:\backup\exp.log
OWNER=PUBLIC,USER
RECORDLENGTH=10000000


Die Fett markierten Werte müssen eingegeben werden.

Gibt es nicht eine Möglichkeit die Code Zeilen direkt aus Pyton auszufüren? Muss man immer eine Datei Bilden und diese dann mit Python starten?
Michael

Beitragvon Michael » Freitag 30. September 2005, 15:17

Ich glaube ich Löse das ganze so, dass ich die Script dateien generiere und dann direkt ausführe. Mit den 2 einzelnen Scripten ist das sonst recht kompliziert.

Michael

Wer ist online?

Mitglieder in diesem Forum: __deets__