Попробуйте
ssh -qx root@example.org "ls -t /path/to/logs | head -6" | rsync --files-from=- -avHS root@example.org:/path/to/logs/.
Конечно, существует множество документации и статей о том, как читать/писать/интерпретировать устройства Linux. Для фреймбуфера, например, вы можете писать в него даже со своей консоли, используя команду cat
с консоли tty
, чтобы проверить воду.
# cat /dev/urandom >/dev/fb0
Прочтите это , например, чтобы понять, как это работает, а затем используйте язык C/C++ или любой другой для создания более сложных вещей.
Не уверен, что вы можете получить ввод с клавиатуры/мыши с fb0. Тем не менее, это очень весело, и вы узнаете много нового о том, как все работает в мире Unix.
Для начала вам нужно использовать системный вызов open для открытия файлового дескриптора, а оттуда вы будете использовать ioctl для установки нужных вам параметров. Тогда вы будете просто читать и писать в fb как в обычный файл.
Возможно, вы захотите посмотреть на mmaping файл, хотя тогда вы сможете просто получить к нему доступ как к массиву!
Итак, какой ioctl вы можете найти на справочных страницах и при чтении файлов в /usr/include
Для чтения ввода с клавиатуры и мыши вы хотели бы использовать устройства ввода, найденные в файловой системе dev.
Все это может показаться очень странным, но система ввода довольно мощная.
Удачного взлома!
Вы открываете дескриптор файла для устройства кадрового буфера и используете ioctl()
с FBIOGET_FSCREENINFO
и FBIOGET_VSCREENINFO
. Из возвращенных структур вы можете напрямую определить разрешение X, разрешение Y, шаг и биты на пиксель.
Если фреймбуфер используется совместно со встроенным -в ядро эмулятором терминала и используется для отображения виртуальных терминалов ядра, вам необходимо договориться о доступе с этой подсистемой, указав ей не отображать свои символы в фреймбуфере, пока ваша программа работает. делая это и согласовывая переключение KVT с другими процессами.
В таком случае построение пикселей сводится к выполнению вычислений с адресом пикселя, желаемыми цветами и вышеупомянутыми значениями;для получения смещения байта и значения байта (с )для записи. Это можно сделать с помощью системного вызова pwrite()
; но более эффективно это делается путем сопоставления памяти устройства кадрового буфера с адресным пространством процесса и простого нажатия на отображаемую область памяти -.
Есть целые книги о том, как строить поверх этого.
Все становится намного сложнее, когда вместо использования предустановленного -фреймбуфера в графическом режиме, который уже используется, вы используете настройку режима ioctl()
для динамического создания одного или нескольких фреймбуферов.