특정 SSID에서 SYSTEMD 서비스 중지/시작

특정 SSID에서 SYSTEMD 서비스 중지/시작

특정 예를 들어 특정 5G 라우터를 통해서만 NFSNAS 노트북(아치 리눅스) 드라이브에 연결되어 있습니다. 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에 연결된 경우에만 마운트됩니다.

관련 정보