Если вы собираетесь использовать этот сценарий оболочки с проверкой if
, просто используйте -q
, как предложил heemayl:
if sudo dmidecode | grep -q Thinkpad
then
echo "I'm a Thinkpad"
fi
Поскольку блок if
проверяет статус выхода команды, мы можем полагаться на статус выхода grep
напрямую вместо того, чтобы печатать $?
и сравнивать его с чем-то другим.
Другой подход - отключить мышь и клавиатуру (предполагая систему с USB-устройствами ввода):
00 23 * * * rmmod usbhid
00 7 * * * modprobe usbhid
Это не помешает вам выключить и снова включить систему, что снова включит клавиатуру и мышь... Если вы хотите предотвратить это, вы можете включить модуль в черный список, но вам, вероятно, придется каждый раз перестраивать initramfs (usbhid
должен быть загружен очень рано во время загрузки, поскольку вы хотите иметь рабочую клавиатуру, чтобы исправить ситуацию, когда система не может загрузиться).
Если usbhid
встроен в ядро вашей системы (например, Fedora), вы можете добиться того же эффекта, отвязав все HID-устройства; сложнее всего будет перепривязать их в 7 утра - вам нужно будет где-то хранить драйверы, от которых они были отвязаны (если нет способа их перечислить). Чтобы отвязать все устройства:
for device in /sys/bus/hid/devices/*; do
echo ${device##*/} > ${device}/driver/unbind
done
(с соответствующей проверкой ошибок, конечно). Для повторной привязки нужно вспомнить, на какой драйвер указывал ${device}/driver
, и echo
идентификатор устройства для bind
в каталоге драйвера.
Я бы предложил атаку в двух направлениях:
~/.bashrc
, а также в root'е, команду остановки системы, если время между 23:00 и 07:00. Это предотвратит вход в систему в это время. Однако, как я уже упоминал в комментариях, ничто, что вы можете установить, не будет надежным. У вас есть root-доступ к вашему собственному ящику.
Это классический пример поиска технического решения человеческой проблемы; если вы хотите спать с 23:00 до 07:00, вам придется позаботиться о своей самодисциплине в этом вопросе другими способами. Корень не может сделать это за вас, потому что вы есть корень. Он будет брать на себя личную ответственность.
У меня есть много вполне работоспособной информации по этому вопросу, но я удержусь от нее, так как это будет не по теме. :)
Вы можете создать службу, скажем self_discipline
, создание службы зависит от системы , но есть много онлайн-справочники .
И пример сценария, который может запускать служба, будет примерно таким.
#!/bin/bash
while [ true ]
do
HOUR="$(date +%H)"
if [ "$HOUR" -gt 23 ] || [ "$HOUR" -lt 07 ]
then
shutdown -h now
fi
sleep 60
done
Затем просто установите эту службу для запуска при запуске, что не позволит вам отключить ее, просто перезагрузив ее. Если вы хотите отключить его раньше времени, вы можете просто service self_discipline stop
Настройте Linux на выход из системы в 23:00. Используйте LetterMeLater.com и настройте его на отправку вашего логина по электронной почте в 7 утра (не делайте его запоминающимся и убедитесь, что вы не являетесь адресом электронной почты по умолчанию; кто-то из ваших знакомых, который не разбирается в компьютерах, поэтому было бы сложно пройти через забытый логин ).
Введите его со своего телефона и удалите, когда у вас есть. Хорошо для паровых и игровых сохранений, если вы не можете хорошо контролировать игры.
Также убедитесь, что пароль планировщика электронной почты совпадает с вашим логином. Таким образом, вы можете изменить его, когда захотите. Но только тогда, когда он будет отправлен вам по электронной почте. Это необязательно. Может быть, вы не хотите его менять и знаете, что это будет стандартно. Тестируйте его, пока не убедитесь, что он работает для вас.