Formatierung der Ausgabe beim Boot

Dieses Thema im Forum "Linux OS" wurde erstellt von miketech, 15.01.2006.

  1. #1 miketech, 15.01.2006
    miketech

    miketech Routinier

    Dabei seit:
    03.04.2003
    Beiträge:
    403
    Zustimmungen:
    0
    Hi zusammen,

    ihr kennt das ja, wenn Linux die Init-Skripte läd kommen immer entpsprechende Ausgaben wie:

    Init XY [ ok ]

    usw.

    Wo steht denn die Formatierung, wie das aussieht? Also ob das ok z.B. grün erscheint, oder ob "DONE" dabei steht usw. Kann man das irgendwo verändern? Oder hängt das vom Init-System der jeweiligen Distribution ab? Das ist ja dann wahrscheinlich binär, d.h. so eine einfache Änderung wird nicht möglich sein. Oder weiß jemand, wie man das z.B. unter Debian/Ubuntu/Gentoo ändert?

    Gruß

    Mike
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 pslizer, 15.01.2006
    pslizer

    pslizer Eroberer

    Dabei seit:
    14.05.2005
    Beiträge:
    55
    Zustimmungen:
    0
    Unter /etc/init.d/ sind die INIT-Skripte, die du natürlich editieren kannst, z.B. alles nach Deutsch übersetzen usw.
    Allerdings weiß ich nicht, wie man die Farben verändert.
     
  4. #3 miketech, 15.01.2006
    miketech

    miketech Routinier

    Dabei seit:
    03.04.2003
    Beiträge:
    403
    Zustimmungen:
    0
    Hi,

    yup das ist prinzipiell klar. Aber da steht ja nicht, was ausgegeben wird, wenn es erfolgreich war, oder fehlgeschlagen ist, also der Teil hinter dem Text.

    [ DONE ] [FAILED] [ ok ] [ failed]

    usw.

    Also zumindest finde ich das bei Gentoo nicht in den init-skripten. Denke eher, dass das dann im Programm, was die Init-Skripte ausführt interpretiert wird.

    Gruß

    Mike
     
  5. x0r

    x0r Bitschubser

    Dabei seit:
    20.12.2005
    Beiträge:
    169
    Zustimmungen:
    0
    Ort:
    Berlin
    Das kannst Du mit sog. Escapesequenzen erledigen... Diese funktionieren etwa nach folgendem Muster:

    Code:
    ^[[0;32;40mDein eingefärbter Text in grün, ^[[0m jetzt nach Standardvorgabe
    Also die 'NULL' legt die Formatierung fest (Hell, Dunkel, Fett, Invers sogar blinkend!) der nächste Wert bezeichnet die Vordergrund(also die schrift-)farbe wobei Kombinationen von 0 bis 7 möglich sind. Die letze Ziffer stellt die Hintergrundfarbe dar (wiederum von 0 bis 7).

    Also noch ein Beispiel:

    Code:
    echo "^[[1;31;40mDieser Text ist hellrot, ^[[1;34;40mnun ist er blau und jetzt ^[[0mwieder normal"
    Mitunter kann man auch solche Konstrukte sehen:

    Code:
    echo "\003[1;31;40mDieser Text ist hellrot, \003[1;34;40mnun ist er blau und jetzt \003[0mwieder normal"
    dann wird die Escapesequenz halt als Oktalzahl angegeben (wird aber bei meinem Debian nicht unterstützt, vielleicht weiß jemand warum?!).
    Nun mußt Du halt die entsprechenden Escapesequenzen in den Initscripts verwenden um deren Ausgaben 'einzufärben'.
    Hier ist nochmal ein Beispiel für ein Initscript zum Starten des Sambaservers:

    Code:
    case "$1" in
    	start)
    		echo -n "Starte: Samba Daemonen:"
    
    		echo -n " nmbd"
    		start-stop-daemon --start --quiet --exec /usr/sbin/nmbd -- -D
    
    		if [ "$RUN_MODE" != "inetd" ]; then
    			echo -n " smbd"
    			start-stop-daemon --start --quiet --exec /usr/sbin/smbd -- -D
    		fi
    
    		echo "."
    		;;
    	stop)
    		echo -n "Stoppe: Samba Daemonen "
    
    		start-stop-daemon --stop --quiet --pidfile $NMBDPID
    		# Wait a little and remove stale PID file
    		sleep 1
    		if [ -f $NMBDPID ] && ! ps h `cat $NMBDPID` > /dev/null
    		then
    			# Stale PID file (nmbd was succesfully stopped),
    			# remove it (should be removed by nmbd itself IMHO.)
    			rm -f $NMBDPID
    		fi
    		echo -n "nmbd"
    
    		if [ "$RUN_MODE" != "inetd" ]; then
    			start-stop-daemon --stop --quiet --pidfile $SMBDPID
    			# Wait a little and remove stale PID file
    			sleep 1
    			if [ -f $SMBDPID ] && ! ps h `cat $SMBDPID` > /dev/null
    			then
    				# Stale PID file (nmbd was succesfully stopped),
    				# remove it (should be removed by smbd itself IMHO.)
    				rm -f $SMBDPID
    			fi
    			echo -n " smbd"
    		fi
    
    		echo "."
    
    Mehr zu diesem Thema gibt es unter: http://www.selflinux.org/selflinux/html/bash_farben01.html#d28e173

    MfG
     
  6. #5 miketech, 18.01.2006
    miketech

    miketech Routinier

    Dabei seit:
    03.04.2003
    Beiträge:
    403
    Zustimmungen:
    0
    Hi,

    danke schön. Aber damit mache ich doch nur den Part "Samba Daemon" oder so andersfarbig. Der Part dahinter "DONE", oder [DONE] wird dadurch nicht verändert. Der müsste irgendwo im Programm, was die Init-Scripte ausführt definiert sein, oder?

    Gruß

    Mike
     
  7. x0r

    x0r Bitschubser

    Dabei seit:
    20.12.2005
    Beiträge:
    169
    Zustimmungen:
    0
    Ort:
    Berlin
    ja, es ist ein wenig kompliziert...
    Die einfachste (einzigste die mir einfällt!) Möglichkeit ist die Initscripte nach TXT-ausgaben zu durchforsten. In meinem Sambabeispiel werden ja die Sambadaemonen: smb und nmb gestartet.

    Der Aufruf im Originalscript lautet etwa so:
    Code:
    echo -n "Stopping Samba daemons
    		start-stop-daemon --stop --quiet --pidfile $NMBDPID
    		# Wait a little and remove stale PID file
    		sleep 1
    		if [ -f $NMBDPID ] && ! ps h `cat $NMBDPID` > /dev/null
    		then
    			# Stale PID file (nmbd was succesfully stopped),
    			# remove it (should be removed by nmbd itself IMHO.)
    			rm -f $NMBDPID
    		fi
    		echo -n "nmbd"
    
    		if [ "$RUN_MODE" != "inetd" ]; then
    			start-stop-daemon --stop --quiet --pidfile $SMBDPID
    			# Wait a little and remove stale PID file
    			sleep 1
    			if [ -f $SMBDPID ] && ! ps h `cat $SMBDPID` > /dev/null
    			then
    				# Stale PID file (nmbd was succesfully stopped),
    				# remove it (should be removed by smbd itself IMHO.)
    				rm -f $SMBDPID
    			fi
    			echo -n " smbd"
    		fi
    
    		echo "."
    
    Ich habe also an allen Aufrufen von 'echo' eine entspr. Sequenz vorrangestellt.
    Mitunter fassen einige Initscripte diese Ausgaben zusammen, z. Bsp.: folgender Art:
    Code:
    echo -n Starting $DESC $NAME
    
    Diese Aufrufe werden dann je nachdem ein paar mal wiederholt. Ein Anwendung habe ich im folgenden meinem PCMCIA-Initzscript entnommen:
    Code:
    	echo -n "Starte: PCMCIA Dienste: "
    
    	# Move scheme file if it's at the old location
    	if [ -d /var/lib/pcmcia ] ; then
    	    mv /var/lib/pcmcia/scheme /var/lib/misc/pcmcia-scheme || true
    	    rm -rf /var/lib/pcmcia
    	fi
    
    	SC=/var/lib/misc/pcmcia-scheme
    	RUN=/var/run
    
    	if [ -L $SC -o ! -O $SC ] ; then rm -f $SC ; fi
    	if [ ! -f $SC ] ; then umask 022 ; touch $SC ; fi
    	if [ "$SCHEME" ] ; then umask 022 ; echo $SCHEME > $SC ; fi
    	    
    	if ! grep -q pcmcia /proc/devices ; then
    	    module_is_loaded pcmcia_core || modprobe -q pcmcia_core $CORE_OPTS \
    		|| failed_to_load pcmcia_core
    	    # Treat i82365 specially, as many people with yenta_socket
    	    # incorrectly has PCIC set to i82365 for historical reasons
    	    if [ "$PCIC" = i82365 ]; then
    		if ! bridge_module_loaded ; then
    		    # On 2.6 kernels, we must not load any other bridge
    		    # modules than the right one
    		    if cardbus_bridge_present ; then
    			echo "using yenta_socket instead of $PCIC"
    			load_module yenta_socket || failed_to_load yenta_socket
    		    else
    			load_module $PCIC $PCIC_OPTS >/dev/null 2>&1 ||
    			(load_module yenta_socket >/dev/null 2>&1 &&
    			    echo "using yenta_socket instead of $PCIC") ||
    			load_module $PCIC $PCIC_OPTS || failed_to_load $PCIC
    		    fi
    		fi
    	    else
    		load_module $PCIC $PCIC_OPTS || failed_to_load $PCIC
    	    fi
    	    load_module ds || failed_to_load ds
    	fi
    
    	if [ -s /var/run/cardmgr.pid ] && \
    	    kill -0 `cat /var/run/cardmgr.pid` 2>/dev/null ; then
    	    echo "cardmgr is already running."
    	else
    	    if [ -r $RUN/stab ] ; then
    		cat $RUN/stab | cleanup
    	    fi
    	    /sbin/cardmgr $CARDMGR_OPTS
    	fi
    
    	echo "done."
    	touch /var/lock/subsys/pcmcia 2>/dev/null
    	EXITCODE=0
    	;;
    
    Wie Du siehst, wird die Nachricht, das der Daemon startet blau, (welcher genau es ist: grün) die erkannten sockets grün, und die Bestätigung: rot eingefärbt.
    Wie gesagt es ist ein bisserl friemelig, kannst wohl einen Abend darauf verwenden...
     
  8. #7 avaurus, 18.01.2006
    avaurus

    avaurus °°°°°°°°°°°°°

    Dabei seit:
    28.12.2003
    Beiträge:
    965
    Zustimmungen:
    0
    man könnte auch eine Art Wrapper schreiben und sich somit viel Editierarbeit sparen. Wie genau weiß ich nicht, vorstellen kann ich es mir aber.
     
  9. x0r

    x0r Bitschubser

    Dabei seit:
    20.12.2005
    Beiträge:
    169
    Zustimmungen:
    0
    Ort:
    Berlin
    Sehr wahrscheinlich, das Ganze funktioniert dank (n)Curses-Lib ja auch unter C, Bspw.: mit printf()...
    Es ist ebenso wahrscheinlich dass bei einem Liveupdate alle edititerten Scripts wieder OHNE Escapesequenzen da stehen, und die ganze Arbeit ist dahin. Aber für eine selbsterst. LiveCD, würde die Arbeit sich schon lohnen !
     
  10. #9 avaurus, 19.01.2006
    avaurus

    avaurus °°°°°°°°°°°°°

    Dabei seit:
    28.12.2003
    Beiträge:
    965
    Zustimmungen:
    0
    ärgerlich, dass ich nun gerade nicht daheim bin, sonst würde ich an sowas jetzt hacken...

    hach, im Linuxbereich oder generell im OpenSource-Bereich ist das mit dem "lohnen" so eine Sache, da man ja eh vieles nur aus kosmetischen Gründen macht ;).

    Programmiersprache spielt eigentlich keine Rolle, da die meiste Sprachen eine Lib für ncurses haben. Selbst die ganzen Scriptsprachen haben es :).
     
  11. x0r

    x0r Bitschubser

    Dabei seit:
    20.12.2005
    Beiträge:
    169
    Zustimmungen:
    0
    Ort:
    Berlin
    Ach sooo...
    Bin ein ambitionierter (aber hoffnungslos blutiger) Anfänger im C coden. Hab vorher schon mal kleinere bash-Scripts geschustert. Aber überwiegend im Webbereich mit PHP/JScript gearbeitet. hab unter WiN32 schon mit C++ (O.K., nicht zu 'Fuß' sondern mit den MFCs) ein paar Anwendungen entwickelt, macht aber viel mehr Spaß mit C in Hardwarenähe zu coden, nicht über X verschiedene API-Wrapper hinweg. Da ist UNiX/LiNUX einfach verdammt cool.

    :)) Respekt, eben mal schnell 'nen Textausgabewrapper 'hacken' :))
    Hast Du das aus einem der 'Gallileo'-Publikationen ?! Oder kann man bez. der Herangehensweise auch Online nachschlagen ? (interessiert mich, jetzt doch sehr !!!)
     
  12. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  13. #11 avaurus, 19.01.2006
    avaurus

    avaurus °°°°°°°°°°°°°

    Dabei seit:
    28.12.2003
    Beiträge:
    965
    Zustimmungen:
    0
    die Herangehensweise ? mmh, ich würde mir jetzt halt den Initvorgang genauer ansehen und dann mal schauen, inwiefern man das auswerten kann.

    Und was genau meinst du mit "Galileo"?
     
  14. x0r

    x0r Bitschubser

    Dabei seit:
    20.12.2005
    Beiträge:
    169
    Zustimmungen:
    0
    Ort:
    Berlin
    Gallileo Computing, ist so ein Verlag für EDV-Bücher, die sich vor allem durch das Verlegen verständlicher Fachliteratur im UNiX/LiNUX-Bereich...
    Aus dem Verlag ist auch das Buch: "Shell Programmierung" von Jürgen Wolff, das ich sehr gelungen finde.
     
