시작할 때마다 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
당신은 시도 할 수 있습니다:
- 서비스 파일에서
ConditionPathExists=
또는를 사용ConditionPathExistsGlob=
하면 Wi-Fi 어댑터가 USB 포트에 연결되어 있지 않으면 건너뛰게 됩니다. *.path
서비스 유닛 자체를 활성화하는 것이 아니라 Wi-Fi 어댑터를 USB 포트에 꽂을 때 서비스가 활성화되도록 유닛을 사용 하고 활성화하십시오.- 위의 조합입니다.