Linux技巧——(树莓派网络配置)为不同的wifi设置静态IP
  qtXLdRy0Aal5 2023年11月19日 25 0

参考文献: 树莓派开机自动连接wifi设置,并修改静态IP 树莓派为连接不同Wifi分配固定IP的方法 树莓派根据不同WIFI的SSID自动更换固定IP地址 为了在不同的地方(实验室and寝室,and others)使用树莓派,但不同地方的wifi网段不同,所以每次换地方,树莓派都要接显示器去换地址,非常麻烦,特别是遇到没有台式的时候则直接变成麻瓜,根据上述参考文献,找到了可以使树莓派开机根据连接的wifi自动更换所需固定地址的方法。为了防止遗忘,特此记录。

1 设置可接入的wifi

方法一

通过右上角图标处修改,略

方法二

修改配置文件/etc/wpa_supplicant/wpa_supplicant.conf 其中最上面:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=US

为原有字段,country可修改为对应国家,可参考:Country Code List 在文件中加入如下字段:

network={
	ssid="TP-LINK_292D"
	psk="tttttttt"
	key_mgmt=WPA-PSK
	priority=1
}

network={
	ssid="CMCC-6HH6"
	psk="tttttttt"
	key_mgmt=WPA-PSK
	priority=0
}

ssid是WiFi名,psk是密码,priority是优先级,数字越大优先级越高,key_mgmt可以不用管,在文件中可以添加多个网络的信息。 tips:远程可以直接打开文件另存为,然后在终端复制过去

sudo cp wpa_supplicant.conf /etc/wpa_supplicant/wpa_supplicant.conf

2 设置静态IP(单个wifi)

2.1 example

参考文件/home/pi/dhcpcd/dhcpcd.conf,其中有配置静态IP例子:

# Example static IP configuration:
#interface eth0
#static ip_address=192.168.0.10/24
#static ip6_address=fd51:42f8:caae:d92e::ff/64
#static routers=192.168.0.1
#static domain_name_servers=192.168.0.1 8.8.8.8 fd51:42f8:caae:d92e::1

2.2 通过ifconfig查看网卡名称(wlan0):

Linux技巧——(树莓派网络配置)为不同的wifi设置静态IP_树莓派

2.3 通过route查看路由(192.168.0.1)

Linux技巧——(树莓派网络配置)为不同的wifi设置静态IP_python_02

2.4 配置文件

参考dhcpcd.conf的例子配置静态IP,在文件最后加上:

interface wlan0
static ip_address=192.168.0.251/24
static ip6_address=fd51:42f8:caae:d92e::ff/64
static routers=192.168.0.1
static domain_name_servers=192.168.0.1 119.29.29.29 fd51:42f8:caae:d92e::1

其中:DNS选择可参考:有哪些好用的DNS?

3 根据不同WIFI的SSID自动更换固定IP地址

3.1 创建dhcpcd配置文件

将 /etc/dhcpcd.conf 复制多份到自定义文件夹中(home/pi/dhcpcd),我这里根据路由重命名

sudo cp /etc/dhcpcd.conf /home/pi/dhcpcd/dhcpcd.conf.default
sudo cp /etc/dhcpcd.conf /home/pi/dhcpcd/dhcpcd.conf.192_168_0_1
sudo cp /etc/dhcpcd.conf /home/pi/dhcpcd/dhcpcd.conf.192_168_1_1

对非default文件按上述方法设置静态IP,如在dhcpcd.conf.192_168_0_1文件最后加上:

interface wlan0
static ip_address=192.168.0.251/24
static ip6_address=fd51:42f8:caae:d92e::ff/64
static routers=192.168.0.1
static domain_name_servers=192.168.0.1 119.29.29.29 fd51:42f8:caae:d92e::1

3.2 基于python根据不同WIFI的SSID自动更换固定IP地址

任意位置(/home/pi/dhcpcd)新建python文件(dhcpcd_config.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 == 'TP-LINK_292D':
      os.system('sudo cp /home/pi/dhcpcd/dhcpcd.conf.192_168_0_1 /etc/dhcpcd.conf')
  elif ssid == 'CMCC-6HH6':
      os.system('sudo cp /home/pi/dhcpcd/dhcpcd.conf.192_168_1_1 /etc/dhcpcd.conf')
  else:
      os.system('sudo cp /home/pi/dhcpcd/dhcpcd.conf.default /etc/dhcpcd.conf')
  os.system('sudo wpa_cli -i wlan0 reconfigure')

3.3 设置开机启动

方法一(无需启动桌面):

编辑文件:/etc/rc.local,在exit 0 前添加如下内容即可:

sudo python /home/pi/dhcpcd/dhcpcd_config.py

方法二(启动桌面后运行,未验证):

新建文件夹与文件:

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退出

4 重启树莓派完成配置

sudo reboot

如果是远程,重启后通过配置的静态IP重新登录。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月19日 0

暂无评论

推荐阅读
  tprTMCWDkFAR   2023年12月08日   13   0   0 PythonCode
  Vn37uiKQIsdv   2023年12月06日   13   0   0 网络层链路IP
  tprTMCWDkFAR   2023年12月06日   23   0   0 用户名APIIP
qtXLdRy0Aal5