NetworkManager:接続が閉じました。原因(管理者またはエラー)を見つける方法は?

NetworkManager:接続が閉じました。原因(管理者またはエラー)を見つける方法は?

NetworkManagerによって管理されるADSL(PPPoE)接続があります。

自動接続と無限再試行機能で構成されていますが、残念ながら、NMは完全に安定していません。場合によっては、接続が失敗し、再接続する前に切断して再接続する必要があります。私はこれを自動化するために小さなスクリプトを作成しました。

唯一の問題は、接続を維持したいときです。このスクリプトでは、管理者がこれを実行したかどうかを検出する必要があります。nmcli c adsl downこの場合、再起動を試みないでください。

どうすればいいですか?どちらの場合も、出力を比較しましたが、nmcli c show役に立つものが見つかりませんでした。私が見つけた唯一の違いは、NMスケジューラが手動pre-downシャットダウン時にのみ呼び出されることですが、そのような詳細を信頼できるかどうかはわかりません。

ベストアンサー1

ラッパースクリプトを使用してネットワークの起動/中断を処理し、そこにキープアライブスクリプトを配置できます。

#!/bin/bash

PIDFILE="/tmp/nmclihandler.pid"

#check if pid file exists
if [ -f "$PIDFILE" ]; then
    #check if other process exists
    if [ -d /proc/$(cat "$PIDFILE") ]; then
        echo "killing other instance of script"
        kill $(cat "$PIDFILE")
    #remove pidfile if not
    else
        #echo "removing pidfile"
        rm "$PIDFILE"
    fi
fi
#write pid of current instance to file
echo "$$" > $PIDFILE


keepalive()
{
    #put your current keepalive script here. 
    #It will be run if you pass the --run or -r parameter to the script
    #or if you enable the interface via --up or -u
    echo "keepalive"
}

#command help
if [ "$#" -eq 0 ] || [ "$1" == "-h" ] || [ "$1" == "--help" ]; then
    echo -e "nmcli helper script\n"
    echo -e "Parameter              Desciption\n"
    echo "-h, --help                show this help text"
    echo "-d, --down                disable interface"
    echo "-u, --up              enable interface"
    echo "-r, --run             keepalive connection"
    exit 0
fi

#handle manual network up/down
if [ "$1" == "--down" ] || [ "$1" == "-d" ]; then
    echo "disabling interface"
    nmcli c down adsl
elif [ "$1" == "--up" ] || [ "$1" == "-u" ]; then
    echo "enabling interface"
    nmcli c up adsl
    #run keepalive function after enabling network
elif [ "$1" == "--run" ] || [ "$1" == "-r" ]; then
    #put your keepalive script here
    keepalive
fi

--runラッパーは、パスまたはアダプタパスが有効になっている場合にのみキープアライブスクリプトを実行します--up。通過すると、--downネットワーク接続が無効になり、keepalive()機能は実行されません。

nmcliこれは回避策に過ぎず、直接呼び出しても問題は解決しません。

おすすめ記事