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

[solved] xterm --> info massage wie geht das ????

patric

Newbie
hallo,

problem:
ich möchte ein fenster öffnen lassen in dem eine info steht.
z.b. " der rechner wird neu gestartet"

ich kann mit xterm eine konsole öffen aber wie bekomme ich den text dort hinein

und kann man dieses fenster dann selbstständig schließen?

gruß
PL

sorry, beitrag ist in der falschen rubrik gelandete... kann ich das verschieben??
 

abgdf

Guru
echo oder besser:

Code:
Xdialog --title "Title" --screen-center --msgbox "Message." 200x100

Hab noch ein flexibleres Python-Skript dafür. Siehe dazu auf meiner Seite

http://www.angelfire.com/linux/tux25/python.html#15

Gruß
 
Wenn der Rechner runterfährt, macht es eigentlich kaum Sinn einen xterm aufzuzeigen, weil der X-Server eins der ersten Dinge ist, die beendet werden. :p
 

abgdf

Guru
Hmm, stimmt, man könnte dann vielleicht ein einfaches Echo in das Shutdown-Skript schreiben.
Ich hab bei mir z.B. was ("fortune") FÜR DEN SYSTEMSTART in /etc/rc.d/rc (auch /etc/issue) reingeschrieben, genaugenommen am Ende von /etc/rc.d/rc:
Code:
# For the first logon on a virtual console.
#
test -e /etc/issue-SuSE-first-run && {
    cat /etc/issue-SuSE-first-run > $REDIRECT
    rm -f /etc/issue-SuSE-first-run 2>/dev/null
}
if test "$RUNLEVEL" = "3"; then

echo > /etc/issue
echo "Welcome to SUSE LINUX 10.0 (i586) - Kernel \r (\l)." >> /etc/issue
echo >> /etc/issue
fortune konfuzius >> /etc/issue
echo >> /etc/issue
date +%d.%m.%Y," "%R" Uhr". >> /etc/issue
echo >> /etc/issue
echo >> /etc/issue
clear
fi
exit 0
(Würd ich heute wohl noch etwas anders schreiben).
Ich boote auch nicht mit kdm, sondern in "init 3".
Für einen Anfänger vielleicht etwas zu schwierig.

Die Antwort oben war halt allgemein gemeint.

Viele Grüße
 
OP
P

patric

Newbie
moin,

danke für die antworten.
ich werde das gleich mal testen, obwohl ich da noch nicht ganz durchblicke.
ich hatte mir erstmal mit einer sehr einfachen möglichkeit geholfen...

Code:
xterm -title "ADMIN-INFO -e /.../info.sh

und im shell script steht eine denkbar einfache echo ausgabe wie z.b

Code:
.....
echo "Der Recher wird in x min heruntergefahren"
echo "weiter mit Enter"
read $1
die info ist nur dafür gedacht, dass die rechner abends abgeschaltet werden [sollten].
man für eine simulationen die über nacht dauert, diesen rechner aus der schleife nimmt.
das aber ist dann erst der nächste schritt.

ich werde das obige beispiel mal versuchen in die tat umzusetzen....

was mir aber noch aufgefallen war, dass der eintrag in der crontab


Code:
*/15 * * * * -u testuser xterm -t "info" -e /.../info.sh
zu keiner zeit angelaufen ist. auch nicht wenn ich am ende des strings ein umleitung auf /dev/null mache.
das ist mir auch noch etwas fremd......

um weitere tips würde ich mich sehr freuen.

ps: es muss ja keine masterarbeit sein. wichtig is der effekt.

edit:

vielleicht habe ich vergessen zu erwähnen, dass es sich dabei um ein IRIX system handelt. dort gibt es statt xterm den befehl xwsh.
in dem shutdownscript brauchen keine weiteren informationen zu stehen, weil dann eh keiner mehr da ist der das lesen könnte.
wollte das ganze nur erstmal auf einer testmaschine unter oS10.2 zum laufen bringen.

gruß
PL
 
OP
P

patric

Newbie
hallo,
ich bin dem Problem ein bisschen näher gerückt.
erhlich gesagt hätte ich hier ein bisschen mehr unterstüzung erwartet aber nun ja... man hilft sich selbst.

ein fehler von mir war, dass ich immer direct in die crontab geschrieben habe.
Code:
crontab -e
öffnet den vi und man editiert die crontab des aktuellen benutzers.
nun werden die jobs auch verarbeitet.
eine kontrolle kann man mit dem befehl
Code:
crontab -l
machen.
so weit, so gut, alles perfekt.
leider ist es nun so, dass ich dann eine system mail bekomme in der steht:
error: can't open DISPLAY
DISPLAY is not set.
und ich habe versucht in dem string, den ich an crontab übergebe die variable DISPLAY zu setzen. das klappt leider nicht.

kann mir dabei jemand hilfestellung geben????

wie setze ich die varialbe für das DISPLAY in dem string für crontab ???

gruß
PL
 
OP
P

