Плата: Raspberry Pi 4
ОС: Raspbian Buster Lite
ОС ПК: Linux Mint 19.1
У меня есть веб-интерфейс PHP, в котором пользователь может выбрать DHCPIP и введите SSID и пароль, или пользователь может выбрать статический IP и ввести IP, шлюз, DNS и маску подсети.
Эти учетные данные сохраняются в файле network_configuration.txt
.
Затем программа на C ++прочитает все строки из network_configuration.txt
и запишет их в dhcpcd.conf
или wpa_supplicant.conf
.
Для статического IP dhcpcd.conf
будет выглядеть так:
interface wlan0
hostname MyDesiredName
clientid
persistent
option domain_name_servers, domain_name, domain_search, host_name
option classless_static_routes
option interface_mtu
require dhcp_server_identifier
interface eth0
static ip_address=192.168.1.20/24
static routers=192.168.1.1
static domain_name_servers=8.8.8.8
и wpa_supplicant.conf
будет выглядеть следующим образом:
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
После того, как произошла перезапись, и только если это произошло, вызов system()
произойдет:
system("ip link set eth0 down && ip link set eth0 up && ip link set wlan0 down");
Для DHCP IP wpa_supplicant.conf
будет выглядеть следующим образом:
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
#Wireless Network Credentials
network={
ssid="myssid"
psk="Passwordl123"
}
и dhcpcd.conf
будут выглядеть следующим образом:
interface wlan0
hostname MyDesiredName
clientid
persistent
option domain_name_servers, domain_name, domain_search, host_name
option classless_static_routes
option interface_mtu
require dhcp_server_identifier
После того, как произошла перезапись, и только если это произошло, вызов system()
происходит:
system("ip link set wlan0 down && ip link set wlan0 up && ip link set eth0 down");
Проблема, с которой я столкнулся, заключается в том, что, хотя статический IP-адрес работает отлично, переключение на DHCP-IP не происходит, поскольку Raspberry не получитАйпи адрес.Выполнение sudo reboot
сверх ssh
исправляет это.
У меня есть только пара вопросов:
Первое: почему Raspberry не получает IP-адрес?
Секунда: Я знаю, что делаю что-то вроде обезьяны, потому что это мой текущий уровень, но есть ли другой способ, «лучший», «умный» способделать то, что я пытаюсь сделать?