У меня есть доступ по 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
для вашего конкретного пользователя/машины.