SSH: Выключаем себя и соседа


_gaSh_ - Posted on 11 Январь 2010

Предисловие:
Иногда приходится быстро выключать, утром например, комп. Или не хочется вставать с кровати после просмотра фильма.

Для введения, что имеется:
- десктоп и ноутбук в сетке
- пользователь c идентичным именем на ноуте
- ssh с безпарольным входом для вашего логина (см. http://linsovet.com/ssh-auth-pubkey например)
- sudo
- на ноутбуке строка 'NOPASSWD: /sbin/halt' в /etc/sudoers (по формату естественно)
- два скрипта fast_halt.sh и shutafter.sh, расположеных в $HOME
зы введения:
- звук настроен через пульсу на ноут - это причина скриптов :)

fast_halt.sh:

#!/bin/bash
 
PING="/bin/ping"
HALT="/sbin/halt"
SSH="/usr/bin/ssh"
#remote ip
RIP="192.168.0.2"
 
if $PING -c 1 $RIP &> /dev/null; then
  # empty echo for preinput password for sudo $HALT
  sudo echo && $SSH -f $RIP "sudo $HALT &" 
fi
sudo $HALT

shutafter.sh:

#!/bin/bash
 
USERNAME="username"
 
SSH="/usr/bin/ssh"
PING="/bin/ping"
SLEEP="/bin/sleep"
HALT="/sbin/halt"
#remote ip
RIP="192.168.0.2"
 
if [ $UID -ne 0 ]; then
  sudo $0 $@
  exit
fi
 
if $PING -c 1 $RIP &> /dev/null; then
  sudo -u $USERNAME $SSH -f $RIP "($SLEEP $@ && sudo $HALT) &" 
fi
($SLEEP $@ && $HALT) &

Как пример:

$ ~/shutafter.sh 1h 30m
Пароль:
$

зы. Для облегчения жизни, но надо быть точным в shutafter.sh, а то потом писать надо "много", или все закончится недосмотренным фильмом ;)
зыы. Да-да, я знаю про quit в vlc

upd:
sed -e "s/sudo \$0 \$@ \&/sudo \$0 \$@/" shutafter.sh

ровным счетом ничего не понял. надо зашутдаунить комп через N часов?
echo "halt"|at now + 1 hour

или
mplayer ./movie ; halt

зачем придумывать какие-то процедуры, ssh привели зачем-то.

Ничего не поняли, потому, что ничего и не читали. Во введении русским языком объяснена причина сих скриптов. На мамке помер звук(физически). Покупать "дешевку" не хочется. Работаю в консоли, гоняю по сетке звук, надоело постоянно заходить на ноут по ссш, чтобы вырубить.

пару идей пришло в голову:
1. можно сделать алиас для mplayer

mplayer_shutdown() {
    mplayer $@
    fast_halt.sh
}

2. переделать shutafter.sh что бы следил запущен ли локальный mplayer, как тут советовалось

mplayer $@&
while killall -0 mplayer 2> /dev/null; do
    sleep 5;
done
shutafter.sh

или

mplayer $@&
PID=$!
 
while kill -0 $PID 2> /dev/null; do
    sleep 5;
done
shutafter.sh

Объясните простым путем!!!!!!!!!!

Отправить комментарий

Google Friend Connect (leave a quick comment)
loading...
Содержание этого поля является приватным и не предназначено к показу.