本文原文名:记在路由器中实现热点自动认证

本文主要记录我在路由器中实现热点自动认证的过程,由于一些原因,本文不讨论程序。

本文主要提及以下内容。

1.使用 U 盘扩展 OpenWrt 路由器的存储空间并安装 Python 2.解决 Python 无法加载共享库 libpython2.7.so.1.0 3.将脚本注册为启动项

一些约定

系统:LEDE(OpenWrt)

内存:128M

存储体:128M

U 盘:/dev/sda

U 盘挂载点:/mnt/usb

OpenWrt 挂载 USB

安装软件包

以下为必要包:

opkg update #更新源

opkg install kmod-usb-ohci #支持部分USB芯片的驱动

opkg install kmod-usb2 #USB2.0驱动

opkg install kmod-usb-storage #USB储存驱动

opkg install block-mount #挂载程序(安装完成后重启会在LuCI界面的System下出现Moint Point选项)

opkg install kmod-fs-ext4 #支持EXT4分区格式

以下包为选装:

opkg install kmod-fs-vfat #挂载FAT

opkg install kmod-fs-ext2 #安装ext2分区支持

opkg install ntfs-3g #挂载NTFS

opkg install kmod-fs-ntfs #ntfs内核驱动

opkg install e2fsprogs #分区格式化工具

挂载 U 盘分区

在挂载 U 盘前,需要将 U 盘格式化为 EXT4(mkfs.ext4 /dev/sda),因为 FAT 无法支持软连接,后期安装一些软件会报错。

两种方法均可实现功能,既可以在 LuCI 界面下进入 System -> Moint Point 下挂载 U 盘,也可以执行 mount /dev/sda /mnt/usb。

设置 Opkg 安装目录

修改 opkg 配置文件(vi /etc/opkg.conf),在 dest root/ 下添加一行,保存退出。

dest usb /mnt/usb/optware

配置环境变量

修改文件(vi /etc/profile),在相关位置增加两行,保存退出。

export LD_LIBRARY_PATH=/mnt/usb/optware/usr/lib:/mnt/usb/optware/lib

export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/mnt/usb/optware/usr/bin:/mnt/usb/optware/usr/sbin

使环境变量生效(source /etc/profile)

安装 Python

使用源安装

如果你的路由器系统 opkg 源没有问题,直接安装到 U 盘就好,也推荐直接安装,编译安装可能会有其他问题。

opkg install python -d usb

等待安装完成即可。

一个小问题

笔者这样安装之后,在终端中执行 python 命令,没有问题,但加载到启动项后就就会报找不到 Python,如果你指定一下 Python 的

路径,加载到启动项又会出现如下问题。

Error loading shared library libpython2.7.so.1.0: No such file or directory (needed by /mnt/usb/optware/usr/bin/python2.7)

Error relocating /mnt/usb/optware/usr/bin/python2.7: Py_Main: symbol not found

最终笔者是采用建立软连接解决以上问题的。

ln -s /mnt/usb/optware/usr/bin/python /usr/bin/python

ln -s /mnt/usb/optware/usr/lib/libpython2.7.so.1.0 /usr/lib/libpython2.7.so.1.0

分别在系统存储中建立 Python 程序和其动态链接库的软连接。这样就可以在启动项中正常启动 Python。

加载启动项

这里说两个方法

注册启动项

编辑 rc.local(vi /etc/rc.local),直接把命令写入到 exit 0 之前即可,或在 LuCI 中完成相关操作。

注册服务

这时需要为这个服务写一个自启动脚本放在 /etc/init.d/ 目录下,一个服务大概有启动、重启两个选项,当然你也可以自己定义,下面是一个例子(drcom)。

#!/bin/sh /etc/rc.common

START 是启动优先级,STOP 是关闭优先级,这个决定在启动或在关闭的过程中服务执行的先后顺序,比如你一些程序放在 U 盘里,就需要在挂载 U 盘服务启动之后再去执行这个服务。

START=99

STOP=15

start(){

# 启动程序,把输出和错误都重定向到了/dev/null

python /mnt/usb/drcom/dr.py >/dev/null 2>&1

}

stop(){

# 停止

}

然后 enable 一下(/etc/init.d/drcom enable),你会发现 /rc.d/ 中新增了一个这个脚本的软连接,到此自启动服务配置成功。

后记

大概这就是我周末做的一些微小的事情,主要是分享经验,感谢我的一些朋友给我的帮助,由于知识水平有限,本文可能有些许问题,欢迎在留言区批评指正。

