前言
由于家里和公司的WIFI使用的网段不同,所以每次换地方,树莓派都要接显示器去换地址。下文列出的方法可以使树莓派开机根据连接的wifi自动更换所需固定地址。
一、设置WIFI连接
编辑文件wpa_supplicant.conf
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
在最后添加
network={
ssid="myhome"
psk="home1234"
key_mgmt=WPA-PSK
}
#可添加多个
network={
ssid="myoffice"
psk="office1234"
key_mgmt=WPA-PSK
}
Ctrl + o保存,Enter确认,Ctrl + x退出
二、创建dhcpcd配置文件
将 /etc/dhcpcd.conf 复制三份
sudo cp /etc/dhcpcd.conf /etc/dhcpcd.conf.default
sudo cp /etc/dhcpcd.conf /etc/dhcpcd.conf.office
sudo cp /etc/dhcpcd.conf /etc/dhcpcd.conf.home
配置各wifi所需固定地址
sudo nano /etc/dhcped.conf.office
在最后添加
interface wlan0
#改为你的IP地址/掩码
static ip_address=192.168.31.200/24
#改为你的网关
static routers=192.168.31.1
#改为你需要的DNS
static domain_name_servers=61.139.2.69 114.114.114.114
Ctrl + o保存,Enter确认,Ctrl + x退出
另一个文件同理配置
三、新建python文件
sudo nano /home/pi/Documents/change_wlan_address.py
写入内容
# -*- coding:utf-8 -*
import os,time
def get_ssid():
result = os.popen('sudo iwconfig wlan0').read()
result = result.replace(' ','\n')
for i in result.split('\n'):
if 'ESSID' in i:
ssid = i.split(':')[1].replace('"','')
return ssid
def check_ssid():
ssid = get_ssid()
while ssid == 'off/any':
time.sleep(1)
ssid = get_ssid()
return ssid
if __name__ == '__main__':
ssid = check_ssid()
if ssid == 'myoffice':
os.system('sudo cp /etc/dhcpcd.conf.office /etc/dhcpcd.conf')
elif ssid == 'myhome':
os.system('sudo cp /etc/dhcpcd.conf.home /etc/dhcpcd.conf')
else:
os.system('sudo cp /etc/dhcpcd.conf.default /etc/dhcpcd.conf')
os.system('sudo wpa_cli -i wlan0 reconfigure')
Ctrl + o保存,Enter确认,Ctrl + x退出
四、设置开机启动
方法一(无需启动桌面):
编辑文件
sudo nano /etc/rc.local
在exit 0 前添加一行,输入以下内容
sudo python /home/pi/Documents/change_wlan_address.py
Ctrl + o保存,Enter确认,Ctrl + x退出
方法二(启动桌面后运行):
新建文件夹与文件
sudo mkdir /home/pi/.config/autostart
cd /home/pi/.config/autostart
sudo nano change_address.desktop
输入以下内容
[Desktop Entry]
Name=change_wlan_add
Comment=My Python Program
Exec=sudo python /home/pi/Documents/change_wlan_address.py
Terminal=false
Type=Application
Categories=Application;Development;
StartupNotify=true
Ctrl + o保存,Enter确认,Ctrl + x退出
五、重启
sudo reboot