Thema:

Formatierung der Ausgabe beim Boot

Die Seite wird geladen...

Formatierung der Ausgabe beim Boot - Ähnliche Themen

  1. printf Formatierung: echo schreibt bei Ausgabeumleitung auf File nichts. Wieso?

    printf Formatierung: echo schreibt bei Ausgabeumleitung auf File nichts. Wieso?: #!/bin/sh ZAHL="372" FARBE="gelb" printf "%s%06d%s" "Bearbeitungsnummer 888" $ZAHL ", Farbe: $FARBE" echo printf "%s%06d%s" "Bearbeitungsnummer...
  2. Textformatierung nach Cut "\" nach jeder Zeile?

    Textformatierung nach Cut "\" nach jeder Zeile?: Hallo liebe Leute, vorne Weg, ich bin ein absoluter Neuling. Ich hoffe ihr verzeiht mir daher mein nicht wissen in diesem Bereich. Es geht um...
  3. OpenSuse 12.2 Reinstallation nach Formatierung / Übernahme von Home-Verzeichnissen

    OpenSuse 12.2 Reinstallation nach Formatierung / Übernahme von Home-Verzeichnissen: Hallo Community, bei meinem Rechner muss ich die Partitionen anpassen und daher nicht nur eine Neuinstallation, sondern auch eine Formatierung...
  4. Bereits gelöscht Daten ohne Gesamt-Formatierung sicher löschen.

    Bereits gelöscht Daten ohne Gesamt-Formatierung sicher löschen.: Hallo, gibt es eine Möglichkeit bereits gelöschte Daten auf der Festplatte nochmal sicher zu löschen, ohne die Festplatte oder Partition...
  5. formatierung von daten

    formatierung von daten: Hallo, ich muss in fortran.90 Daten konvertieren, sodass sie von surfer gelesen werden können. Dabei habe ich Daten, die eine Tabellenform...