Newsgroup: it.comp.os.linux.iniziare
Titolo: export -- bash --- boh ??

buonasera al gruppo.
uno script presente su un server (lo vedo per la prima volta, sia server 
che script) genera questo output:
[2010-02-22 21:23] apre: running command: ip=192.168.1.131;export ip;/
root/mostraip
[2010-02-22 21:23] apre: command returned non-zero status code (126)
in pratica, la chiamata in arrivo viene riconsciuta tramite indirizzo ip, 
in questo caso 192.168.1.131. dovrei fare in modo che un altro script 
[che non discende direttamente dallo script che riconosce ed esporta la 
variabile ip ] utilizzi tale valore. e' gia' due ore che provo senza 
risultati. sono ancora troppo inesperta. mi dareste un indizio ?
GRAZIE


Facebook: Massimo Bacilieri

 risultati...
ecco il file knockd.conf:
[options]
        logfile = /var/log/knockd.log
[apre]
        sequence    = 1,2,3,4
        seq_timeout = 5
        command     = ip=%IP%;export ip;/root/mostraip
        tcpflags    = syn
[chiude]
        sequence    = 4,3,2,1
        seq_timeout = 5
        command     = /usr/sbin/iptables -D INPUT -s %IP%  -j ACCEPT
        tcpflags    = syn
in pratica, l'host riceve la sequenza di knock, e vengono eseguite le 
direttive qui presenti. il pacchetto e' knock-0.5 , trovato chissa' dove, 
era gia' qui prima del mio arrvio.
nom mi spiego perche' non funzioni l'esportazine di variabile in altro 
script.
grazie. 

 script.
:-O
Qui hai a che fare con "knockd" che è un servizio nato fondamentalmente
per tenere la porta 22 (sshd) chiusa, e ad aprirla solo dopo una
"bussata" con un pacchetto di syn su certe porte ben definite.
Ora, è evidente che come è sopra non funzionerà mai perché nella
sequenza di apertura occorrerebbe inserire quella direttiva di iptables
che nella sequenza di chiusura viene poi cancellata (iptables -D),
quindi in sostanza stai usando knockd in modo improprio.
Detto questo, resta da vedere cosa diavolo c'è in quello script
/root/mostraip, e soprattutto se è *accessibile*. Sotto che utente gira
knockd? Questo utente ha accesso a /root?
Non era più semplice metterci come comando:
echo ip corrente %IP%
(eventualmente: echo ip corrente %IP% >> /var/log/iplog.txt )


 (eventualmente: echo ip corrente %IP% >> /var/log/iplog.txt )
non mi e' venuto in mente :-(
ora provo. 
grazie ancora

  command     = ip=%IP%;export ip;/root/mostraip
prova a modificare quella riga in
command = ip=%IP% /root/mostraip

  command     = ip=%IP%;export ip;/root/mostraip
Il problema che vedo è che qui non sei in bash, semplicemente. Sei
dentro a un file di configurazione che viene letto ed utilizzato da un
programma (knockd) nel modo in cui questo programma è fatto.
È quindi possibile che l'export non funzioni, anzi probabile (se fa il
pipe di ogni singolo comando in una shell "figlia", alla fine ogni shell
è una "catena" indipendente dalle altre, e ovviamente l'export non vale).
Puoi facilmente aggirarlo provando così:
command = /root/mostraip %IP%
e poi andando a leggere dentro a mostraip il valore di $1:
#!/bin/bash
# mostriamo l'ip da cui arriva il knock
echo $1 >> log.ip
In questo modo l'IP viene passato come *parametro* del programma, e
aggiri tutti i problemi dell'esportazione della variabile.


 aggiri tutti i problemi dell'esportazione della variabile.
santa polenta, quanto devo studiare ancora.
ora provo.