Вы можете использовать переменную среды $DISPLAY в качестве триггера в состоянии if. Обычно, когда эта переменная имеет значение, вы можете запускать графические приложения.
Вот пример bash:
if [[ -z $DISPLAY ]]
then
nano
else
gedit
fi
Оператор -z вернет true, когда envvar $DISPLAY пуст и ваш скрипт будет запущен nano, во всех в других случаях он будет работать gedit.
В соответствии с этим комментарием bash :
На большинстве современных настольных компьютеров Wayland (например, рабочий стол по умолчанию в Fedora и Ubuntu), $DISPLAY по-прежнему настроен из-за обратной совместимости (через XWayland), но для более надежного скрипта было бы хорошо протестировать как для $DISPLAY, так и для $WAYLAND_DISPLAY, чтобы быть уверенным ,Я бы предложил изменить тестовое выражение следующим образом:
[[ -z ${DISPLAY}${WAYLAND_DISPLAY} ]]
Таким образом, значения двух переменных будут объединены в общую строку, которая будет обработана с помощью оператора -z.
Ссылки:
Расширенное руководство по созданию Bash-скриптов: 7. Тесты Advanced Bash-Scripting Guide: 7.1. Test Constructs Advanced Bash-Scripting Guide: 7.3. Другие операторы сравненияВы можете использовать traceroute для расширенной сетевой трассировки, вы можете выбирать между протоколами IPv4 и Ipv6, вы также можете выбирать между форматами данных ICMP, TCP или UDP для зонда.
Итак traceroute имеет более продвинутые параметры, чем tracepath, который использует UDP-пакеты для трассировки.
Теперь о привилегиях суперпользователя:
вы можете использовать traceroute как с обычным пользователем, так и с суперпользователем, который зависит на привилегиях суперпользователя , которые вы хотите использовать, вот пример:
Здесь мы используем UDP-пакеты, которым не нужны привилегии суперпользователя
Здесь мы используем UDP эхо-пакеты, которым нужны привилегии.
По ICMP-пакетам вы можете сделать DDOS-атака.
Чтобы узнать о вариантах ICMP Traceroute Man Page
Чтобы просмотреть тип опций traceroute в терминале man traceroute
Для ICMP необходимы привилегии суперпользователя, чтобы обеспечить просто администраторы могут использовать некоторые из своих опций, так как они могут использоваться для выполнения ping смерти и сбора информации о конкретной сети, привилегия здесь даст суперпользователю возможность изменять параметры с использованием ICMP-пакетов.
Чтобы увидеть это, когда вы пытаетесь выполнить ping на таких сайтах, как www.microsoft.com, ваш ping не удастся даже в Интернете, а также потому, что маршрутизаторы Microsoft блокируют ICMP_requests.
Таким образом, linux защищает систему от непривилегированного пользователя, поэтому они не могут использовать эти команды для атаки.
Я думаю, вам нужно прочитать это http://www.ehow.com/list_7526520_differences-between-traceroute-tracepath.html
Из приведенной выше ссылки:
TracePath Tracepath отслеживает путь к назначенному сетевому адресу, сообщая о «времени жизни» или о задержке TTL и максимальных единицах передачи (MTU) на этом пути. Эта команда может выполняться любым пользователем, имеющим доступ к командной строке.TracePath
Traceroute по сути такой же, как Tracepath, за исключением того, что по умолчанию он будет давать только значение TTL. Если вам нужны дополнительные данные, вы должны запросить эти переменные в командной строке. Кроме того, traceroute требует доступа суперпользователя для запуска команды в ящике Linux, а некоторые продвинутые запросы данных могут не поддерживаться всеми маршрутизаторами по пути. В среде Windows любой пользователь с доступом к командной строке может запускать Traceroute.ping и traceroute используют протокол ICMP. Подобно UDP и TCP, это доступно через обычный сокет API. Только номера портов UDP и TCP менее 1024 защищены от использования, кроме как от root. ICMP доступен всем пользователям.
Если вы действительно хотите посмотреть, как работают ping и traceroute, вы можете загрузить пример реализации кода C из CodeProject.
Короче говоря, они просто открыть ICMP-сокет, а traceroute изменяет приращения TTL с помощью setsockopt до достижения цели.
Источник: CodeProject