• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

xmessage [GELÖST]

OliverL

Newbie
Hallo Freunde,

ich möchte mit einem Script in einer Datei (/var/spool/mail/Anwender1) nach einem bestimmten Wort (found) in regelmäßigen Zeitabständen suchen. Aus diesem Grund habe ich ein Script erstellt (siehe unten) das diese Aufgabe bei einem manuellen Start sehr gut macht. Wenn das bestimmte Wort (found) gefunden wurde, bekomme ich mit xmessage ein Popup mit der Meldung (A VIRUS was found). Wenn ich dieses Script als Cronjob starte, bekomme ich keine Meldung.
Hat jemand eine Ahnung warum?


if grep -q -i "found" /var/spool/mail/Anwender1; then
/usr/bin/xmessage -center "A VIRUS was found"
fi


Vielen Dank und beste Grüße,

Oliver
 
A

Anonymous

Gast
OliverL schrieb:
Wenn ich dieses Script als Cronjob starte, bekomme ich keine Meldung.
Siehe auch http://www.linux-club.de/viewtopic.php?f=21&t=103707
Woher soll bitte dein Cronjob wissen ob da ein X-Server läuft oder mehrere, und welcher User da jetzt die Rechte darauf hat?
Die Variable dazu ist DISPLAY
die müsste wohl in den meisten Fällen auf ":0" also eigener Rechner 1. X-server gesetzt werden.
bei bash geht das in einer Zeile, (andere Shells benötigen eventuell einen extrabefehl für den Export)
Code:
export DISPLAY=":0"
Desweiteren ist der X-Server für den angemeldeten User normalerweise exclusiv, (Suse macht da bei root-Konsolbefehlen ein paar Tricks das das machmal auch geht, und oftmals nicht auffällt das der Server eigentlich auch für root gesperrt ist) Ein anderer User kann nichts auf diesem X-Server anzeigen, außer der User dem der X-Server gehört, erlaubt es ihm. Der Befehl zum Steuern der Zugriffsrechte auf den X-Server ist xhost
Du müsstest also als der User dem die Grafische Oberfläche gehört erst den Zugriff freischalten, Das geht zB ganz global für alles und jeden
Code:
xhost +
Jetzt könnte auch Cron da was anzeigen.
Code:
xhost -
schaltet das dann auch wieder ab

Aber interaktive Kommandos innerhalb von Cron At oder anderen Batch-Jobs ist äußerst ungeschickt und sollte man lieber sein lassen.

robi
 
OP
O

OliverL

Newbie
Hallo Robi,

danke für die gute Beschreibung.
Leider klappt es aber noch nicht, ich habe das Script wie folgt geändert:

xhost +
if grep -q -i "found" /var/spool/mail/Anwender1; then
export DISPLAY=":0"
/usr/bin/xmessage -center "A VIRUS was found"
fi
xhost -

Wahrscheinlich habe ich als Newbie noch etwas falsche gemacht.

Wie hast Du es eigentlich gemein, dass interaktive Kommandos innerhalb von Cron At oder anderen Batch-Jobs ist äußerst ungeschickt seien. Ich bin für alles offen, aber mein aktuelles Problem ist, ich habe einen Virenscanner der eigentlich einen guten Job macht, aber die Meldungen nur via eMail oder Lag ausgiebt. Ich dachte ein Popup wäre eine feine Lösung.
Wenn es bessere Lösungen gibt, bin ich für alles offen ;-)

Vielen Dank und beste Grüße,

Oliver
 
A

Anonymous

Gast
das xhost gehört nicht ins cron-job-script, sondern dieses Kommando musst du als User absetzten, um damit die Bereitschaft zu signalisieren, das du andern erlaubst, das sie etwas auf deinem Bildschirm anzeigen dürfen.

Also diese beiden Zeilen aus dem Cronjobscript entfernen.
Als normaler User auf der KDE oder Gnome einfach ein XTerm aufmachen und dort "xhost +" als Befehl absetzen und dann kannst du warten, das da dein Cron ein Fenster öffnet. Wenn du das für immer so haben willst, musst du das irgendwo in der Anmelderoutine integrieren, damit dein Rechner das beim Start der grafischen Oberfläche jedesmal automatisch übernimmt. Dann sollte man aber nicht global (nur mit +) freigeben, sondern geziehlt.

