#!/bin/zsh # Filename: grml-lock # Purpose: lock console # Authors: grml-team (grml.org), (c) Michael Prokop # Bug-Reports: see http://grml.org/bugs/ # License: This file is licensed under the GPL v2. # Latest change: Mon Jun 04 22:49:37 CEST 2007 [mika] ################################################################################ PN="$0" if [ -r /etc/grml/script-functions ] ; then . /etc/grml/script-functions if [ -x /usr/bin/X ] ; then check4progs vlock xlock sudo chpasswd dialog || { echo "Sorry, can't continue. Exiting.">&2 ; exit 1 } else check4progs vlock sudo chpasswd dialog || { echo "Sorry, can't continue. Exiting.">&2 ; exit 1 } fi fi if [ -r /etc/grml_version ] ; then else dialog --stdout --title "$PN" --msgbox "Warning: this system does not look like a grml-system it might not work as intended." 7 70 fi welcome_screen() { dialog --stdout --title "$PN" --yes-label Continue --no-label Quit --yesno "Welcome to $PN! This script will lock virtual consoles when running on console or lock X server when running X. Notice that you can not lock a GNU screen-session via this script, use the lockscreen command instead (default is pressing ctrl-a x inside GNU screen)! Report bugs, send wishes and feedback to the grml team: http://www.grml.org/ - contact (at) grml.org " 16 65 case $? in (0) # everything ok ;; (1) echo "Cancel pressed." ; exit 1 ;; (255) echo "ESC pressed." ; exit 255 ;; esac } lockcons() { vlock -a } lockx() { xlock } askxlock() { dialog --stdout --title "$PN" --yesno "Now lock X?" 0 0 retval=$? case $retval in 0) lockx ;; esac } askvlock() { dialog --stdout --title "$PN" --yesno "Now lock consoles?" 0 0 retval=$? case $retval in 0) lockcons ;; esac } askpwd() { dialog --stdout --title "$PN" --yesno "Set password for user $USER?" 0 0 retval=$? case $retval in 0) while [ -z "$PASSWD" ] ; do PASSWD=$(dialog --stdout --title "$PN" --passwordbox "Set password (hidden typing):" 0 0) if [ -n "$PASSWD" ] ; then echo "$USER:$PASSWD" | sudo chpasswd else dialog --stdout --title "$PN" --msgbox "Error while setting password. Empty passwords are not accepted." 6 65 fi done ;; *) # asklock ;; esac } if ! isgrmlcd ; then [[ $(tty) == /dev/tty* ]] && lockcons || lockx else if [[ $(tty) == /dev/tty* ]] ; then welcome_screen askpwd askvlock elif [ -n "$DISPLAY" ] ; then welcome_screen askpwd askxlock fi fi ## END OF FILE #################################################################