shellscript soll nur beendet werden wenn passwortabfrage erfolgt

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von tuxlover, 04.10.2007.

  1. #1 tuxlover, 04.10.2007
    tuxlover

    tuxlover Der den Tux knuddelt

    Dabei seit:
    26.10.2005
    Beiträge:
    2.106
    Zustimmungen:
    0
    Ort:
    berlin
    hallo liebe leute,

    ich schreibe zur zeit an einem script, dass einige user und computerspezifische daten an der konsole ausgibt, und nur beendet werden soll, wenn das passwort eingeben wurde und bestätigt wurde, sozusagen ein bildschirmschoner für die konsole.

    soweit habe ich das schon fertig
    Code:
    #lockit
    #Script that locks the current running Terminal
    #and shows various system information
    
    #Comes with the package Bash-Tools
    #Ideas Collected by Mendel Cooper (Advanced Bash Scripting guide)
    #written for opensue 10.2 by Matthias Propst
    
    TIME=$(date +%c)
    CPU_NAME=$(cpufreq-info -dm)
    CPU_FREQ=$(cpufreq-info -fm)
    LINUX_VER=$(uname -r)
    SYS_UPTIME=$(uptime)
    USER=$(whoami) #You should Enter more 
    
    until false
    do
    clear
    echo $TIME
    echo "linux-$LINUX_VER seid $SYS_UPTIME"
    echo "\"$CPU_NAME\" läuft derzeit mit $CPU_FREQ"
    read -t 15
    clear
    df -h
    echo "=========================================================================="
    free -m
    read -t 15
    clear
    echo "Für $USER laufen momentan:"
    ps -A u | grep $USER
    read -t 15
    done
    
    exit 0
    nur wie man das mit dem passwort nacht weiß ich leider nicht. google hat leider auch keine ergebnisse geliefert.

    vielen dank für eure hilfe.
     
  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 Mµ*e^13.5_?¿, 04.10.2007
    Mµ*e^13.5_?¿

    Mµ*e^13.5_?¿ Routinier

    Dabei seit:
    21.02.2006
    Beiträge:
    453
    Zustimmungen:
    0
    Geht es darum, dass das Benutzerpasswort eingegeben werden soll, oder reicht es, wenn man einfach irgendein Passwort eingeben muss?
    Letzteres ist ja relativ einfach zu realisieren.

    Code:
    #lockit
    #Script that locks the current running Terminal
    #and shows various system information
    
    #Comes with the package Bash-Tools
    #Ideas Collected by Mendel Cooper (Advanced Bash Scripting guide)
    #written for opensue 10.2 by Matthias Propst
    
    foo () {
    	echo "Der Bildschirm ist gesperrt"
    }
    
    checkpwd() {
    	read -st 15 INPUT
    	if [ $INPUT = $PASSWD ]
    	then
    		echo "Der Bildschirm ist jetzt entsperrt, sie können weiterarbeiten"
    		exit 0
    	fi
    }
    
    trap foo SIGINT
    
    TIME=$(date +%c)
    CPU_NAME=$(cpufreq-info -dm)
    CPU_FREQ=$(cpufreq-info -fm)
    LINUX_VER=$(uname -r)
    SYS_UPTIME=$(uptime)
    USER=$(whoami) #You should Enter more
    PASSWD="secret"
    
    until false
    do
    clear
    echo $TIME
    echo "linux-$LINUX_VER seid $SYS_UPTIME"
    echo "\"$CPU_NAME\" läuft derzeit mit $CPU_FREQ"
    
    checkpwd
    
    clear
    df -h
    echo "=========================================================================="
    free -m
    
    checkpwd
    
    clear
    echo "Für $USER laufen momentan:"
    ps -A u | grep $USER
    
    checkpwd
    
    done
    
    exit 0
     
  4. #3 tuxlover, 04.10.2007
    tuxlover

    tuxlover Der den Tux knuddelt

    Dabei seit:
    26.10.2005
    Beiträge:
    2.106
    Zustimmungen:
    0
    Ort:
    berlin
    danke das hiflt mir erstmal ein bisschen weiter. hmm einiges verstehe ich noch nicht so und muss mir das erstmal genauer angucken.

    die konsole soll schon durch das benutzerkennwort gesperrt und wieder aufgehoben werden.
     
  5. #4 tuxlover, 07.10.2007
    tuxlover

    tuxlover Der den Tux knuddelt

    Dabei seit:
    26.10.2005
    Beiträge:
    2.106
    Zustimmungen:
    0
    Ort:
    berlin
    so habs jetzt soweit geschafft, dass das script beim druck der taste q nach einem passwort fragt und dann beendet wird. dummerweise kann man es immernoch mit strg+c ohne eingabe eines passworts beenden.das ist ziemlich sinnfrei.

    hat einer vlt. ein hinweis für mich, wie man das script so schreiben kann, dass es eben nicht bei der eingabe von strg+c beendet wird sondern nur wenn man q drückt.

    @Mµ*e^13.5_?¿ danke dein script hat mir ein bisschen geholfen. ich habs jetzt über den su befehl gelöst.

    vielen dank
     
  6. #5 Mµ*e^13.5_?¿, 07.10.2007
    Mµ*e^13.5_?¿

    Mµ*e^13.5_?¿ Routinier

    Dabei seit:
    21.02.2006
    Beiträge:
    453
    Zustimmungen:
    0
    Ich dachte du hättest dir mein Script angesehen.
    Anscheinend nicht aufmerksam genug ;)
     
  7. #6 tuxlover, 07.10.2007
    Zuletzt bearbeitet: 07.10.2007
    tuxlover

    tuxlover Der den Tux knuddelt

    Dabei seit:
    26.10.2005
    Beiträge:
    2.106
    Zustimmungen:
    0
    Ort:
    berlin
    o.k habs jetzt ein bisschen geändert. das ganze sieht jetzt so aus:
    Code:
    #!/bin/bash
    
    TIME=$(date +%c)
    CPU_NAME=$(cpufreq-info -dm)
    CPU_FREQ=$(cpufreq-info -fm)
    LINUX_VER=$(uname -r)
    SYS_UPTIME=$(uptime)
    USER=$(whoami) #You should Enter more variables if you need more system information to be displayed
    KEY_BREAK="false"
    
    
    catch_out ()
    {
    echo "The Screen is locked by \"$USER\"" #this routine should be catch the strg+c
    echo "You can return to your shell by pressing the \[q\] key."
    }
    
    trap catch_out SIGINT
    
    locked ()
    {
    clear
    echo $TIME
    echo "linux-$LINUX_VER scince $SYS_UPTIME"
    echo "\"$CPU_NAME\" running with $CPU_FREQ"
    sleep 15
    clear
    df -h
    echo "=========================================================================="
    free - m
    sleep 15
    clear
    echo "Current running processes for \"$USER\":"
    ps -A u | grep $USER | tail #processes which are called by this script should not be displayed
    #the user should be informed about further running processes. somthing like that: echo und weitere nn prozesse
    #where nn is a variable that holds the amount of running prozesses. maybe a counter will do the job?
    sleep 15
    }
    
    while [ $KEY_BREAK = "false" ]
    do
    read -t 1 -n 1 -s KEY_BREAK
    ${KEY_BREAK:="false"} 2> /dev/null
    
    case $KEY_BREAK in
    [q]) su $USER && break || locked ;;
    *) locked ;;
    esac
    done
    
    exit 0
    leider bewirkt der trap befehl hier nur; dass die funktion catch_out ausgeführt wird und dann beendet sich das script trotzdem. hast du vlt. ne idee wo ich idee wo ich mich über den trap befehl informieren könnte ausser das abs und die bash manpage?
     
  8. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
