Самым естественным способом было бы убить процесс менеджера сеанса для этого сеанса. Убийство менеджера сеанса завершает сеанс.
В Linux вы можете использовать ps xeww | grep DISPLAY =: 1
для вывода списка процессов, в среде которых есть DISPLAY =: 1
. У многих других вариантов Unix есть способ сделать это, но параметры для ps
различаются.Помните, что это может возвращать ложные срабатывания, которые могут иметь DISPLAY =: 1
где-то на выходе (например, сама команда grep, которая может появляться или не появляться в зависимости от скорости, с которой части конвейера запущены).
Чтобы упростить поиск диспетчера сеансов, используйте ps xewwf | grep DISPLAY =: 1 | меньше
. Менеджер сеанса будет одним из тех, чей родитель не указан.
Как вариант, найдите X-сервер. На практике каждый дисплей управляется отдельным процессом X-сервера. fuser /tmp/.X11-unix/X1
перечисляет дисплей управления X-сервером : 1
; передайте параметр -k
, чтобы завершить процесс. Для этого вам понадобится root.
Клиенты частной локальной сети могут знать внешний IP-адрес, только если маршрутизатор включил uPnP
Я перепроверил приложение для Android «tinyCam Monitor». Ей известен внешний IP, когда на роутере включена функция uPnP.
Итак, я проверил Интернет и нашел команду MiniUPnP (http://miniupnp.free.fr/), которая может показывать внешний IP-адрес через UPnP/IGD. Я мало что знаю о UPnP/IGD.
Заметки о старых роутерах
Реализации UPnP потенциально подвержены нарушениям безопасности. Плохо реализованные или настроенные UPnP IGD уязвимы. Исследователь безопасности Х.Д. Мур проделал хорошую работу по выявлению уязвимостей в существующих реализациях :Недостатки безопасности в Universal Plug and Play (PDF ). Распространенной проблемой является открытие портов SSDP или HTTP/SOAP в Интернет :, они должны быть доступны только из локальной сети.