Fedoraはこのような機能をサポートしていますか?郵便注文する(Ubuntuのように)またはこのコマンドの他のオプションはありますか?
ネットワークインターフェイスを有効にした後でカスタムスクリプトを実行したいのですが、Fedoraでこれを管理する方法がわかりません。
post-up command Run command after bringing the interface up. If this command fails then ifup aborts, refraining from marking the interface as configured (even though it has really been configured), prints an error message, and exits with status 0. This behavior may change in the future.
答え1
1つのアイデアは、次のディレクトリにスクリプトを配置することです/etc/NetworkManager/dispatcher.d
。 NetworkManagerは、さまざまなネットワークイベントが発生したときにアルファベット順にスクリプトを実行します。
NetworkManagerは、ネットワークイベントに応答して/etc/NetworkManager/dispatcher.dディレクトリにあるスクリプトをアルファベット順に実行します。各スクリプトは(a)一般ファイルでなければなりません。 。各スクリプトは2つのパラメータを受け取ります。 1つ目はアクティブにしたばかりのデバイスのインターフェイス名、2つ目はアクションです。
マニュアルページによると、up、down、vpn-up、vpn-down、ホスト名、dhcp4-change、dhcp6-changeなどの「イベント」があります。
「up」イベントを使って欲しいことができるかどうか疑われます。このブログ投稿のタイトルは「NetworkManagerを使用してネットワークの場所に応じてスクリプトを実行する「」は、インターフェイス(eth0)の起動時に実行するシェルスクリプトを作成する方法を示しています。
たとえば(このブログ投稿から「借りた」コード):
#!/bin/sh
IF=$1
STATUS=$2
USER=justintime
wait_for_process() {
PNAME=$1
PID=`/usr/bin/pgrep $PNAME`
while [ -z "$PID" ]; do
sleep 3;
PID=`/usr/bin/pgrep $PNAME`
done
}
start_synergy() {
wait_for_process nm-applet
/bin/su $USER -c "/usr/bin/synergyc $1"
}
if [ "$IF" = "eth0" ] && [ "$STATUS" = "up" ]; then
#LAN Subnet at work
NETMASK="10.0.0.0/8"
if [ -n "`/sbin/ip addr show $IF to $NETMASK`" ]; then
ARGS="jentoo.bucklehq.com"
start_synergy $ARGS
exit $?
fi
fi
この例は、目的のタスクを開始するのに十分です。