기타

맥북에서 특정 와이파이 연결 시 자동 볼륨 조절 스크립트

bomoto 2025. 4. 24. 17:22

재택근무 시에는 맥북 음량을 켜놓는데 사무실 출근하면 음소거를 해야 하기 때문에 번거롭다.

hammerspoon으로 이를 구현할 수 있다고 듣긴 했는데, 이거 하나 때문에 hammerspoon을 설치하긴 싫어서 버티고 있다가, 스크립트로 자동화해볼까 싶어서 해보기로 했다.


1. 설정하려는 Wi-Fi 이름 확인하기

networksetup -getairportnetwork en0

 

위 명령어로 볼륨 조절이 필요한 Wi-Fi의 이름을 확인한다.

Wi-Fi 이름을 알고 있다면 스크립트에 직접 적으면 되지만, 내가 설정하려는 Wi-Fi는 이름이 길어서 직접 치기 번거로워 명령어로 확인해 주었다.

Current Wi-Fi Network: your-wifi-name

 

위처럼 your-wifi-name 자리에 현재 연결된 Wi-Fi 이름이 나온다.

 

 

 

 

2. 쉘 스크립트 만들기

원하는 위치에 실행할 스크립트 파일을 만든다.

나는 ~/scripts/wifi-volume-control.sh 로 만들었다.

#!/bin/bash

TARGET_SSID="????"
CURRENT_SSID=$(networksetup -getairportnetwork en0 | cut -d ':' -f2 | xargs)

if [ "$CURRENT_SSID" == "$TARGET_SSID" ]; then
  osascript -e "set volume output volume 0"
fi

 

TARGET_SSID 의 물음표 자리에 1번에서 확인한 Wi-Fi 이름을 넣어준다.

 

[#!/bin/bash]
스크립트 중 1번 라인의 #!/bin/bash 는 스크립트를 어떤 셸로 실행할지를 지정하는 것으로, 스크립트가 정상적으로 실행되게 해주는 역할을 한다.
#!/bin/bash가 없으면 터미널에서 직접 스크립트를 실행할 때 bash를 명시적으로 지정해야 하거나 시스템이 기본 셸 (sh나 zsh)을 사용하여 실행하려 할 수 있는데 이때 bash 전용 문법이 포함되어 있으면 오류가 발생할 수 있다.

 

 

 

 

3. 실행 권한 부여

chmod +x ~/scripts/wifi-volume-control.sh

 

이 명령어로 우리가 만든 스크립트를 실행할 수 있게 만들어준다.

기본적으로 스크립트 파일은 실행 가능하지 않아서 실행하려면 권한을 부여해야 한다.

실행 권한이 없으면 Permission denied 오류가 발생할 수 있다.

 

[chmod +x의 뜻]
  • chmod: 파일이나 디렉터리의 권한을 변경하는 명령어
  • +x: 실행 권한을 추가. 해당 파일을 실행 가능한 상태로 만든다.

 

 

 

 

 

4. launchd 등록 파일 생성

아쉽게도 macOS에서 와이파이 변경 감지하는 공식 이벤트 트리거가 없다.

이를 감지하려면 Swift나 Objective-C로 네트워크 이벤트 감시를 해주어야 하는데 굳이 이렇게 까지 할 필요 없으니 간단하게 30초 주기로 와이파이 이름을 확인해 줄 것이다.

30초마다 Wi-Fi 상태를 확인하는 건 SSID 한 줄 읽어서 조건 검사하는 아주 가벼운 작업이기 때문에 30초마다 체크해도 시스템에 부담은 전혀 없다.

 

터미널에 다음 명령 입력:

nano ~/Library/LaunchAgents/com.user.wifi-volume-control.plist

 

 

 

열린 nano편집기에서 다음 내용 작성:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>Label</key>
    <string>com.user.wifi-volume-control</string>
    <key>ProgramArguments</key>
    <array>
      <string>/bin/bash</string>
      <string>/Users/YOUR_USERNAME/scripts/wifi-volume-control.sh</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>StartInterval</key>
    <integer>30</integer> <!-- 30초마다 실행 -->
  </dict>
</plist>

 

* 중간에 YOUR_USERNAME 부분을 사용자 이름으로 바꿔준다.

* 이건 nano 편집기로 열었지만 vim, TextEdit, Xcode 어떤 걸로 열건 상관없다.

 

[nano 조작법]
  • control + O (쓰기/저장) → 엔터
  • control + X (종료)

 

 

 

 

 

5. launchd로 등록하기

마지막으로 다음 명령어를 터미널에 입력한다.

이 명령어는 macOS의 launchd 시스템에 내가 만든 자동화 작업(=launch agent)을 등록하는 명령어이다.

launchctl load ~/Library/LaunchAgents/com.user.wifi-volume-control.plist

 

 

 

 

 

 

6. 확인

볼륨을 1 이상으로 설정한 후, 잠시 후 볼륨이 다시 0으로 잘 변경되는지 확인해 보자.

 

 


 

 

그런데 이 작업을 하는 중간에 맥북이 기본 제공하는 Shortcuts로 이 기능을 쉽게 설정할 수 있다는 걸 알게 되었다.

이왕 시작했으니 끝까지 하긴 했지만 스크립트는 Wi-Fi 상태 변경을 감지하지 못하기도 하고(Shortcuts로는 Wi-Fi 상태가 변경될 때를 음량 변경을 해주기 때문에..), 굳이 스크립트를 만들어서 할 필요 없는 것 같다.