Как сделать скриншот на удаленном сервере через SSH и просмотреть содержимое рабочего стола?

Как можно сделать скриншот экрана во время работы бота, если произошла ошибка и он перестал работать, а именно: открыл ssh, вошел под пользователем, запустил бота, который запускает браузер selenium webdriver, и должен осуществить авторизацию на сайте, однако сейчас не работает, и я не вижу, что происходит?
  • 17 января 2024 г. 12:48
Ответы на вопрос 2
Для создания скриншота рабочего стола на удаленном сервере через SSH и просмотра его содержимого, вам понадобится установленный на сервере пакет для создания скриншотов, например, `scrot` или `imagemagick`, а также возможность отправки изображения на локальную машину или его просмотра на сервере.

Чтобы установить scrot на сервере с Ubuntu или Debian, можно выполнить следующую команду:
```bash
sudo apt-get install scrot
```

Для CentOS или Fedora это будет команда:
```bash
sudo yum install scrot
```

Чтобы сделать скриншот рабочего стола, выполните следующую команду:
```bash
DISPLAY=:0 scrot /path/to/screenshot.png
```

Если сервер работает без запущенного X сервера или хотите сделать скриншот окна браузера запущенного через Selenium, то у вас должен быть запущен виртуальный экран, например, используя Xvfb. Пример запуска Xvfb:
```bash
Xvfb :99 -screen 0 1024x768x16 &
export DISPLAY=:99
```

Если вам потребуется просмотреть скриншот на локальной машине, то его можно скопировать с помощью SCP:
```bash
scp username@remotehost:/path/to/screenshot.png /local/path
```

Или же вы можете использовать SFTP через файловый менеджер или CLI для загрузки файла.

Чтобы автоматически делать скриншот в случае ошибки бота, вам нужно встроить это в код бота. Если бот написан на Python и использует Selenium, то можно использовать следующий код для создания скриншота в случае исключения:
```python
from selenium import webdriver

driver = webdriver.Firefox()

try:
    # Здесь ваш код для авторизации на сайте
    pass
except Exception as e:
    driver.get_screenshot_as_file("/path/to/error_screenshot.png")
    print("Произошла ошибка:", e)
finally:
    driver.quit()
```

Путь к файлу скриншота стоит указать доступный для записи и помнить, что если вы используете виртуальный экран Xvfb, вам надо будет установить переменную `DISPLAY` перед запуском бота.

Если бот запущен на сервере без графической оболочки (headless), браузер Selenium тоже должен быть настроен на работу в headless режиме, чтобы иметь возможность делать скриншоты.
установить туда любое граф окружение, и воспроизвести в нём уже действия..
Похожие вопросы