nmcli は gnome の network manager を GUI でなく CLI で制御するツールで、先日何かを調べているときに偶然見つけました。 CLI で PPTP の接続を確立するのに pon を使う方法は、これまたずっと以前にどこかで見つけて一応の成功をみました。ところが何か不安定で、しかも VPN のステータスが gnome panel の表示と一致しないのが気持ち悪いなぁと思って使っていませんでした。その点、nmcli なら結果がちゃんと GUI で表示されて便利です。
# nmcli con up id (name) … 接続
# nmcli con down id (name) … 切断
(name) は、gnome netrwork manager で設定した「名前」そのものを入れればいいそうで、接続を試みている過程はパネル上のアイコンの変化で分かります。うちの環境ではルート権限がないと実行できなかったので、nmcli くらいならいいだろうということで一般ユーザでも実行できるようにしちゃいました。
で、作ったイージーなスクリプトというのは、
(1) VPN 接続してるかどうか確認
(2) 接続確認なら一定時間待機して (1) に戻る
(3) 断線してるなら nmcli con up を実行
(4) 成功しても失敗しても一定時間待機して (1) に戻る
…というものです。
(追記)
で、その後少し内容を変更して、接続のチェックに使うコマンドを ifconfig から nmcli con status に変更したりしました。nmcli の方がややCPUパワーを多く使うような印象です。
#! /bin/sh
# 接続をキープする vpn の id を設定
vpnid="pptphogehoge"
while :
do
clear
echo "--------------------------------"
echo "keeping VPN coneected..."
echo "--------------------------------"
echo `date +%F" "%T`
if nmcli con status | grep ${vpnid} >/dev/null
then
echo "connected."
echo "--------------------------------"
echo "sleeping until next check..."
sleep 60s
else
echo "disconected."
echo "connecting..."
if nmcli con up id ${vpnid}
then
echo "connected."
echo "--------------------------------"
echo "sleeping until next check..."
sleep 60s
else
echo "disconnected."
echo "--------------------------------"
echo "sleeping until next try..."
sleep 30s
fi
fi
done
(追記ここまで)
■ Creating VPN Connection on Linux (Ubuntu) using command line (PPTP Client for windows VPN Server) … これがきっかけになったページ
http://winlinuxnet.blogspot.jp/2011/07/creating-vpn-connection-on-linux-ubuntu.html
■ Ubuntuでコマンドを使ってVPNクライアント接続する方法
http://netbuffalo.doorblog.jp/archives/4056722.html
■ nmcli from Ubuntu manuals
http://manpages.ubuntu.com/manpages/maverick/man1/nmcli.1.html
■ Gnome NetworkManager を cli から制御する
http://qiita.com/matoken/items/390bf596e0c69810acd9
----
(Jul.11, 2013、 Jul.13, 2013 追記)
0 件のコメント:
コメントを投稿