路由器运行python脚本_在路由器中运行Python相关推荐

  1. cmd中如何运行python文件_在cmd中运行.py文件: python的操作步骤

    在cmd中运行.py文件: python的操作步骤 1 打开cmd, 不改变运行的目录: 输入python 空格  调试好的python文件路径 或者python 空格  将python文件拖入cmd ...

  2. latex附录中放python代码_在Latex中插入Python代码

    这里指的插入是指最终能在生成的pdf中显示高亮的Python代码. 在Latex中插入Python代码,需要一个第三发的宏包pythonhighlight: https://github.com/ol ...

  3. 在vim中写python程序_在Vim中运行Python代码

    在Vim中运行Python代码 我正在使用Vim编写Python代码,每次我想运行我的代码时,我都会在Vim中输入: :w !python 这令人沮丧,所以我一直在寻找一种更快的方法来在Vim中运行P ...

  4. ipython下怎么运行py文件_在IPython中执行Python程序文件的示例

    简单使用了一下之后,我觉得如果有机会(公司里面编码是极不自由的,也无所谓,我在公司不做数据分析),我肯定是更喜欢使用IPython作为我的Python shell环境了.简单的接触发现了不少我喜欢的功 ...

  5. html 展示 python结果_在HTML中显示Python值

    如何在html中显示python变量的值(在这种情况下,它是我的Entity类的键)? from google.appengine.ext import db class Entity(db.Expa ...

  6. ubuntu执行python脚本_在启动时运行python脚本作为守护进程(Ubuntu)

    除了gg.kaspersky方法,您还可以将脚本转换为"服务",以便您可以使用以下命令启动或停止它: $sudo service myserver start * Starting ...

  7. vscode python环境_在vscode中配置python环境

    原博文 2019-09-27 22:55 − 1.安装vscode和python3.7(安装路径在:E:\Python\Python37): 2.打开vscode,在左下角点击设置图标选择settin ...

  8. 大学抢课python脚本_两天时间挑战python实现广州大学抢课?(抢课篇)(第二次修改补充)...

    最后一天,明天就抢课了.昨天弄完搜索后(没看前面两篇的同学可以进入我的主页查看),差最后一步提交,因为最后一步提交数据操作有点特殊,留到今天来写. 正当我们想愉快地完成最后一步提交的抓包时,看到 禁选 ...

  9. xvfb运行java脚本_Python-如何在Xvfb中运行Selenium?

    我在EC2实例上.因此没有GUI. $pip install selenium $sudo apt-get install firefox xvfb 然后我这样做: $Xvfb :1 -screen ...

  10. java执行python脚本_通过Java调用Python脚本

    在进行开发的过程中,偶尔会遇到需要使用Java调用Python脚本的时候,毕竟Python在诸如爬虫,以及科学计算等方面具有天然的优势.最近在工作中遇到需要在Java程序中调用已经写好的Python程 ...

最新文章

  1. Linux 下 Jni 实现
  2. 性能分布式NewLife.XCode对无限数据的支持
  3. 数据采集技术python网络爬虫答案_高校邦网络数据采集与Python爬虫【带实验】章节答案...
  4. Web网络知识:什么是HTTP请求合并?
  5. JSON字符串和对象之间的转换
  6. 小小数据统计(柱状图、折线图、扇形图)
  7. 拼多多上线“医药健康日” 将对最常用的OTC药品等进行补贴
  8. 上百篇论文概览『负采样方法』的前世今生
  9. 小程序入门学习03--navigator组件
  10. Git(1):一个能够快速下载Git.exe的方法
  11. Google Earth 使用的经纬度格式及转换
  12. 强化学习入门1—多臂老虎机Multi-armed Bandits
  13. 资源小屋(更新ing.......)
  14. windows软件窗口或者对话框太大超出屏幕解决办法
  15. 非谓语动词 + 情态动词学习笔记
  16. 电脑PC端微信提示:你的微信崩溃次数较多,建议使用最新版本
  17. sd卡测速工具_SD卡数据恢复教程与恢复方法
  18. 阿里云短信服务使用介绍
  19. pwn libc找偏移的在线网站
  20. 计算机桌面提示区,电脑如何设置多时钟显示?电脑设置不同地区时钟时间显示方法...

热门文章

  1. Java实现 LeetCode 134 加油站
  2. 计算机会计课程设计范文,会计课程设计心得体会范文
  3. flex: 1到底是什么意思?
  4. PHP显示了验证码但不能登陆,thinkphp5 登陆后台验证码无法显示
  5. PHPNow 本地服务器安装
  6. 做了5年研发效能度量,我的6点思考
  7. 15、作用域public、private、protected 以及不写时的区别
  8. 【路在脚下】----成长的感觉
  9. c++读写json,JsonCpp配置
  10. javacc jjtree 写法 以及 jj写法 基本语法 以及应用