Debian ブレーカーがあります。私の使命は、Wi-Fiをオンにして承認する前にアクセスポイントに接続することです。このためにサービスを使用したいと思いますsystemd
。私はスクリプトを書いた:
/usr/sbin/ip link set wlo1 up
/usr/sbin/wpa_supplicant -B -D wext -i wlo1 -c /etc/wpa_supplicant.conf
/usr/sbin/dhclient wlo1
サービスで実行すると、systemd
スクリプトが正常に実行されたことが示されます。ただし、ユーザー認証を受けた後は、WLANの状態はDOWNです。そう言ってみてくださいip a show wlo1
。たとえば、次のようにping 8.8.8.8
言いますconnect: Network is unreachable
。
スーパーユーザー権限を持つユーザーとして手動で実行すると、WLANステータスが正常に設定されアクセスポイントに接続されるため、スクリプトが機能する必要があります。
私のシステムサービス:
[Unit]
BindsTo=sys-subsystem-net-devices-wlo1.device
After=sys-subsystem-net-devices-wlo1.device
[Service]
Type=oneshot
ExecStart=/path/to/my_script.sh
[Install]
WantedBy=multi-user.target
明確にします。私のsystemd
サービスは期待どおりにシステム起動時に開始されます。systemctl status
サービスがサイトのすべてのコマンドを完了し、ExecStart
操作が正常に完了したことを示します。他の方法で問題を解決する方法を知りたくありません。この方法がなぜ機能しないのか知りたいです。
答え1
デフォルトは、スクリプトが終了すると、指定されたようKillMode=control-group
にsystemdがプロセスを終了することです。wpa_supplicant
使い捨てタイプデバイスが非アクティブになります。