Ho un server con un applicazione Web che, a domanda, risponde con un codice numerico. La mia request deve essere fatta passando un parametro.
La mia esigenza era quella di interrogare il server a partire da un file di input variabile più o meno lungo dove ogni riga contiene un parametro e rielaborare la risposta andando a scrivere un nuovo file di output.
In pratica:
cat $FILE_INPUT | awk '{system("GET \"http://localhost/MioServer?param=\""$1); print ";"$1;}' > $FILE_OUTPUT
Vediamo di spiegare:
- Il mio FILE_INPUT contiene tanti parametri, uno per ogni riga. Eseguire il "cat" lo stampa a video ma la pipe invece lo passa come input al buon awk.
- awk di base si usa con la sintassi awk '{istruzioni}', io in particolare uso il comando "system" che mi permette di lanciare un comando dalla mia shall, nel caso specifico una chiamata con il comando GET al mio server web.
- Il parametro usato da awk è $1 perchè il mio file ha una sola colonna e quindi ogni riga del file che arriva ha un solo parametro.
- La mia GET ottiene in risposta un codice numerico che viene stampato a video.
- L'istruzione "print" che segue la GET, mi permette di concatenare al mio "response_code" il carattere ";" e a seguire lo stesso parametro iniziale (sto quindi creando un file csv usando il carattere ";")
- Infine ridirigo il tutto su FILE_OUTPUT ottendo il mio file csv bello e pronto.
Prestate attenzione agli apici, i doppi apici e i carattei di escape:
- GET vuole i doppi apici
- System vuole i doppi apici
- AWK vuole gli apici singoli
Buon divertimento
Nessun commento:
Posta un commento