Я понимаю, что здесь есть или могут быть похожие вопросы, но этот не относится к пожарная тюрьма
при этом у Firefox нет задержек при запуске.
Информация об ОС:
Субунту 20.04
DISTRIB_DESCRIPTION="Убунту 20.04.3 ЛТС"
ИМЯ="Убунту"
ВЕРСИЯ = "20.04.3 LTS (Фокусная ямка)"
VERSION_ID="20.04"
$ uname -a
Linux terrance-ubuntu 5.11.0-40-generic #44~20.04.2-Ubuntu SMP Вт, 26 октября, 18:07:44 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
Я запускаю скрипт из кронтаб
это запустит мою страницу входа в систему ADP и будет включать и выключать меня в определенное время дня. Раньше это работало безупречно, пока не был выпущен Firefox 94. Теперь я понимаю, что для удаленного доступа Mozilla решила больше не использовать X11, а вместо этого использовать D-Bus. На всю жизнь я не могу понять, что подразумевается под использованием D-Bus вместо X11, кроме того, что они утверждают, что его проще использовать. Я предполагаю, что это может быть связано с Wayland, который я не использую.
Если я запускаю следующий скрипт из терминала командной строки в определенное время, он работает отлично, но если я запускаю скрипт из кронтаб
Я получаю следующее сообщение:
Сценарий (работа еще не завершена):
#!/бин/баш
#Эта функция проверяет путь к приложению на Mac.
реальный путь1 () {
[[ $1 = /* ]] && эхо "$1" || эхо "$PWD/${1#./}"
}
#Эта функция соответствует дню недели и возвращает 0, если совпадает, 1, если выходные.
функция проверки(){
case " ${daysofweek[@]} " в
*\ ${ДОУ}\ *)
вернуть 0;;
*)
вернуть 1;;
эсак
}
#Эта функция соответствует, если время прихода и ухода часов совпадает с 0 или 1, если нет.
функция проверки времени () {
case " ${timesofday[@]} " в
*\ ${НМ}\ *)
вернуть 0;;
*)
вернуть 1;;
эсак
}
#Эта функция сопоставляет выходные с сегодняшним днем. Если совпадение возвращает 0, что означает выходной, 1 означает, что выходной нет.
функция выходныхпроверка(){
случай "${daysoff[@]}" в
*\ ${daymdy}\ *)
вернуть 0;;
*)
вернуть 1;;
эсак
}
#Проверьте тип ОС.
OS_TYPE=$(uname -a | awk '{print $1}')
если [[ ${OS_TYPE} == "Linux" ]]; тогда
OS=$(grep -i ^name= /etc/*release | awk -F= '{print $2}' | sed 's/\"//g')
еще
OS=$(system_profiler SPSoftwareDataType | awk '/Версия системы:/ {print $3}')
фи
если [ "${OS}" = "CentOS Linux" ]; тогда
ОС=Федора
фи
# Установите рабочие каталоги и установите Display для запуска в CRONJOB.
случай $OS в
macOS) apppath=/Applications/Firefox.app/Contents/MacOS
экспорт DISPLAY="/private/tmp/com.apple.launchd.*/org.macosforge.xquartz:0"
PWD=$(dirname $(realpath1 $(который $0)));;
*) apppath=/usr/bin
DM=$(/usr/bin/базовое имя $(/bin/cat /etc/X11/default-display-manager))
случай $DM в
светдм)
экспорт ДИСПЛЕЙ=:0;;
гдм3)
grep -E "# AutomaticLogin|AutomaticLoginEnable = false" /etc/$DM/*.conf >/dev/null && export DISPLAY=:1 || экспорт ДИСПЛЕЙ=:0;;
*);;
эсак
PWD=$(dirname $(realpath $(который $0)));;
эсак
#Установите переменные для сопоставления функций.
DOW=$(дата +%a)
HM=$(дата +%H:%M)
daymdy=$(дата +%m-%d-%Y)
#Если сегодня новее выходного дня, удалите последний выходной день.
if [[ "${daymdy}" > "$(head -1 $PWD/daysoff.txt)" ]]; тогда
sed -i '1d' $PWD/daysoff.txt
фи
#Объявить массивы.
объявлять -a daysofweek=('Пн' 'Вт' 'Ср' 'Чт' 'Пт')
объявлять -a timesofday=('08:00' '12:00' '12:30' '16:30')
объявлять -a inout=('пришел' 'ушел на обед' 'пришел с обеда' 'ушел на день')
объявить -a daysoff=($(cat $PWD/daysoff.txt))
#Входи или выходи.
для i в "${!timesofday[@]}"; делать
если [[ "${timesofday[$i]}" == "${HM}" ]]; тогда
inorout="${inout[$i]}";
фи;
сделано
# Запускать функции и возвращать 0 или 1.
выходнойпроверка
офф=$?
даунчек
Доу=$?
проверка времени
время=$?
#Завершите и отправьте информацию или запустите Firefox, если это необходимо.
если [[ $doff != "1" ]]; тогда
echo "Сегодня выходной! Почему ты пытаешься прийти на работу?"
выход 1
Элиф [[ $доу != "0" ]]; тогда
echo "Это выходные! Почему вы пытаетесь успеть?"
выход 1
Элиф [[ $time != "0" ]]; тогда
echo "Сейчас $DOW в $HM. Сейчас не время начинать или заканчивать часы."
выход 1
еще
echo "Сейчас ${HM}. Пора ставить часы ${inorout}." | mail -s "Часы" [email protected]
echo "Сейчас ${HM}. Пора ставить часы ${inorout}." | mail -s "Часы" [email protected]
xdotool mousemove --sync 677 1011
$apppath/firefox --new-tab https://workforcenow.adp.com/workforcenow/login.html &
$PWD/часы_in_out.bsh
ждать
фи
Если у кого-нибудь есть идеи, как заставить Firefox работать с D-Bus, как это было с X11 до версии 94, я был бы очень признателен!