Hi,
ich bin auf der Suche nach einem Applet welches mir im Browser ein logfile tailt (tail -f).
Gibts da was?
Grüße
big
Hi,
ich bin auf der Suche nach einem Applet welches mir im Browser ein logfile tailt (tail -f).
Gibts da was?
Grüße
big
Logfiles tailen braucht meist root-Rechte. Das dürfte noch so schwierig werden.
Ausserdem - wozu soll das genau gut sein? Da kannst du ja genau so gut selber tail eingeben...
MfG Peschmä
The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)
Du musst ja irgendwie an die Daten am Server kommen, das Applet läuft ja auf deinem client.
d.h. müsstest du deine logs über http freigeben (nein!) und nochdazu immer alles runterladen, da man mit http nicht sagen kann, man möchte bitte nur die letzten 100 bytes ...
ich würd versuchen das mit nem php skript zu realisieren.
mit nem pagerefresh von 1 od 2 sekunden. und dann einfach den letzten stand an das skript übergeben oder so.
dann brauch man die files nicht öffentlich zugänglich zu machen
moin moin
mit nem applet kann ich nicht dienen. aber mit nem kleinen webserver, der das von dir verlangte leistet .
der user der den webserver startet, sollte in der /etc/sudoers stehen, da ich zum ausgeben des logfiles sudo benutze.
da ich nicht weiß, wie ich die ausgabe von tail *umbiegen* kann, lese ich das logfile mittels cat in ne temp. datei und füge dann nur die letzten 10 zeilen in den html output ein. bei großen logfiles ist das natürlich murks .
aufruf: scriptname /pfad/zum/logfile
Code:#! /usr/bin/env python import BaseHTTPServer import os import sys PORT = 9000 TEMPDAT = '/home/rip/log.dat' def tail_html(logfile): os.popen('sudo cat '+logfile+' > ' + TEMPDAT) f = file('/home/rip/log.dat', 'r') tail = f.readlines() html_parts = [ '<html><head><title>Logfile %s </title></head>' % logfile, '<body>', '<h1>Logfile %s</h1>' % logfile, '<br><br>'] for each in tail[len(tail)-10:]: html_parts.append(each+'<br>') html_parts.append('</table></body>') return "\n".join(html_parts) class Webserver(BaseHTTPServer.BaseHTTPRequestHandler): logfile = '' def send_content(self, content, content_type="text/plain", status=200): self.send_response(status) self.send_header("Content-type", content_type) self.send_header("Content-length", str(len(content))) self.end_headers() self.wfile.write(content) def do_GET(self): try: output = tail_html(self.logfile) except : self.send_content('Fehler', status=400) else: self.send_content(output, content_type="text/html") def main(file): server = BaseHTTPServer.HTTPServer(('', PORT), Webserver) Webserver.logfile = file server.serve_forever() if __name__ == '__main__': try: if len(sys.argv) != 2: print 'usage: \n\n'+ str(sys.argv[0].split('/').pop()) + ' logfile' else: main(sys.argv[1]) except KeyboardInterrupt: print "\nBeenden ..."
edit: hm, wenn ich mir die frage nochmal so durchlese und mir das wort *applet* so durch den kopf gehen lasse, bin ich wohl wieder mal haarscharf an der aufgabenstellung vorbei geschliddert . naja egal
Gruß HL
Geändert von HangLoose (27-11-2004 um 15:47 Uhr)
Aber das ganze mit nem applet zu lösen ist auch kacke, da das applet beim user läuft.Zitat von HangLoose
Moin moinZitat von HangLoose
Wieso weist du das nicht? Du machst es doch schon mit. Ändere das Ganze ab aufCode:os.popen('sudo cat '+logfile+' > ' + TEMPDAT)und schon hats du (fast) dein Ergebnis. Das Problem: tail -f kehrt nicht zu deiner Pythonausgabe zurück, weil es ja endlos läuft. Also müsste das ganze als Hintergrundprozess gestartet werden.Code:os.popen('sudo tail -f '+logfile+')
Hans
333 Mhz, 466 MHz, neee, ich hab was neues zuhause.....
Noch ein Ansatz: Was spricht denn gegen logger? Messages mit tail -f aufnehmen und an logger weitergeben. Und logger kann das irgendwohin schieben, auf eine Datei, oder eben auch auf ein Socket.
HansCode:logger [-isd ] [-f file ] [-p pri ] [-t tag ] [-u socket ] [message ... ]
333 Mhz, 466 MHz, neee, ich hab was neues zuhause.....
Hallo,
ich danke euch für eure Ansätze!
Mal schaun was ich verwerten kann...
Grüße
big
Lesezeichen