Thema:

shellscript soll nur beendet werden wenn passwortabfrage erfolgt

Die Seite wird geladen...

shellscript soll nur beendet werden wenn passwortabfrage erfolgt - Ähnliche Themen

  1. Shellscript für rotierende Datensicherung

    Shellscript für rotierende Datensicherung: Hallo, ich beschäftige mich erst seit ein paar Wochen mit der Shell und habe mich entschlossen meine ersten Scripterfahrungen in diesem kleinen...
  2. Shellscript unerwartetes Dateiende

    Shellscript unerwartetes Dateiende: Hallo zusammen, folgendes Script führe ich in einer .bat via cygwin und curl aus. Beim Ausführen erhalte ich die einen Syntaxfehler:...
  3. Einfaches Shellscript - dateinamen ändern

    Einfaches Shellscript - dateinamen ändern: Hey, kann mir jemand vielleicht bei diesem miniscript helfen? ich habe dateien die folgendermaßen aussehen MM-DD-YY-dateiname und...
  4. Variable aus ShellScript in Latexvorlage einfügen

    Variable aus ShellScript in Latexvorlage einfügen: Hallo, wie kann ich Variablen aus einem Shellscript an bestimmte Stellen in eine Vorlage einfügen. Sollte ich dafür spezielle Platzhalter in...
  5. Inhalt einer Variablen aus Batch an Shellscript übergeben

    Inhalt einer Variablen aus Batch an Shellscript übergeben: Hallo, ich komme einfach nicht drauf. Wie kann ich den Wert aus einer Variablen eines Batches an mein Shellscript übergeben? So? #...