Во-первых, чтобы скрипт отображал имя машины, две вещи:
а) Измените способ удаленного выполнения скрипта, чтобы запустить его напрямую. на удаленном хосте. Для этого необходимо скопировать сценарий на удаленный компьютер. Мне нравится хранить мои личные служебные сценарии в каталоге с именем «do» в моем домашнем каталоге, поэтому я бы использовал его как
~ / do / ShutdownUPTIME.sh
Теперь измените строку, которая читает
ssh admusr @ "$ {n}" 'sudo bash -s' <./documents/ShutdownUPTIME.sh
к этому:
ssh admusr @ "$ {n}" sudo do / ShutdownUPTIME.sh $ n
Обычно вы передаете ему имя машины $ n в качестве параметра.
b) Затем измените сценарий ShutdownUPTIME.sh на использование переданного аргумента. Если у вас Mac
, введите $ MACNAME
.В начале сценария добавьте строку
MACNAME = $ 1
Теперь сценарий будет выглядеть следующим образом:
#!/bin/bash
MACNAME=$1
BOOT_TIME=$(sysctl -n kern.boottime | sed -e 's/.* sec = \([0-9]*\).*/\1/')
CURR_TIME=$(date +%s)
MAX_UPDAYS=1 #Days
DAYS_UP=$(( ( $CURR_TIME - $BOOT_TIME) / 86400 ))
if [ $DAYS_UP -ge ${MAX_UPDAYS} ];then
echo Notice: $MACNAME is going to shutdown
sudo shutdown -h now
else
echo Info: No shutdown for $MACNAME needed
fi
Я также добавил «Уведомление» и «Информация» к командам вывода, чтобы придать им некоторый уровень важности. - это помогает при последующей фильтрации журналов.
В качестве бонуса заставьте скрипт обрабатывать ситуацию, когда вы не указали имя Mac, указав значение по умолчанию. Например, присвоение значения MACNAME становится
MACNAME = $ {1: - $ (hostname)}
О ведении журнала: Cron отправит вам электронное письмо с выводом каждого задания, но это может быть очень неудобно. Самое простое решение - перенаправить вывод команд в локальный файл журнала.
Для этого просто добавьте перенаправление в строку «готово» цикла, чтобы он стал
готовым | tee -a $ LOGFILE 2> & 1
И это, конечно же, требует, чтобы вы установили имя в переменной LOGFILE ранее в скрипте, поэтому добавьте такую строку в начале:
LOGFILE = / var / log /refreshing.log
( Примечание: укажите путь к файлу, в который у вас есть разрешение на запись)
Кроме того, вы можете регулярно добавлять метку времени в этот журнал, поэтому непосредственно перед циклом добавьте строку
echo Выполняется обновление в $ (дата) | tee -a $ LOGILFE
Запись в журнал вывода команды cron означает, что запись в журнал происходит только тогда, когда ваш скрипт выполняется из cron. Поэтому предпочтительнее заставить скрипт управлять своим собственным журналом. Я изменил сценарий, чтобы использовать tee
вместо перенаправления, так что когда вы запускаете его в командной строке, вы все еще можете видеть результат.
Это ошибка в GNOME до версии 3.25.3.
Ваш вопрос устарел, скорее всего, вы перешли на Stretch. Если это так, вы можете проверить Debian Stretch: Как сделать Wayland по умолчанию?.
В противном случае вы можете исправить исходный код и пересобрать. Или в качестве обходного пути вы можете настроить синхронизированный вход с задержкой в 1 секунду.