Próbuję oszczędzać energię, przełączając komputery stacjonarne w tryb zawieszenia, gdy są nieaktywne. Ale do wielu komputerów stacjonarnych ma również dostęp przez SSH ich właścicieli. Wdrożono rozwiązanie Wakeonlan, aby umożliwić właścicielom włączenie komputera, ale problem polega na tym, że komputery automatycznie zawieszą się ponownie za 10 minut, nawet jeśli połączenie SSH jest włączone.
Staram się zawrzeć aktywne sesje SSH w definicjach „aktywności”.
Pytanie, czy można to zrobić, ustawiając regułę polkit? Czy można to zrobić, umieszczając skrypt działający przed rzeczywistym zawieszeniem i przerywający go, jeśli zostaną znalezione sesje SSH? Potrzebuję czystego, legalnego sposobu na zrobienie tego. Jeśli nie to, mile widziane są również metody hakerskie.
Obecne naiwne hacky rozwiązanie: edytuj /usr/sbin/pm-suspend
:
#check for SSH sessions, and prevent suspending:
if [ "$(who | grep -cv "(:")" -gt 0 ]; then
echo "SSH session(s) are on. Not suspending."
exit 1
fi
Służy to celowi. Ale nie wiem, kiedy aktualizacja zastąpi plik /usr/sbin/pm-suspend
. Nie wiem też, jak to będzie działać z innymi implementacjami zawieszenia, takimi jak smoking.
[
jeśli piszesz if who | grep -qv :0; then
(zakładając, że masz POSIX zgodny z grep
GNU grep).
grep -cv :0
zamiast przejściawc
?