SSH経由でGnomeデスクトップからスクリーンショットを撮る

SSH経由でGnomeデスクトップからスクリーンショットを撮る

Fedora 30(32リリース予定)に基づく「デジタルサイネージクライアント」の自動起動インストールが設定されており、現在画面にある内容について実際の視覚的なフィードバックを受け取る必要があります。コマンドラインでGnome-Remote-Desktopを有効にしてみました(参照:コマンドラインでGnome画面共有を有効にしますか?)しかし残念ながらそれはできません。

したがって、新しい方法はスクリーンショットを撮ってscp経由でコピーすることです。 gnome端末を介してクライアントから直接スクリーンショットを撮ることができますが、リモートgnome-screenshotで行う方法はわかりません。 KDE SpectacleやShutterなどの他のツールも試してみましたが、運はありませんでした。

1つのアイデアは、スクリーンショットを撮るためにcronjobを設定することです。

$> crontab -e

1 * * * * gnome-screenshot

しかし、これはうまくいきません。journalctl _COMM=cron説明する-- No entries --

Gnome-Wayland-Fedoraデスクトップでスクリーンショットを撮る方法を知っている人はいますか? crontabで動作する必要がありますか?

ベストアンサー1

ウェイランドのために

n-tchenの情報によると、火災射撃(Fedoraリポジトリから)うまく動作します。

flameshot screen -p ~/

SSH経由で接続している場合は、WAYLAND_DISPLAY=wayland-0前の行の先頭に追加してください。

代わりにFlameshotを使用することもできますが、gnome-screenshotまだsshに上記のエントリを追加する必要があります。

追加情報(源泉):

Waylandでクロスプラットフォームのスクリーンショットを撮る方法は次のとおりです。xdg - デスクトップポータル(Flatpakの外でも動作します)。バラよりhttps://github.com/Flatpak/xdg-desktop-portal/blob/master/data/org.freedesktop.portal.Screenshot.xml

最後に、PyscreenshotはWaylandをサポートしています。GitHubを読む

X11の場合

ImageMagickのコマンドは、importスクリーンショットを撮るのに優れた役割を果たします。

import -silent -window root /tmp/screenshot.jpg

SSH経由で接続しDISPLAY=:0.0てローカルにログインしたのと同じユーザーとしてログインする必要がある場合は、前の行の先頭に追加してください。

crontabで実行するには、次の手順に従って設定してください。 6分ごとにスクリーンショットを撮り、日付/時刻でエンコードされたファイル名で保存します/root/monitor/。 Ubuntu 16.04と18.04でテストされました。

echo -n "/bin/bash -c '"                                                                  >cronexec
echo -n   'export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin && ' >>cronexec
echo -n   'export HOME=/root && '                                                        >>cronexec
echo -n   'export D1=/tmp/gneemp && '                                                    >>cronexec
echo -n   'export F2=`date --utc +/root/monitor/%Y-%m-%dT%H:%M.jpg` && '                 >>cronexec
echo -n   'mkdir -p $D1 && '                                                             >>cronexec
echo -n   'chmod 643 $D1 && '                                                            >>cronexec
echo -n   'DISPLAY=:0.0 sudo -u `who --users |head -1 |grep -o "^\S*"` import -quiet -silent -window root $D1/tmp.jpg && '  >>cronexec
echo -n   'mkdir -p /root/monitor && '                                                   >>cronexec
echo -n   'mv $D1/tmp.jpg $F2 && '                                                       >>cronexec
echo -n   'rmdir $D1 '                                                                   >>cronexec
echo    "'"                                                                              >>cronexec
perl -p -i -e 's|\%|\\\%|g;' cronexec # from the manpage:  "Percent-signs (%) in the command, unless escaped with backslash (\) ..."
(sudo crontab -l 2>/dev/null; echo -n "*/6 * * * * "; cat cronexec) |sudo crontab - && rm cronexec

おすすめ記事