Newsgroup: it.comp.os.os2
Titolo: Curiosita' Rexx. Chi mi sa rispondere?

A furia di copia e incolla ho assemblato un piccolo script Rexx per il
Firewall 4.1. In pratica, lo script crea i file di configurazione e 
poi lancia un comando per aggiornare il firewall.
Tale comando pero' non fa un bel nulla, lamentandosi che e' 
impossibile accedere ai file di configurazione (quelli appena creati 
dallo script). Se eseguo lo stesso comando al di fuori dello script 
Rexx non ci sono problemi. 
Mi chiedo: i file creati dallo script restano forse "bloccati" finche'
lo script non e' terminato? Se si', c'e' un modo per "sbloccarli"?
Ciao e grazie
Gabriele

 lo script non e' terminato? Se si', c'e' un modo per "sbloccarli"?
non vedo lo script, ma se hai usato funzioni rexx tipo LINEOUT per 
scrivere, devi anche chiudere il file prima di darlo in pasto ad altri
programmi.
Si chiude usando
	LINEOUT( "data.txt")
(vedi rexx reference).
Bye,
	Yuri Dario
/*
 * member of TeamOS/2 - Italy
 * 
http://www.quasarbbs.com/yuri
 */

 
GRAZIE ! Sapevo che ci doveva essere qualcosa del genere.
Approfitto e allego lo script, cosi' mi puoi dire se c'e' dentro 
qualcosa di brutto (funzionare funziona, ma visto che non so bene come
fa a funzionare... ci ho messo 3 giorni per indovinare che <cfgfilt 
-u> dovevo scriverlo tra virgolette. Non avendo alcuna intenzione di 
leggermi TUTTA la documentazione, non era facile trovare quel che 
cercavo)
/* Firewall.cmd */
/* Grazie a C. Guadagnino per mlup.cmd */
/* 
gga...@tiscalinet.it
, 11.2000       */
/*                                     */
/* Verificare NLS */
NETSTR = 'Interface 10'
/* Verificare drive */
iplog = 'C:\MPTN\ETC\ppp0.log'
fwintrfc = 'C:\MPTN\ETC\fwsecad.cnf'
fwrls = 'C:\MPTN\ETC\security\fwfiltrs.cnf'
/* writes the output of netstat -a  to the file netstat  */
'@netstat.exe -a>netstat'
/* This section sorts through netstat alla  */
/* ricerca dell'interfaccia NETSTR          */
ok = 0
do until ok = 1
    if LINES(netstat) = 0 then
        call nonetwork
    else
        parse value LINEIN(netstat) with ipaddr
    if subword(ipaddr,3,2) = NETSTR then ok = 1
end
ok = 0
/* Grabs IP address from the line containing NETSTR */
parse value DELWORD(ipaddr,1,1) with ipaddr
parse value DELWORD(ipaddr,2) with ipaddr
if ipaddr='Not' then call nonetwork
if ipaddr=''  then call nonetwork
iplength = length(ipaddr)
ipaddr = left(ipaddr,(iplength - 1))
rc = stream('netstat','c','close')
'@del netstat >NUL'
/* Salva l'IP in formato adatto a dnsalias-net.zip */
call SysFileDelete iplog
call LINEOUT iplog, 'local 'ipaddr
call LINEOUT (iplog)
/* Modifica i 2 file del firewall  */
frwfile = 'firewall.cnf'    /* regole di base, indirizzo fasullo */
rep = '###.###.###.###'     /*  indirizzo da sostituire */
call SysFileDelete fwintrfc
call LINEOUT fwintrfc, ipaddr
call LINEOUT (fwintrfc)
call SysFileDelete fwrls
string = ''
do while lines(frwfile) > 0
   string = changestr(rep,linein(frwfile),ipaddr)
   call LINEOUT fwrls, string
call LINEOUT (fwrls)
end
/* Update Firewall  */
'cfgfilt -u'
exit
nonetwork:
say 'Errore ricerca interfaccia!'
call BEEP 392,500

 fa a funzionare... ci ho messo 3 giorni per indovinare che <cfgfilt 
puoi togliere il file temporaneo se usi la coda QUEUE. La cancelli 
all'inizio
/* clear queue */
'call RXQUEUE.EXE /CLEAR'
poi ci spari dentro l'uscita del programma 
/* parse arguments */
'ifconfig  | RXQUEUE.EXE'
quindi vai  a leggerti le righe come fosse un file di testo con
firstline = linein( "QUEUE:")




Grazie! ci provero'.
Ciao
Gabriele