ネットワークサービスが開始される前にMacを変更する方法

ネットワークサービスが開始される前にMacを変更する方法

起動するたびに、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

あなたは試すことができます:

  1. サービスファイルでConditionPathExists=またはを使用するConditionPathExistsGlob=と、Wi-FiアダプタがUSBポートに接続されていない場合はスキップされます。
  2. *.pathサービスユニット自体を有効にするのではなく、Wi-FiアダプタをUSBポートに差し込むときにサービスが有効になるようにユニットを使用して有効にしてください。
  3. 上記の組み合わせです。

関連情報