Anmelden

View Full Version : Mehrere QSH Befehle zu einem einzigen



Muller
11-05-12, 08:13
Hallo liebe Community,

ich möchte von der AS400 eine .CSV Datei an einen SFTP Server schicken. In einzelnen Befehlen funktioniert dies tadellos.

Um alles automatisiert in einem Batchprogramm ein zu bauen brauchen ich dies aber als ein einziger Befehl.

Meine bisherigen Versuche sehen in der Befehlszeile im Moment so aus:

strqsh cmd('sftp USER@Server ;
put Verzeichnis/*.* ERP2PIM')

Vielleicht könnt ihr mir ja weiter helfen.

Bin für jeden Tipp dankbar,

Robi
11-05-12, 08:58
Versuch mal stdin mit einer Datei zu überschreiben, in der die Befehle stehen.
beim 'normalen' FTP heist die Schnitstelle INPUT, fals QSH STDIN nicht kennt.


vielleicht hilft auch dieser link
Midrange Programmer, OS/400 Edition, (http://www.itjungle.com/mpo/mpo042502-story04.html)

Gruß
Robi

Fuerchau
11-05-12, 11:13
Mit "sftp" klappt das so nicht unbedingt.
Hierfür gibt es für PASE (nicht QSH!) einen Batchenhancer, allerdings weiß ich im Moment nicht mehr wie der heißt.

Ansonsten könnte auch folgendes funktionieren:

echo "Scriptbefehl1" >MyScript.txt;
echo "Scriptbefehl2" >>MyScript.txt;
:
cat MyScript.txt | sftp .... >Sftp.Log 2>&1;

Diese Anweisungen alle an QSH übergeben.
Wichtig ist nur, dass jedes Kommando mit Semikolon abgeschlossen wird.

Muller
11-05-12, 11:57
Mein Versuch ist folgender:

Meine Textdatei:

sftp USER@Server;
put /Pfad ....

Aufruf in der Befehlszeile:

CALL PGM(QP2TERM) PARM('Pfad der textdatei')

Leider tut sich da gar nichts.

Bin ich auf dem richtigen Weg?

Pikachu
11-05-12, 12:00
Example Batch SFTP Script (http://www-304.ibm.com/support/docview.wss?uid=nas183a2ef0de87880a88625735b005730 34)

Fuerchau
11-05-12, 12:01
Nein, da du den PUT-Befehl ja nicht an Standardinput von SFTP weiterleitest sondern NACH dem sftp versuchst auszuführen.

Ändere dein Script so ab, wie ich es beschrieben habe.

BenderD
12-05-12, 13:44
... meinst du sowas, wie im folgenden Beispiel?

command = 'cd $AppServer4RPG_HOME;cp=.:conf:;'
+ 'for file in $(ls *.jar);do cp=$cp$file:;done;'
+ 'for file in $(ls lib/*.jar);do cp=$cp$file:;done;'
+ 'java -cp $cp de.bender_dv.jvagate.communication.Receiver';
system('qsh cmd(''' + %trim(command) + ''')');