回答:
スクリプトをに追加します/etc/network/if-up.d/
。「.sh」拡張子なしでスクリプトに名前を付けます。
また、スクリプトの実行chmod +x /etc/network/if-up.d/yourscriptname
を追加した後、必要な許可を与えます。
ファイルがオンになっているときにスクリプトをトリガーするネットワークインターフェイス(wlan0またはeth0など)がファイルに記載されていることを確認します/etc/network/interfaces
。
interfaces
そこにないときに正確に何を入力すべきかを追加してください。それとauto wlan0
、iface wlan0 inet dhcp
それとも他のものですか?
編集者注:イカは2012年以降更新されておらず、現在のUbuntuリポジトリにはありません
イカを開き、をクリックしNewます。
OPの質問のこの部分に答えます:「このマウントを自動的に実行したい」
ネットワーク共有を自動マウントするための私のお気に入りのツールはautofsです:https : //help.ubuntu.com/community/Autofs
AutoFSは、すべてのラップトップおよびワークステーションで、NASをマウントするための最適なツールです。
「autofsの自動的、必要に応じてディレクトリをマウントするためのプログラムです。自動マウントは、それらがアクセスされるようにのみ搭載されており、一定の時間後にアンマウントされている。このため、NFS / Samba共有に節約帯域幅とより良いオファーを自動マウントfstabによる静的マウントと比較した全体的なパフォーマンス。」
最良のシンプルで簡単な方法は、作業するインターフェイスにupコマンドを追加することです。
インターフェイスは、ファイル名「interfaces」の下の「/ etc / network /」ディレクトリにあります。
iface elan0 inet manual
up filename.sh
これにより、upコマンドがelan0に追加されます。これを、やりたいと思うインターフェイスに与えます。1つのタブスペースをインデントすることを忘れないでください。
ファイルに実行権限を付与してください。
sudo chmod 755 filename.sh
tun0
によって管理されるVPNインターフェイスで動作しますnetwork-manager
。キーはの使用ですinet manual
。
私が懸念している限り、この/etc/network/if-up.d/
ソリューションは/etc/network/interfaces
、以下に追加したときと同じように機能しませんでした。
auto wlp58s0
iface wlp58s0 inet dhcp
post-up /home/augustin/Config/myscript.sh
Wifiは再起動後に起動します。
しかし、いくつかの闘争の後、からこのリンクを、どのような仕事をすることにスクリプトを追加した/etc/NetworkManager/dispatcher.d/
形で、スクリプトの優先順位があり、次の形式を持ちます:90myscript.sh
90
#!/bin/bash
IF=$1
STATUS=$2
if [ "$IF" == "wlp58s0" ]
then
case "$2" in
up)
# interface is up
;;
down)
# interface will be down
;;
pre-up)
# interface will be up
;;
post-down)
# interface is down
;;
*)
;;
esac
fi
誰がシステムレベルでネットワーク構成を制御するかには問題があると思いますが、デフォルトのnetwork
動作がディスパッチャの動作に残されることがあります。
また、(私のように)スクリプトへのシンボリックリンクを(ファイルをより良い場所に保存するために)したい人にとっては、残念ながらそれはうまくいきませんでした。
お役に立てれば!
systemd
最近ネットワークを引き継いでいるようです。
$ networkctl
WARNING: systemd-networkd is not running, output will be incomplete.
IDX LINK TYPE OPERATIONAL SETUP
1 lo loopback n/a unmanaged
2 enp0s25 ether n/a unmanaged
3 wlo1 wlan n/a unmanaged
3 links listed.
インターフェースに対応するユニットもあります
$ systemctl list-units |grep wlo1
sys-devices-pci0000:00-0000:00:1c.3-0000:24:00.0-net-wlo1.device loaded active plugged Centrino Ultimate-N 6300 (3x3 AGN)
sys-subsystem-net-devices-wlo1.device loaded active plugged Centrino Ultimate-N 6300 (3x3 AGN)
どうやらこれらをサービスユニットファイルで使用できるようです。したがって、スクリプトを実行するサービスユニットを作成し、その中のようなものを使用して、ネットワーク上で条件付きで実行します。
BindsTo=sys-subsystem-net-devices-wlo1.device
After=sys-subsystem-net-devices-wlo1.device
幸運を!私はこれをテストしていませんので、「あなたの走行距離は異なる場合があります」。
ソース:
/etc/network/*.d/
変数$IFACE
を使用して、どのインターフェイスが接続を取得しているかを知ることができるため、たとえば有線接続の場合は手順をスキップできます。