Newsgroup: it.comp.java
Titolo: Lanciare ksh

Ciao a tutti,
Ho un "piccolo" problema... In pratica c'è un'applicazione in COBOL su
UNIX che carica dei file di testo in una tabella Oracle.
Ora devo implementare un'applicazione web che faccia l'upload del file
e richiami il batch su UNIX. L'applicazione web dovrà essere
installata su un ambiente Windows (ma non credo faccia differenza).
La cosa mi sembra un pò complicata, l'upload posso farlo direttamente
da un server windows su una cartella sotto ambiente UNIX? Devo
utilizzare l'ftp?
Come posso lanciare un'applicazione sotto unix?
Sapete indicarmi dei link con esempi o spiegazioni?
Infine avete suggerimenti x una strada diversa? 
Grazie mille

 writes:
A> Ciao a tutti, Ho un "piccolo" problema... In pratica c'è
A> un'applicazione in COBOL su UNIX che carica dei file di testo 
A> in una tabella Oracle.  Ora devo implementare un'applicazione 
A> web che faccia l'upload del file e
E java e la korn shell che c'entrano scusa ?
E si, l'avere due sistemi operativi ti complica la vita in questo
caso, sopratutto se uno è Windows...
-- 
 /\            ___
/___/\__|_|\_|__|___Gian Uberto Lauri_____________________
  //--\ | | \|  |   Integralista GNUslamico  
\/		    e allevatore di bug da competizione

Non so, non c'è un sistema x lanciare un comando su un server remoto
da una webapp in java?

 writes:
A> Non so, non c'è un sistema x lanciare un comando su un server
A> remoto da una webapp in java?
Ah,  lanciare un  comando da  una  macchina UNIX  (o GNU/Linux)  verso
un'altra  macchina  UNIX  (o  GNU/Linux)  non è  un  grosso  problema,
banalmente  fai una  exex lanciando  ssh  o rsh.  Da Windows  dovresti
cercarti tu le applicazioni command line per quei protocolli.
In ogni caso  NON è il caso di lanciare una  elaborazione lunga da una
servlet, come non è sanissimo farlo in un thread separato.
Ma non dovevi trasferire file ?
-- 
 /\            ___
/___/\__|_|\_|__|___Gian Uberto Lauri_____________________
  //--\ | | \|  |   Integralista GNUslamico  
\/		    e allevatore di bug da competizione
P.S.
Ocio al bagno di sangue...

Devo fare entrambe le cose, l'ftp e il lancio del ksh... cmq sto
valutando di farla in c# che dovrebbe avere delle classi che mi
agevolano!!
Vedremo
Grazie mille

 writes:
A> Devo fare entrambe le cose, l'ftp e il lancio del ksh...
Usa  solo  ssh  (scp per  il  file  transfer  e  ssh per  lanciare  lo
script). Se cerchi con google java ssh trovi quello che serve puro java.
Oppure ti affidi alle implementazioni di cygwin ...
a> cmq sto
A> valutando di farla in c# che dovrebbe avere delle classi che mi
A> agevolano!! 
Siii, fidati...


Credo di poter riuscire a semplificarmi un pò le cose, dato che il ksh
da lanciare si trova su una macchina UNIX, potrei creare la webapp in
java direttamente su quella macchina (risparmiando l'ftp)
Così potrei salvare il file "uploadato" direttamente sulla cartella
che mi serve e lanciare il ksh con Runtime.getRuntime().Exec("ksh
mio.ksh nomefile")
il problema è che non ho trovato un modo per lanciare il comando ksh
con un utenza predefinita, qualcosa tipo il "Run as..." di Windows, che
voi sappiate è possibile farlo?
Grazie ancora

 writes:
A> Credo di poter riuscire a semplificarmi un pò le cose, dato che il
A> ksh da lanciare si trova su una macchina UNIX, potrei creare la
A> webapp in java direttamente su quella macchina (risparmiando l'ftp)
Occhio, che gli upload non  sono proprio zuccherini. Inoltre le classi
di  O'Reilly pare  abbiano  qualche problema.   Comunque  è una  idea,
sopratutto se i file non sono enormi.
A> Così potrei salvare il file "uploadato" direttamente sulla cartella
A> che mi serve e lanciare il ksh con Runtime.getRuntime().Exec("ksh
A> mio.ksh nomefile") 
Non  so  quanto   sia  una  buona  idea  eseguirlo   in  sincrono.  Se
l'elaborazione è troppo lenta rischi dei timeout.
<OT con Java>
Non occorre dare una estensione ad uno shell script, se non per
comodità di chi fa ls. 
Non occorre  nemmeno fare  "ksh script", basta  che lo script  abbia i
permessi di esecuzione  e inizi (per essere sicuri  che lo si richiami
con la shell desiderata) con #!/path/della/shell.
</OT con Java>
A> problema è che non ho trovato un modo per lanciare il comando ksh
A> con un utenza predefinita, qualcosa tipo il "Run as..." di Windows,
A> che voi sappiate è possibile farlo?
man su. Dal 1970. Windows viaggia con alcuni decenni di ritardo.
Potrebbe essere  il caso di rendere  lo script setuid  (man chmod), la
cosa potrebbe richiedere di  usare un parametro particolare nella riga
#!/bin/ksh (con la  bash è necessario - per tagliar  la testa al toro,
man  ksh) per dirgli  di eseguire  con l'id  del proprietario  tutti i
programmi richiamati al suo interno.
