Настройка DISPLAY=:0 не влияет на отправку уведомлений через ssh

Настройка DISPLAY=:0 не влияет на отправку уведомлений через ssh

У меня есть доступ по ssh к компьютеру моей соседки по квартире (Ubuntu 14.04). Я хочу отправить ей сообщение по ssh, поэтому я использую эту команду

export DISPLAY=:0 && notify-send "sample message"

Команда завершается с 0, но она не видит сообщения. С другой стороны, когда я используюэкспортировать DISPLAY=:0и напримерxterm, xterm нормально открывается. libnotifyустанавливается, когда я запускаюуведомить-отправитьлокально это показывает. Также, когда я пробую эту команду через ssh на другом компьютере, это работает.

Есть идеи, почему это происходит, пожалуйста? Спасибо

решение1

notify-send необходимо иметь учетные данные сеанса, чтобы иметь возможность отправлять уведомления в сеансе ваших друзей. Они хранятся в переменных среды, включенных в сеанс при входе в систему, что предотвращает засорение рабочего стола несанкционированными фоновыми процессами.

Простой способ сделать эти учетные данные сеанса доступными (и полностью подорвать безопасность рабочего стола) — заставить сеанс рабочего стола запустить сеанс экрана, а затем перевести его в фоновый режим.

Затем вы можете подключиться к нему по ssh, подключиться к сеансу экрана, и тогда ваш notify-send заработает. Если вы это сделаете, убедитесь, что ваш сосед по квартире полностью осведомлен о том, что у вас есть полный доступ к его рабочему столу и файлам.

Чтобы настроить сеанс экрана:

Из панели инструментов запустите «Автозагрузка приложений».

нажмите «Добавить», дайте ему имя и введите в команду следующее:

screen -dmS desktop_session

Затем, когда вы подключаетесь через ssh

screen -r desktop_session
notify-send "Insecure message"

Затем вы можете запустить любую команду и увидеть ее графический вывод в этом сеансе рабочего стола.

Вам нужно будет сделать это в интерактивном режиме. Если вы хотите сделать это неинтерактивно, вы можете создать скрипт оболочки, который будет опрашивать файл и при появлении данных отправлять уведомление. Или просто используйте клиент мгновенных сообщений.

решение2

Мне пришлось сделать нечто подобное — я запускал обновление на одном компьютере, но хотел отправить уведомление на другой компьютер. Я использовал sshpass:

sshpass -p user_password ssh -X user_name@ip_address DISPLAY=:0 notify-send "The message"

где бы вы заменили user_password, user_nameи ip_addressдля вашего конкретного пользователя/машины.

Связанный контент