#!/bin/sh x0=187 y0=152 DIALOG=Xdialog TITLE="Управление компьютером" sigs="1 2 3 5 10 13 15" tf=/tmp/xshut.$$ trap abort $sigs if [ -z "$DISPLAY" ]; then export DISPLAY=:0 fi abort() { rm -f $tf exit 1 } set_printers_list() { # PRINTERS="iceb hpdj" PRINTERS=`lpstat -v | grep -e " usb:/" -e " parallel:/" | cut -d: -f1 | awk '{print $3}'` } reset_printers() { local title title="Printer reset" set_printers_list set -- $PRINTERS if [ $# -eq 0 ]; then $DIALOG --title "$title" --msgbox "На этом компьютере не установлен\nни один принтер - сбрасывать нечего." 8 40 return 1 elif [ $# -eq 1 ]; then PRINTERS=$1 else set -- $PRINTERS menuh=$# if [ "$DIALOG" = "Xdialog" ]; then dh=12 max_menuh=20 else dh=8 max_menuh=17 fi if [ $menuh -gt $max_menuh ]; then menuh=$max_menuh fi h=`expr $menuh + $dh` str="_ Все on" for lp in $PRINTERS ; do str="$str $lp . off" done if $DIALOG --title "$title" --begin $x0 $y0 --separate-output \ --checklist "Какой принтер сбрасывать:" \ $h 30 $menuh $str 2> $tf ; then list=`cat $tf` if [ "$list" \!= "_" ]; then PRINTERS="$list" fi else return 1 fi fi set -- $PRINTERS while [ $# -gt 0 ] ; do $DIALOG --title "$title"--begin $x0 $y0 --no-buttons --infobox "Сбрасываем $1..." 3 30 lprm -P$1 - lpadmin -p $1 -E shift done return 0 } #main #export XDIALOG_HIGH_DIALOG_COMPAT=1 #export LC_CTYPE=uk_UA.KOI8-U export LC_CTYPE=ru_RU.KOI8-R #--fixed-font --no-cancel #--rc-file /usr/local/etc/xshut.rc #echo $$ > /var/run/xshut.pid while [ 1 ]; do mode=`Xdialog --stdout \ --title Shutdown --no-tags --no-cancel \ --radiolist "$TITLE" ${x0}x${y0}-1-40 2 \ p "Сброс принтеров" on \ h "Выключить" off \ r "Перезагрузить" off` if [ $? -eq 0 ]; then case "$mode" in p) reset_printers ;; h|r) shutdown -$mode now break ;; *) break ;; esac else break fi done rm -rf $tf