Всем привет!
В этой небольшой статье я опишу простой способ, как можно автоматизировать 10 000+ ручных протыкиваний мышкой или клавиатурой на нескольких удаленных Linux-машинах (Xserver + SDDM).
Допустим, есть в нашем распоряжении некоторый парк машин, на которых нужно проделать руками очень долгую и однотипную рутину, состоящую из примитивных действий с клавиатурой и мышкой.
Задача облегчается наличием доступа по VNC, если машин хотя бы меньше 50 и клацать не так уж и много. А если нет?
На помощь к нам приходит Xdotool!
Если вкратце, это инструмент, позволяющий эмулировать работу клавиатуры, мыши, взаимодействовать с окнами и прочее.
Как можно понять из названия, он работает только с Xserver. Если у вас Wayland, можете заглянуть сюда: https://github.com/jordansissel/xdotool#wayland
Для сотворения магии нам понадобятся:
-
Linux с доступом по ssh
-
SDDM + любое окружение рабочего стола, работающее на Xserver
-
Установленный на нем Xdotool либо возможность сделать это
-
Ansible
Поставим задачу — открыть на удаленной машине Хабр и сделать окно на весь экран.
В моем распоряжении была KDE Plasma, в которой при нажатии Alt + Space появляется меню, в котором можно запускать приложения и задавать параметры.
Сразу скажу, что если дело касается работы с вебом, то используйте Firefox. К сожалению, Chrome очень любит задавать вопросы при старте и ломать этим всю всю остальную работу. По крайней мере, так было у меня.
Взмахнем же волшебной палочкой:
- name: Do monke job - hosts: some_hosts tasks: - name: Open Habr ansible.builtin.shell: cmd: | export DISPLAY=":0" && \ export XAUTHORITY="$(/usr/bin/find /var/run/sddm/ -type f)"" && \ xdotool key "alt+space" && \ sleep 1s && \ xdotool type "firefox --kiosk https://habr.com" && \ sleep 1s && \ xdotool key Return \ sleep 5s
Идем на хост и радуемся открытому Хабру!
А теперь о том, как это работает:
-
export DISPLAY=":0" && \
Задаем переменную DISPLAY. Один из двух параметров, необходимых для покдлючения к X-сессии. -
export XAUTHORITY="$(/usr/bin/find /var/run/sddm/ -type f)" && \
Указываем команду, после отработки которой получим путь к Xauthority — файлу cookie, используемого для хранения учетных данных, необходимых xauth для аутентификации X-сессий.Почему /var/run/sddm/?
Ответ прост — используя куки экранного менеджера, мы можем работать на стадии авторизации пользователя в системе. То есть необходимость в авторизации ручками отпадает.
Тем не менее, можно сначала войти в пользователя, увидеть рабочий стол и взять Xauthority из домашней директории, и этот способ тоже будет рабочим.
А теперь вернемся к плейбуку.Далее все просто.
-
xdotool key "alt+space" && \
Вызываем меню, через которое… -
xdotool type "firefox --kiosk https://habr.com" && \
…Запускаем Firefox в режиме киоска (окно сразу открывается в фуллскрине), указав ссылку на Хабр. -
sleep 1s && \
Ждем 1 секунду между действиями, чтобы все успело открыться. -
sleep 5s
Иногда приходится ждать дольше, если открываем какое-то большое приложение.
На этом можно завершить.
Надеюсь, данная статья будет полезной и освободит вам целую кучу времени.
Полезные статьи про xdotool на Хабре:
https://habr.com/ru/sandbox/46514/
https://habr.com/ru/articles/214779/
ссылка на оригинал статьи https://habr.com/ru/articles/826918/
Добавить комментарий