Automatisch ablaufende Scripte die auf eine Interaktion mit dem User warten, bei dir zB warten sie darauf das du das Fenster bestätigst oder schließt, sind ungeschickt.

Was passiert wenn niemand angemeldet, ist oder nicht vor dem Rechner sitzt oder was auch immer. Der Job bleibt an dieser Stelle hängen. Je nach Häufigkeit des automatischen Jobs. Hängen dann eventuell auch noch mehrere und blockieren das halbe System. Im dümmsten Fall läßt du den Rechner im Urlaub weiterlaufen um keine Mails zu verpassen und die Kiste schmiert wegen solchem Mist ab. Dann kommst du wieder, machst die Mails auf und bevor noch dein Cron wieder gelaufen ist hast du schön alle Mails mit dem Virus schon geöffnet und die Javascripte alle schon gestartet. Was ist jetzt da der Sinn daran.

Mich würde so was auch nerven, Wenn ich zB ernsthaft am Rechner arbeite und Probleme lösen muss, dann soll er mir das zeigen was ich von dem Rechner will, und nicht aus irgend einem Grund (am liebsten mag ich die Aufforderungen der Softwarehersteller nach neuen Softwareupdates zu schauen) irgendwelche Fenster aufmachen die ich jetzt gar nicht gebrauchen kann, nur um mir zu sagen, "neue Updates verfügbar" "Achtung Virus" "Neue Mail" "Oma jetzt online" " neues Gerät gefunden" (klar habe ich ja eben angeschlossen, also was soll der Sch...) oder was weiß ich. Wenn sich solch ein Fenster dann auch noch in den Vordergrund schiebt und ich es bestätigen muss, dann werd ich Fuchs-Teufels-Wild und deinstalliert dann mitunter solche Nerver komplett.
Wenn ich ein Fester aktiv habe, (zb ein xterm) in dem ich arbeite, dann kann es passieren das ich dort auch mal blind Eingaben mache ohne immer auf den Bildschirm zu schauen ob auch jeder Buchstabe und Tastenanschlag ankommt, (schaue dann eben auf die Tastatur damit ich die Sonderzeichen richtig treffe) wenn sich dann plötzlich mittendrin ein anderes Fester ungefragt in den Vordergrund schiebt und sich zum aktiven erklärt, dann habe ich da eventuell dann schon ganze Befehlszeilen in einem komplett falschen Fenster eingegeben und wenn ich dann auf Enter drücke, um zu schauen was mein Befehl jetzt macht, da sehe ich grade noch das ich im falschem Fenster genau den falschen Button gestartet habe. Aber das muss nicht jeden so gehen wie mir, ich bin ja auch nicht ohne Grund bekennender Windowshasser.

Was nützt mir aber ein Automat im Hintergrund wenn ich seine Arbeit jedes mal per Hand selbst bestätigen soll. Wenn eine Mail mit Virus gefunden wurde, dann soll er sie automatisch löschen, oder in den Spamordner verschieben, oder eine Dicke Warnung als Überschrift in die Mail schreiben, damit, wenn ich dann meine oder diese Mails lesen will, sofort gewarnt bin. Wenn der Rechner einen Verstoß gegen irgend eine Regel gefunden hat, dann soll er mich in bestimmten Situationen informieren, und nicht mitten in der Arbeit. Zb beim Anmelden, beim runterfahren, wenn ich eine Konsole öffene, wenn ich ein bestimmtes Programm starte oder dergleichen mehr. Die Berechtigung das das System ungefragt eine Warung oder dergleichen auf den Bildschirm schreibt, ist für mich nur für wenige wirklich wichtige und kritische Events, "Platte voll" "Rechner reboote gleich" "Temperatur überkritisch" usw noch akzeptabel.

Letztlich muss aber jeder selbst wissen was er will und gebrauchen kann.


robi
 
Oben