Как запустить простой скрипт Zenity после отключения от WiFi?

Я запускаю Kubuntu 12.10 64bit. Я пытаюсь запустить скрипт bash, когда я отключен от сети. Я создал файл в папке /etc/network/if-down.d/ с именем test, который имеет одну строку:

zenity --info --text="network down!"

Я могу выполнить этот скрипт без каких-либо проблем; ввод /etc/network/if-down.d/test в мой терминал вызывает всплывающее окно с сообщением «сеть вниз!». Когда я отключусь от сети Wi-Fi через сетевой менеджер, ничего не происходит. Отключение моего USB-ключа Wi-Fi не приводит к появлению окна сообщений. Мое единственное предположение - это то, что никогда не запускаются сценарии в /etc/network/if-down.d/. Добавление #!/bin/bash в качестве первой строки тоже не сработало.

EDIT: 2013-01-02

У меня были некоторые проблемы с использованием ответа gertvdijk ( старые изменения и комментарии смешиваются), которые теперь отсортированы. Запуск zenity с su и DISPLAY=:0 решил мою проблему.

1
задан 3 January 2013 в 09:18

2 ответа

Я пробовал это (10.04) и имел ту же проблему. Похоже, что скрипт не знает, какой дисплей отображает диалог.

Попробуйте заменить свою строку на:

DISPLAY=0:0 zenity --info --text="network down!"

(Если у вас несколько дисплеев, вам может понадобиться что-то более тонкий.)

0
ответ дан 25 May 2018 в 02:50
  • 1
    Когда я добавил эту строку, ручное выполнение скрипта дало мне ошибку из zenity и gtk. Ознакомьтесь с моим вопросом-правлением для получения более подробной информации. Спасибо за ответ, я очень благодарен! – drdrez 3 January 2013 в 07:32
  • 2
    Восклицательный знак (!) также вызывает проблемы. В sh и bash я получаю ту же ошибку bash: !": event not found. Выход из него, например. --text="network down\!" исправляет это. – gertvdijk 3 January 2013 в 07:56
  • 3
    @gertvdijk Странно, это происходит только при запуске zenity --info --text="network down!" непосредственно с терминала. Эта строка, только в сценарии bash, не вызывает никаких ошибок, когда скрипт bash вызывается в терминале. – drdrez 3 January 2013 в 08:22

Другие ответы велики - возможно, даже лучше, чем этот, но, как обычно, есть еще один способ сделать это - на этот раз без использования системных утилит или повышенных разрешений (sudo).

Моя система запускает kubuntu 12.04, поэтому этот код, вероятно, будет работать в вашей системе. Он также должен работать и с gnome 2.x, за исключением того, что сценарий автозапуска идет в другом месте.

У меня была аналогичная проблема, когда я хотел знать, когда мой компьютер отключен (поскольку мой ноутбук, похоже, делайте это иногда, отключив Wi-Fi сам по себе, и я часто не замечал маленького красного x на панели задач.)

Что я сделал, так это добавить небольшой (исполняемый) скрипт в файл ~ / .kde / Каталог Autostart, который запускает мой основной скрипт каждый раз, когда запускается KDE (это касается его использования дисплея и клавиатуры):

#!/bin/bash
if [ -x "$HOME/bin/offline_alert" ] ; then
  offline_alert & 
fi

Основной скрипт offline_alert проверяет, не в сети используя ping с несколькими попытками, чтобы избежать ложных тревог, а затем генерирует всплывающее окно с использованием yad (так же, как zenity, только способ расширен!) и воспроизводит звук. Между тестированием изменений в онлайн-статусе он спит, поэтому он не использует слишком много ресурсов.

Если вы запускаете его вручную из командной строки и т. Д., Он проверяет, запущен ли он уже и дает вам возможность закончить его.

Код, который проверяет автономность, находится в функции «офлайн», поэтому его можно легко изменить, не затрагивая остальную часть скрипта.

[d8 ] Изображения, значки и звук, которые он использует, жестко закодированы, поэтому вам придется заменить свои собственные.

Он создает файл журнала, который вы можете или не захотите.

Сценарий настроен на использование уведомлений, но код

Это просто еще один способ сделать это, и, возможно, кто-то найдет этот код полезным.

Джо

0
ответ дан 25 May 2018 в 02:50

Другие вопросы по тегам:

Похожие вопросы: