特定のSSIDでSYSTEMDサービスを停止/開始

特定のSSIDでSYSTEMDサービスを停止/開始

特定の例は、特定の5Gルーターを介してのみNFSNASノートブック(アーチLinux)ドライブに接続されています。 Wi-Fiを別のルーターに変更すると、これが頻繁に発生します。ドライブをアンマウントして再接続するときに再インストールしたいと思います。そうしないと、ファイルマネージャがハングするからです。SSIDNASrouter_5GNoNasRouter_2GNASrouter_5G

私の研究では[Match]構文を見つけましたが、これはインターフェイス名だけを検出し、常にwifi0なので動作しないようです。しかもネットワークスケジューラ有望に見えますが、使用方法に関する情報が見つかりませんでした。

だから私の質問は次のようになります

ブート時と休止状態の後にドライブをマウントするためにsystemdを使用するので、正常に動作するため、systemdを使用することをお勧めします。ただし、sudo systemctl stop nfs_mounネットワークを変更するたびにtまたは一部を入力したくないので、何らかの方法で感謝します。alias

マウントサービスファイルには次の内容が含まれています。

[jack@jacks ~]$ cat /usr/lib/systemd/system/nfs_mount.service 
[Unit]
Descritpion=Documents Mount NAS systemctl start nfs_mount
After=suspend.target hibernate.target hybrid-sleep.target suspend-then-hibernate.target syslog.target network-online.target
Wants=syslog.target network-online.target

[Service]
Type=oneshot
ExecStart=/home/jack/nfs_mount.sh

[Install]
WantedBy=multi-user.target suspend.target hibernate.target hybrid-sleep.target suspend-then-hibernate.target

ベストアンサー1

システム化されたユニットがあります。事前定義された条件使用できますが、そのいずれもこのユースケースに適しています。

あなたのサービスは使い捨てまず、メインプロセスが終了するとサービスは無効になります。だから使用シンプル到着悪魔サービスと無限ループそしてパックSSID比較に基づくIFステートメントを持つnfs_mount.shスクリプトは、次のことができます。

#!/bin/sh  
while :
do
    sleep 5
    if [ "$(iwgetid -r)" == 'your_ssid' ] ; then 
      # Your code here
    else 
      # If it was not a oneshot service you can make a place here for a code to kill the service
    fi
done

したがって、ファイルシステムは、システムが必要なSSIDと一致するWIFIに接続されている場合にのみマウントされます。

おすすめ記事