web-dev-qa-db-ja.com

VPN接続の有無に応じてプロンプトを変更することはできますか?

家から離れているときは、VPN経由でインターネットに接続するのが好きです。たとえば、プロンプトで接続がオンになっているかどうかを確認すると便利です。

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

どうすれば私の.bashrcプロンプトが表示されるたびに接続の存在が評価されるようにするには? PS1をvpnc起動スクリプトで設定することは、解決策ではありません。だから私は

ps ax -o comm| grep [v]pnc

いくつかの結果を返します。

可能な解決策はありますか?

2
Frank

解決:

次の内容で「/ 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 \$ "

したがって、意図したとおりに機能します。さらに、色でプロンプトを強調することができます。多分これは他の誰かを助けることができます。

2
Frank

テストの結果をプロンプトに追加します

コマンド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)のfromtに${debian_chrootを追加します。

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

その結果は次のとおりです。

enter image description here

アクティブな接続がある場合、および:

enter image description here

ないとき。

注意

編集する前に、必ず最初に~/.bashrcをバックアップしてください。

2
Jacob Vlijm