起動するたびに、MacアドレスをWi-Fiアダプタに変更するシステムサービスがあります。システムサービスが正しく実行されています。 Wi-FiアダプタがUSBに接続されていない場合、サービスは1分30秒待たないようにします。
システムサービス([Eメール保護])は起動時に非常に早くロードされます... 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ポートに差し込むときにサービスが有効になるようにユニットを使用して有効にしてください。- 上記の組み合わせです。