2009-10-29 12 views
7

Per motivi di sicurezza (sono uno sviluppatore) non ho accesso alla riga di comando ai nostri server di produzione in cui vengono scritti i file di registro. I può, tuttavia accedere a tali file di registro tramite HTTP. Esiste un'utilità nel modo di "tail -f" che può "seguire" un file di testo normale usando solo HTTP?seguito da un file di registro su http

risposta

6

È possibile eseguire questa operazione se il server HTTP accetta richieste di restituzione di parti di una risorsa. Ad esempio, se una richiesta HTTP contiene l'intestazione:

Gamma: byte = -500

la risposta conterrà gli ultimi 500 byte della risorsa. Puoi recuperarlo e poi analizzarlo in linee, ecc. Non conosco nessun client già pronto che lo farà per te - scriverò una sceneggiatura per fare il lavoro.

È possibile utilizzare Hurl per sperimentare le intestazioni (dalle risorse disponibili pubblicamente).

+0

+1 Questo è molto utile. Avevo pensato di usare un metodo HEAD per ottenere eventualmente la dimensione della risorsa per vedere se qualcosa di nuovo fosse stato aggiunto. Accoppiato con un GET su un intervallo specifico potrei essere a qualcosa. Grazie! – kurosch

0

È possibile utilizzare PsExec per eseguire il comando sul computer remoto. Il comando di coda per Windows è disponibile al http://tailforwin32.sourceforge.net/

Se deve essere HTTP, è possibile scrivere un servizio Web leggero per ottenerlo facilmente. ad esempio, leggere il testo all'interno di un file specificato dalla riga 0 alla riga 200.

+0

Non sarei in grado di eseguire nulla in remoto, questo renderebbe le persone della sicurezza apoplettiche. Speravo che qualcosa esistesse già prima di provare a far girare il mio. – kurosch

1

È possibile utilizzare la piccola utility java per leggere il file di registro su Http utilizzando Apche HTTP Library.

HttpClient client = HttpClientBuilder.create().build(); 
    HttpGet request = new HttpGet(uri); 
    HttpResponse response = client.execute(request); 
    BufferedReader rd = new BufferedReader(new InputStreamReader(
      response.getEntity().getContent())); 
    String s = ""; 
    while ((s = rd.readLine()) != null) { 
     //Process the line 
    } 
Problemi correlati