aus .ksh skript ein python modul aufrufen

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.
Antworten
Hubi
User
Beiträge: 17
Registriert: Mittwoch 17. Juni 2009, 10:58

Hi @ all

Der noob ist zurück :) hehe

Ich hätte eine Frage betreffend Kornshell-skript. Ist es möglich aus so einem skript ein python-modul aufzurufen (welches dann eine bestimmte List erstellt und zurück gibt)

Wenn ja... wie geht das ? muss ich das auch irgendwie "importieren" ?

Besten Dank und einen wunderschönen Tag (bei diesem Wetter müsste man doch in der Badi hocken) :) hehe

Grüsse aus der Schweiz

(Ich hoffe jetzt seit ihr auch noch so Hilfreich, obwohl ich Schweizer bin) :) hehe
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Ein ganz normaler Aufruf von ``python skript`` oder wenn das Skript ausfuehrbar ist: ``skript`` .
Hubi
User
Beiträge: 17
Registriert: Mittwoch 17. Juni 2009, 10:58

und wie würde ich dies jetzt hier einbauen...

mein modul heisst z.b "getSubscriberList"

und das ksh skript (der interessante teil) sieht wie folgt aus:

Code: Alles auswählen

#
# for all crossed instruments, send a message
#
while read i
do
arena_message $ADS \
-username ATS \
-password maintenance \
-subject "CROSSED EXOTIC" \
-server "$SERVER" \
-to '$TO_LIST' \
-message "$i  has been crossed"
echo "$i wurde Crossed" 
done < crossed.out
jetzt müsste ich dort wo das "$TO_LIST" steht und er die List aus dem config-file holt, mein pythonmodul aufrufen.

thx a lot
Benutzeravatar
Michael Schneider
User
Beiträge: 569
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Brandenburg

Hallo,

dazu hast Du aber ganz schön wenig Infos über das Python-Modul zurückgelassen. Ich gehe mal davon aus, dass es seine Rückgabewerte direkt nach stdout ausgibt?
Dann brauchst Du das Skript doch nur noch ausführen und die Ergebnisse übergeben, ich denke so sollte das gehen:
-to `python getSubscriberList`
Hängt aber wie gesagt davon ab, was Dein Skript zurückgibt.

Gruß
Diese Nachricht zersört sich in 5 Sekunden selbst ...
Benutzeravatar
Michael Schneider
User
Beiträge: 569
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Brandenburg

Mal ein praktisches Beispiel:

Inhalt von t.py:

Code: Alles auswählen

print "'test 1'"
print "'test 2'"
Test:
<in>echo `python t.py`
<out>'test 1' 'test 2'
Diese Nachricht zersört sich in 5 Sekunden selbst ...
Hubi
User
Beiträge: 17
Registriert: Mittwoch 17. Juni 2009, 10:58

Hei, besten Dank

Es ist so, momentan sind die Email-Empfänger in einem Config-File hart-codiert. das sieht in etwa so aus:

Code: Alles auswählen

export ADS=XXX
export SERVER=XXX


export INTERVAL=3600
export TO_LIST="E0914, E1182, E5534, E8102, E2075, T511, TC46, TG99, E1220, E1727, E1815, E2479, E2509, E3279, E3712, E4905, E5550, E6007, E6707, E7097, E7242, E8086, E8112, E8240, E8919, E8922, E8927"
(ADS und Server-Name wurden veschleiert)

im kornshell-skript wird dann mittels:

to '$TO_LIST' die Liste der Prime-User aus dem configfile geholt, und jedem eine Primemessage versandt, dass das Produkt gecrossed wurde.

Code: Alles auswählen

while read i
do
arena_message $ADS \
-username ATS \
-password maintenance \
-subject "CROSSED EXOTIC" \
-server "$SERVER" \
-to '$TO_LIST' \
-message "$i  has been crossed"
echo "$i wurde Crossed" 
done < crossed.out

Versteht jemand diesen Code genau ? meine frage ist, was mast das "while read i do ?" meine frage: sind beim to '$TO_LIST' gleich eine "liste der user enthalten", oder wird über diesen code "geloopet" und bei jedem "to'$TO_LIST'" wird nur immer der nächste empfänger geholt ?

Es handelt sich schon um eine liste oder ?

Meine idee war, das mein pythonmodule dann auch eine "liste" der logonid's zurückgibt, welche eine message erhalten sollen ...
BlackJack

@Hubi: Das ist jetzt aber keine Python-Frage mehr, sondern eine über Shell-Skripting.

Die ``while``-Schleife ist über die Zeilen der Datei `crossed.out`. Für jede Zeile wird `$i` an den Inhalt gebunden und das Kommando zwischen ``do`` und ``done`` ausgeführt.

`$TO_LIST` bleibt immer gleich, allerdings setzt Du da auch nicht den Wert der Variablen ein, sondern die literale Zeichenkette '$TO_LIST', was wohl eher nicht das ist, was Du wolltest. In einfachen Anführungszeichen werden Variablennamen nämlich nicht durch ihren Wert ersetzt.

`$TO_LIST` ist keine Liste, sondern eine Zeichenkette. Etwas anderes gibt es im Grunde bei Shell-Skripten nicht. Einige Shells kennen noch Arrays, aber die werden am Ende auch über Zeichenketten simuliert.
Hubi
User
Beiträge: 17
Registriert: Mittwoch 17. Juni 2009, 10:58

Jep ich weiss, aber da ihr mir hier schon so gut gehollfen habt, dachte ich ich poste es einfach mal :) "i'm sorry"

also eine zeichenkette sagst du... zwar nicht das was ich wollte, aber mit dem kann ich arbeiten :)

Besten Dank und einen schönen Tag wünsche ich euch
Antworten