patric

Newbie
hi,

@ jengelh -> die antwort ist mir ein bisschen zu knapp.

es ist ja auch kein problem eine shell datei auszuführen. genau so wie es kein problem ist mit kghostview ein ps oder pdf dokument zu öffnen.

nur das ist mir ein bisschen zu unprofessionell ein ps zu öffenen um eine info anzeigen zu lassen.
nur mal angenommen, man gibt den befehl reboot in die konsole ein dann erscheint ja auch ein infofenster.
warum kann man nicht in ein shellscript schreiben, dass das nun zu öffnende fenster auf eine neue DISPLAY variable erscheint?

oder was ist mit einem c script? kann ich mit mit c oder java ein fesnster öffnen?????

gruß
PL
 
OP
P

patric

Newbie
problem gelöst !!!
geht nicht gibt es nicht !!!

für alle die ein ähnliches problem haben, hier kommt die lösung:

man erzeugt zwei shell dateien, in der ersten setzt man die DISPLAY variable und öffnet den terminal, in der zweiten steht die info, sie wird mit ENETER wieder geschlossen.
erste datei [open.sh]:
Code:
#! /bin/bash
export DISPLAY=:0.0
xterm -e /.../display.sh
zweite datei [display.sh]:
Code:
#! /bin/bash
echo "der recher wird um xx:xx uhr runtergefahren !!"
echo "weiter mit enter"
read $1
nun folgt der eintrag in der crontab :
Code:
crontab -e
zu jeder vollen stunde eine info das der rechner abgeschaltet wird.
Code:
0 * * * * /.../open.sh
diese lösung bewirkt, das eine info auf den desktop erscheint.
um die rechner abzuschalten, hatte ich ja schon ein script, dass ich nun mit hilfe eines cronjobs ausführen kann.

PS: hilft dir keiner, - hilf dir selbst !!!

trotzdem danke für die anregungen.
 
patric schrieb:
problem gelöst !!!
geht nicht gibt es nicht !!!
Code:
#! /bin/bash
export DISPLAY=:0.0
xterm -e /.../display.sh
Generell geht es aber nicht, weil du erst einen X-Server (und die Authorisation für dessen Display) brauchst, bevor das klappt. Davon auszugehen, dass ein X immer da ist (und auch noch der User angemeldet ist, unter dem auch gerade das Cron-Script läuft) ist eine tückische Annahme. Das vom lokalen X-Server verwendete Display muss noch nichtmal ":0" sein, das kann auch ":1337" oder sonstwas sein.
 
OP
P

patric

Newbie
hmm,
der anfang ist auf jeden fall getan. diese lösung ist wenn man die fragestellung richtig betrachtet, nätürlich nicht allgemein gültig.
in meinem aller ersten thema (auf das mir keiner geantwortet hatte] bezog sich dieses problem auf ein netzwerk mit 20 IRIX clienten und einer workstation.
die rechner sollen jeden tag um 21:00 uhr runtergefahren werden. grund : hitzestau im raum. wenn man an einem clienten arbeitet, ist auf jeden fall ein Xserver da. die studenten haben keine andere wahl als so zu arbeiten. sollte es nun nicht :0.0 sein, könnte man sich die aktuelle variable mit echo $ DISPLAY aufzeigen lassen und in der entsprechenden zeile im script einfügen lassen. [geringer programmieraufwand]
auf diesem system ist das problem jedenfalls gelöst.

nichts für ungut....

EDIT:
fehlermeldungen und alle anderen ausgaben werden von cron als mail an den besitzer des auszuführenden prozesses gesendet. also als root ruhig mal "mail" eingeben und nachlesen wo es hakt (tasten ?, n, f, t, d, q sind in mail wichtig)
als ersatz für die XWSH und XTerm würde ich xmessage
empfehlen. es gehört zum standard-X11-programmsatz und ist extra für desktopmeldungen da (X11-ersatz für /sbin/echo). mit /usr/bin/X11/xmessage -buttons OK:0,Warum:1,Einspruch:2 -default OK \
-timeout 180 -file /pfad/info.txt -display :0.0
könnte man etwa eine datei info.txt für 180 sekunden lang in einem fenster ausgeben, dass drei altertümlich wirkende Knöpfe "OK", "Warum" und "Einspruch" hat, und entsprechende der knopfwahl 0, 1 oder 2 als Return-Wert liefert. da xmessages mit application ressources arbeitet, kann man farben, fonts, maße und widgets auch noch anpassen - die manual page hilft weiter.
die sache mit der display-auswahl ist immer ein wenig kritisch. zum testen kann man mit
xhost +
erst einmal alle zugriffe zulassen. um das sicherer und flexibel zu gestalten müsste dann der XAuth-Mechanismus verstanden werden. In dem abgeschlossen SGI-Netz, für das ohnehin kaum jemand trojaner auftreiben kann, ist "xhost +" aber vielleicht auch eine dauerlösung.

viel glück ....
gruß
PL
 
Oben