Seite 1 von 1

.bat & .sh Code ausführen

Verfasst: Freitag 30. September 2005, 12:45
von Michael
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

Verfasst: Freitag 30. September 2005, 12:50
von Leonidas
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.

Verfasst: Freitag 30. September 2005, 12:59
von Michael
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.

Verfasst: Freitag 30. September 2005, 13:19
von Leonidas
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.

Verfasst: Freitag 30. September 2005, 14:05
von henning
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 ,-))

Verfasst: Freitag 30. September 2005, 14:53
von Michael
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?

Verfasst: Freitag 30. September 2005, 15:17
von Michael
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