Как-то посетила меня мысль, что было бы неплохо где-то хранить историю открытых терминалов, чтобы в случае неожиданной перезагрузки рабочего компа вспомнить на каких же именно серверах я сидел SSH-ем и при необходимости доделать начатое. Непродолжительное гугление вкупе с "yum search screenshot" вывело меня на 2 следующих программки: shutter и scrot. Обе нашлись в стандартных репозиториях Fedora. Первая за собой потянула кучу Perl-модулей и не сильно мне понравилась тем, что, во-первых, отрабатывает довольно долго (секунды 3-4), а во-вторых, не умеет работать молча (на экране хоть и ненадолго, но появляется раздражающее окошко). Вызывал я её из крона следующим образом:
1 * * * * DISPLAY=:0 /usr/bin/shutter -f --disable_systray --min_at_startup -e > /dev/null 2>&1
Параметр -e означает, что нужно сразу завершить работу без лишних вопросов, а -f означает, что нужно сделать скриншот всего экрана целиком. Если нужно заскриншотить только определённую область экрана, то вызывать нужно так:
/usr/bin/shutter --select=100,100,300,300
Первые два числа - координаты (X,Y) верхнего левого угла прямоугольной области, вторые два числа - размеры области в пикселях по горизонтали и вертикали соответственно. При наличии ключика --select результат своей работы сохраняет в домашний каталог в виде файлов c именами "Выделение_001.png", "Выделение_002.png" и т.д. или, если установлена английская локаль, то "Selection_001.png", "Selection_002.png" и т.д. При наличии ключика -f имена файлов будут такие: "Рабочий стол 1_001.png", "Рабочий стол 2_001.png" и т.д.
Вторая софтинка (scrot) работает заметно быстрее и молча (что и определило мой выбор в её пользу). На её основе был написан следующий скриптец:
#!/bin/bash WD=/home/sysadmin/screens export DISPLAY=:0 [ ! -d $WD ] && mkdir -p $WD /usr/bin/scrot $WD/sc-$(date '+%Y-%m-%d_%H:%M').png >> /tmp/scrot.log 2>&1 if [ `date '+%H'` -eq 19 ]; then # removing old screenshots cd /tmp find $WD -mtime +30 | xargs -r rm fi
В результате в каталоге /home/sysadmin/screens будут создаваться файлы с именами, соответствующими текущей дате и времени. Скриптец был повешен в крон выполняться раз в час. Блок if задуман для того, чтобы раз в сутки находить и удалять скриншоты старше 30 дней от роду. Scrot, в отличие от shutter-а, не умеет выцеплять область экрана, а только может сохранять весь экран целиком.
Если кто знает способ делать скриншот только определённого рабочего стола, а не текущего, прошу отписаться в комментариях. Просто у меня в KDE рабочих столов 6 штук, и терминалы с SSH-ем группируются обычно только на одном из них.
Scrot умеет сохранять определённую область крана. Ключ -s. Правда не знаю чем это поможет в скрипте, так как выделять надо мышкой.