네트워크 서비스가 시작되기 전에 Mac을 변경하는 방법

네트워크 서비스가 시작되기 전에 Mac을 변경하는 방법

시작할 때마다 Mac 주소를 Wi-Fi 어댑터로 변경하는 시스템 서비스가 있습니다. 시스템 서비스가 제대로 실행되고 있습니다. Wi-Fi 어댑터가 USB에 연결되어 있지 않을 때 서비스가 1분 30초 동안 기다리지 않기를 원합니다.

시스템 서비스([이메일 보호됨])는 시작 시 매우 일찍 로드됩니다...Before=network-pre.target

내 목표는 NetworkManager 서비스가 시작되기 전에 MAC을 변경하는 것입니다.

어떻게 해야 하나요?

[Unit]
Description=macchanger on %I
Wants=network-pre.target
Before=network-pre.target
BindsTo=sys-subsystem-net-devices-%i.device
After=sys-subsystem-net-devices-%i.device

[Service]
ExecStart=/usr/bin/macchanger -r %I
Type=oneshot

[Install]
WantedBy=multi-user.target

답변1

ExecStart=간단한 래퍼 스크립트를 변경 하고 작성합니다.

ExecStart=/usr/local/bin/macwrapper -r %I

그리고 에서는 /usr/local/bin/macwrapper(검증되지 않은!):

#!/bin/bash
# Set dev to your device name
dev="/dev/wifi"
# assume success
xit=0
if [[ -e "$dev" ]] ; then
    /usr/bin/macchanger $1 $2
    xit=$?
else
    logger -t macwrapper "MAC Not changed no device $dev"
# Don't save logger's status, don't  care
fi
exit $xit

읽다 man bash test logger.

답변2

당신은 시도 할 수 있습니다:

  1. 서비스 파일에서 ConditionPathExists=또는를 사용 ConditionPathExistsGlob=하면 Wi-Fi 어댑터가 USB 포트에 연결되어 있지 않으면 건너뛰게 됩니다.
  2. *.path서비스 유닛 자체를 활성화하는 것이 아니라 Wi-Fi 어댑터를 USB 포트에 꽂을 때 서비스가 활성화되도록 유닛을 사용 하고 활성화하십시오.
  3. 위의 조합입니다.

관련 정보