Можно ли изменить приглашение в зависимости от наличия VPN-подключения?

Вдали от дома я люблю подключаться к интернету через VPN. Было бы замечательно видеть, включено ли соединение в моем приглашении, например:

frank@mycomputer ~    # without vpn active
frank@mycomputerVPN ~ # when vpn is active

Как я могу мой .bashrc чтобы существование соединения оценивалось каждый раз, когда появляется подсказка? Установка PS1 с помощью сценария запуска vpnc не является решением, потому что он иногда умирает. Поэтому я проверяю,

ps ax -o comm| grep [v]pnc

возвращает некоторый результат.

Любое решение возможно?

2 ответа

Добавьте результат теста в вашу подсказку

Если команда ps ax -o comm| grep [v]pnc не дает никакого вывода вообще, когда нет активного соединения VPN, но это делает, когда есть, вы можете редактировать .bashrc подать по:

  1. добавив в него следующий небольшой раздел:

    if [ -z "$(ps ax -o comm| grep [v]pnc)" ]; then
        test="no vpn active"
    else
        test="vpn active"
    fi
    
  2. Затем найдите строки, начинающиеся с:

    PS1='${debian_chroot....
    
  3. добавлять ($test) в результате ${debian_chroot:

    PS1='($test) ${debian_chroot...
    

Тогда результат:

введите описание изображения здесь

когда есть активное соединение, и:

введите описание изображения здесь

когда нет

Заметка

Всегда сначала делайте резервную копию вашего ~/.bashrc перед редактированием.

Решение:

Я создал сценарий оболочки с именем "/usr/local/bin/isvpn" со следующим содержимым:

#! /bin/bash
if [ -z "$(ifconfig | grep tun)" ]; then
    test="no VPN"
else
    test="VPN"
fi
echo -n "$test"

В.bashrc теперь у меня есть строка

PS1="\u@\h [\$(isvpn)]\w \$ "

Так что работает как задумано. Кроме того, вы можете подчеркнуть подсказку с помощью цветов. Может быть, это может помочь кому-то еще.

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