Newsgroup: it.comp.os.linux.sys
Titolo: Problema AWK (ricomincio da zero).

Nego innanzitutto che sia mai esistito un thread simile a questo :-)
Tuttavia, ho commesso di recente l'errore di non esporta la variabile, 
anche da linea di comando, nonostante in quel caso fosse strettamente 
necessario. Non mi soffermo oltre: da oggi in poi ricordiamo che un 
export in pi� non ha mai fatto male a nessuno.
FINE.
Date due variabili:
port_range=1-9900
allowed_ports="22|25|80|443|465|636|4444|8112"
*---->>> > >  > export allowed_ports port_range  <  < < <<<----*
prossimi alla soluzione avevamo stabilito che la direttiva da usare era:
nmap -n -T Aggressive -p $port_range 192.168.0.2|awk -F/ -v
buoneporte="$allowed_ports" '/open/ && $0 !~ buoneporte {print $1}'
TUTTAVIA: cos� facendo, oltre a fare match su 22, mi fa match anche 
sulla 2222.
Usando un direttivamente differente (che ometto per evitare confusione) 
avevamo stabilito che per risolvere questo problema bisognava usare:
allowed_ports="^22$|^25$|^80$|^443$|^465$|^636$|^4444$|^8112$"
TUTTAVIA, con la soluzione adottata adesso, l'uso delle ancorette non 
sortisce pi� l'effetto che sortiva (ergo: *non* funziona. Inutile 
girarci intorno... o chiss� quale sortilegio bisogna usare).
===========
Problema nel problema (di secondaria importanza):
per aggiungere le ancorette faccio cos�:
echo \^"$allowed_ports"\$ | awk '{gsub(/\|/,"$|^");print}'
Sar� possibile inserire questa direttiva all'interno dell'altra?
Per�, non � il caso di perdersi su questa cosa per il momento. Anche 
perch� non � detto che questa sia la variabile da usare.
-- 
echo onailimissaM | awk 'BEGIN { FS = "" }
{ for (i = NF; i >= 1; i-- )
   printf $i }'; echo


Facebook: Massimo Bacilieri

 Se qualcuno trova il modo di togliere il doppio array...
Scusa se intervengo ma la soluzione è già stata data nell'altro
anche se funziona solo con gawk: basta mettere delle ancore
nell'espressione regolare.

 	/open/ {if ($1 in allowed_p) print allowed_p[$1];}'
Cronos, questo non so bene cosa faccia: stampa le "allowed", ma ne 
toglie qualcuna.... non so che diavolo combina.
Mi serve il diff tra quello che viene fuori da nmap e allowed (ovvero 
faccio il match inverso).
Aggiungo una nota: quei "pipe" nella variabile iniziale, li avevo messi 
io per comodità, per darli in pasto a "grep -E". Se cambia metodo, quei 
"pipe" si possono togliere.
Chiaramente ciò che dice Malin non è vero (fra l'altro gawk è impostato 
in /etc/alternatives/ come predefinito).
p.s.: ripeto, per me la questione ha scopo puramente didattico. Se a voi 
fa pure piacere continuiamo tranquillamente.


Crononauta wrote:

/ mi pareva che questo funzionasse, \
\ prima che finisse tutto in vacca. /
  ---------------------------
         \   ^__^
          \  (oo)\_______
             (__)\       )\/\
                 ||----w |
                 ||     ||
port_range=1-9900
allowed_ports="^22/|^25/|^80/|^443/|^465/|^636/|^4444/|^8112/"


 allowed_ports="^22/|^25/|^80/|^443/|^465/|^636/|^4444/|^8112/"
Questo è un modo di usare le ancore che funziona, anche senza gawk.
Però gawk ha un modo più pulito di ancorare una parola poiché possiede
una decina di ancore diverse. Rimando al manuale di gawk.

Max_Adamo ha scritto:
[...cut...]
Ma toglimi una curiosita', solo per sapere quanto ti manca ancora prima di 
toglierti il gesso ?
Rizio
-- 
Si dice che essere liberi significa non avere nulla da perdere... ma la verit� � 
che non avere nulla da perdere significa essere pronti a rischiare tutto ci� che 
si possiede.

 buoneporte="$allowed_ports" '/open/&&  $0 !~ buoneporte {print $1}'
'azzalora: funziona si. Certo.
che idiota che sono ... quel cacchio di dollaro non c'entrava per 
niente: non era fine stringa perché dopo c'era "/tcp".


 di toglierti il gesso ?
Tieni duro ormai: venerd�.



... ma toglimi tu una curiosit�: nella vita reale siete maleducati alla 
stessa maniera?


 "pipe" si possono togliere.
Puoi usare il separatore che vuoi, basta che cambi lo split. Se usi lo
spazio, allora diventa n=split(buoneporte,a," ");


 nell'espressione regolare.
Ciù solùscion is mej che uan, no? ;-)


 stessa maniera?
Dai, stavo scherzando.... giuro. E' che e' entrato un mio collega in ufficio 
mentre la stavo scrivendo e sovra pensiero l'ho inviata senza mettere un paio di 
virgole -che ci stanno sempre bene- e un facciotto per alleggerire la frase
Non era mia intenzione offenderti o prenderti in giro, era una frase scherzosa 
per dire che da quando sei a casa con quella gamba il mio impegno mattutino nel 
lurkare questo ng e' aumentato esponenzialmente, tutto l� :)
Peace&Love
Rizio
P.S. Comunque si, di solito sono parecchio maleducato con chi se lo merita.... 
cerco di essere sempre all'altezza dell'interlocutore.


 Peace&Love
non ti preoccupare: oggi � "quasi" --> (~) <-- una bella giornata per me.
- ho fatto 3 passi senza stampella (wooww!)
- finalmente qualche anima pia ha fatto il driver per Linux per la mia 
DVB Pinnacle. Ho dovuto compilare un po' di roba, ma da adesso oltre a 
scrivere sui NG, e a scrivere cazzate su facebook, e leggere qualcosa 
qua e l�, potr� guardare anche un po' di TV :-)
Ho dovuto aspettare un anno per il driver....
