起動スクリプト内でdhcpcd wlan0を実行したときにIPを取得できませんでした。

起動スクリプト内でdhcpcd wlan0を実行したときにIPを取得できませんでした。

Rasberry PI ZeroのRasbian。

ブート時にネットワーキングサービスとdhcpcdサービスを無効にしました。ネットワーキングを有効にし、カスタムsystemdサービスで開始された私のスクリプトからIPを取得したいと思います。

これは私を混乱させるスクリプトの一部です。

wpa_passphrase ssid password > /etc/wpa_supplicant/wpa_supplicant.conf
systemctl start networking.service
dhcpcd wlan0

スクリプトでdhcpcd wlan0を実行するとIPが割り当てられませんが(ログイン後にifconfigを使用)、起動してログインしてからsudo dhcpcd wlan0を実行するとIPが取得されます。これがタイミングの問題(network.serviceを待っている)か、スクリプトでdhcpcdを介してIPを取得するために別のタスクを実行する必要があるかを知っている人がいます。

また、いくつかの遅延(スリープ100)を追加し、dhcpcd wlan0の代わりにsystemctl start dhcpcdを実行してみました。

私はこれがこれを行う標準的な方法ではないことを知っていますが、ネットワークとdhcpcdを無効にしてスクリプトを起動すると起動がより効率的になります(より多くの起動を実行する前に起動/中断が減り、ネットワークなどを待つなど) 。私はスクリプトで多くのカスタム設定とインスタンス化を行います。

ヘンリク

答え1

私は自分で解決しました。

/etc/network/interfaces 構成ファイルを変更する必要があります。私は変わった:

auto wlan0
iface wlan0 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

到着する:

auto wlan0
iface wlan0 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

これはまた、スクリプトからdhcpcd wlan0行を削除できることを意味します。スクリプト内でネットワークサービスを起動しても、起動時にIPを取得します。

関連情報