Hallihallo!
Ich puzzle mir gerade ein kleines Shell-Skript zusammen. Und zwar möchte ich cups idiotensicher machen, weil es in KDE (SC 4.3.4) immer noch kein vernünftiges Frontend gibt. Also starte ich einen browser auf localhost:631/jobs. So weit so gut, aber jetzt soll der Browser die Jobs-Seite regelmäßig neu laden. Bisher habe ich ihn nur soweit gebracht, *stupide* alle X Sekunden neu zu laden. Das ist aber blöd, wenn mein Benutzer gerade einen Auftrag gelöscht hat (denn dann kommt diese "Ich muss das Formular neu absetzen, um neu zu laden"-Rückfrage).
Ergo suche ich eine Möglichkeit, die Webseite *nur dann* neu zuladen, wenn es localhost:631/jobs ist. Wie kann ich das denn angehen? Bisher verwende ich kazehakase (schnell, und bietet actions zum neu laden), aber da konnte ich bisher nicht rausfinden, wie er mir die momentan angezeigte Seite verrät.
Oder ich mache es ganz anders, mit Linux-Bordmitteln a la netstat (blindlings eingeworfen, weil ich von Netzwerk keine Ahnung hab). Wo wäre denn da der Ansatzpunkt?
Schöne Grüße,
Severin
welche Seite zeigt mein Browser gerade an?
Re: welche Seite zeigt mein Browser gerade an?
Wenn Browser der Unix Philosophie entsprechen würden (wie uzbl), dann wäre das kein Problem. Du kannst also z.B. uzbl verwenden, denn dort bekommst du die gewünschten Informationen und Steuerknüppel in die Hand.
Sonst musst du dich halt mit der Unzulänglichkeit monolithischer Browser rumschlagen. Das heißt vermutlich, dass du einen anderen Ansatz wählen solltest.
Definiere doch bitte genau was du willst.
Soll die Jobs-Seite angezeigt werden? Immer, oder nur in bestimmten Intervallen? Willst du nur die Informationen aus der Seite? Soll es ein grafischer Browser sein? Soll die Seite bedienbar sein oder reichen ihre Informationen? Was meinst du mit ``idiotensicher''? usw.
Sonst musst du dich halt mit der Unzulänglichkeit monolithischer Browser rumschlagen. Das heißt vermutlich, dass du einen anderen Ansatz wählen solltest.
Definiere doch bitte genau was du willst.
Soll die Jobs-Seite angezeigt werden? Immer, oder nur in bestimmten Intervallen? Willst du nur die Informationen aus der Seite? Soll es ein grafischer Browser sein? Soll die Seite bedienbar sein oder reichen ihre Informationen? Was meinst du mit ``idiotensicher''? usw.
Use ed once in a while!
Re: welche Seite zeigt mein Browser gerade an?
Ich könnte natürlich einfach irgendeinen Browser nehmen, aber daran stört mich hauptsächlich, dass man immer F5 drücken muss, um die Job-Liste zu aktualisieren. Deshalb möchte ich die regelmäßig neu laden. Ich hatte schon ein Skript, das *immer* alle X Sekunden kazehakase neu laden lässt, aber das ist halt nicht so praktisch, wenn der Benutzer gerade dabei ist, einen Drucker einzurichten. Deshalb will ich den automatischen reload nur auf localhost:631/jobs haben, nicht auf anderen Seiten.
Interaktiv muss es sein, weil der Browser *die* Anlaufstelle für alle Druck-Fragen sein soll. Also im Prinzip ist mein Problem: Ich finde sperrig, dass man cups nur über den Browser bedienen kann; deshalb will ich eben dieses Faktum vor dem Benutzer verstecken.
Interaktiv muss es sein, weil der Browser *die* Anlaufstelle für alle Druck-Fragen sein soll. Also im Prinzip ist mein Problem: Ich finde sperrig, dass man cups nur über den Browser bedienen kann; deshalb will ich eben dieses Faktum vor dem Benutzer verstecken.
Re: welche Seite zeigt mein Browser gerade an?
Nicht irgendeinen Browser nehmen, sondern einen der dir das bietet was du willst. Uzbl bietet das. Dort kannst du sowas machen:severin hat geschrieben:Ich könnte natürlich einfach irgendeinen Browser nehmen, aber daran stört mich hauptsächlich, dass man immer F5 drücken muss, um die Job-Liste zu aktualisieren. Deshalb möchte ich die regelmäßig neu laden. Ich hatte schon ein Skript, das *immer* alle X Sekunden kazehakase neu laden lässt, aber das ist halt nicht so praktisch, wenn der Benutzer gerade dabei ist, einen Drucker einzurichten. Deshalb will ich den automatischen reload nur auf localhost:631/jobs haben, nicht auf anderen Seiten.
Code: Alles auswählen
while sleep 1 ; do
url=# query current url from uzbl
if [ "$url" = 'http://localhost:631/jobs' ] ; then
# tell uzbl to reload
fi
done
Wenn ich es richtig verstanden habe, willst du das Webinterface wie es ist, nur soll es auf der jobs-Seite automatisch reloaden. (Abgesehen davon, dass du lieber ein ganz anderes Interface hättest, das es aber wohl nicht gibt.)Interaktiv muss es sein, weil der Browser *die* Anlaufstelle für alle Druck-Fragen sein soll. Also im Prinzip ist mein Problem: Ich finde sperrig, dass man cups nur über den Browser bedienen kann; deshalb will ich eben dieses Faktum vor dem Benutzer verstecken.
Wenn die Situation so ist, dann wäre es wohl sinnvoller auf der jobs-Seite automatisch ein JavaScript einfügen zu lassen, das den Reload periodisch durchführt. Für den Firefox gibt es bestimmt Addons die es ermöglichen auf bestimmten Seiten an bestimmten Seiten Code einfügen zu lassen.
(Letztendlich rate ich aber noch immer herum was genau du willst. Du beschreibst zwar allerlei, doch klar werden die Anforderungen dadurch leider nicht. Das ist bestimmt auch der Hauptgrund weshalb es in diesem Thread bisher so ruhig ist.)
Use ed once in a while!
Re: welche Seite zeigt mein Browser gerade an?
Exakt! Hast es doch verstanden . uzbl sieht interessant aus, damit lässt sich sicher was machen. Und auf die Idee eines Iceweasel-addons bin ich noch gar nicht gekommen. Ich kenne zwar Reload Every, aber das ist afaik URL-agnostisch. Ist auch nicht so wichtig, wahrscheinlich wird es sowieso uzbl, weil der sicher schneller startet. Und für cups sollte die rendering engine allemal reichen.Meillo hat geschrieben:Wenn ich es richtig verstanden habe, willst du das Webinterface wie es ist, nur soll es auf der jobs-Seite automatisch reloaden. (Abgesehen davon, dass du lieber ein ganz anderes Interface hättest, das es aber wohl nicht gibt.)
Besten Dank!
Severin
Re: welche Seite zeigt mein Browser gerade an?
Unter Linux ist doch fast alles eine Datei, wie wäre es mit:
Code: Alles auswählen
~/.mozilla/firefox/<profilname>/sessionstore.js