树莓派打卡签到
实习要求:上班和下班必须要签到。我这么懒,实习是肯定要实习的,但是签到嘛,还是要想办法摸摸鱼的啦!
树莓派介绍
树莓派是一款信用卡大小的超小型电脑
那么我们有个大胆的想法,能不能用树莓派实现打卡的心愿呢。好歹也是个计算机,对吧。
树莓派的购买及组装
就我实际的使用而言,必需品:一块主板,网线,3个散热片,外壳,电源,16g sd卡,读卡器。
组装部分 https://projects.raspberrypi.org/en/projects/raspberry-pi-setting-up/4
大家拿着自己的板子(树莓派4)对照着图找就好了
装系统
我这里推荐大家装 Raspbian Buster with desktop 对于官网NOOBS系统我尝试过了,对于我们没有买显示器的而言,不友好,需要额外的操作。
系统下载完成,就需要烧录 这里需要先SD卡格式化,使用 SD Card Formatter(支持windows和mac)
烧录系统到sd卡
这里使用win32Diskimager
链接:https://pan.baidu.com/s/1loQPydCsw9Cam8Us2CbpxQ
提取码:wiis
复制这段内容后打开百度网盘手机App,操作更方便哦
烧录完成,组装完成。设置ssh连接,最新的系统默认是未开启ssh,这里我们需要设置开启ssh。将SD卡连接到电脑上并打开,直接新建“SSH”文件(无后缀)即可
算了,接下来还有网线什么的连接。写起来太长,都还没到主菜。详细的设置大家可以参考
https://blog.csdn.net/weixin_43895902/article/details/100919851#_142
就我出现的几个问题给大家说一下。
-
- ssh连接,我是在学校里,学校网络比较复杂。我是电脑使用无线连接手机热点,树莓派和电脑网线连接。无线网开启共享给有线。cmd中arp-a查看分配的ip,一般树莓派默认是192.168.137.x 默认密码
raspberry 用户名 pi
- ssh连接,我是在学校里,学校网络比较复杂。我是电脑使用无线连接手机热点,树莓派和电脑网线连接。无线网开启共享给有线。cmd中arp-a查看分配的ip,一般树莓派默认是192.168.137.x 默认密码
-
- 开启的vnc无法显示,这是因为你屏幕的分辨率问题,按教程修改就好
-
- 自己的树莓派下载很慢,这时需要设置软件源
-
- 不推荐大家使用swap分区,会有损sd卡的性能。装完系统默认是开启100mb的sd卡空间提供swap。
-
- 2021发现有一个gui的安装工具,大家google搜索 -树莓派推Raspberry Pi Imager工具- 即可
主菜到了,树莓派签到功能
树莓派直接放在公司里,有电有网,直接就能定位。除了让树莓派自动打卡,我还想让树莓派打卡完成之后给我发一封邮件。一步一步来
设置邮件功能
配置msmtp和mutt自动发送邮件
mutt: 是一个Linux下的邮件程序,Mutt 更像一个文件管理器,只不过它管理的是email
msmtp: 是Linux下一个非常简单易用的smtp客户端
#安装
sudo apt install msmtp mutt
# 配置msmtprc
cd ~ #进入用户根目录
touch msmtp.log #创建日志文件
chmod 600 msmtp.log #查看日志
touch .msmtprc #创建.msmtprc文件
chmod 600 .msmtprc #msmtprc权限
sudo nano .msmtprc #添加如下内容
account default
host smtp.163.com #需要开启163邮箱的SMTP服务
from xxx@163.com #你的邮箱地址
auth plain
user xxx@163.com #你的邮箱地址
password your_password #是SMTP授权码
logfile /root/msmtp.log # 在发送邮件之后程序会把发送日志写到这个路径的文件里
#配置mutt
cd ~
touch .muttrc
sudo nano .muttrc #添加以下内容,默认填就好了
set sendmail="/usr/bin/msmtp"
set use_from=yes
set realname="Alpha" #收件人名字
set from="xxx@163.com"
set editor="vim"
#测试
测试配置文件:msmtp -P
测试smtp服务器:msmtp -S
echo "你好,我是测试用的,谢谢" | mutt -s "你好啊" xxx@163.com
脚本定时/开机自启动
这个要单独列出来一下。因为一个脚本的核心还是自动化,方便实用。
#开机自启动
sudo nano /etc/rc.local
sudo bash /home/pi/sendmail.sh #我的sendmail.sh是开机发送自己的ip,文末会贴上
#定时任务
#cron进行定时器
crontab -e #编译定时任务
// 从左往右: 分 时 日 月 星期
# m h dom mon dow command
30 5 10 3 * touch /tmp/test.log // 表示每年3月10号5点30分,执行touch /tmp/test.log
10 18 * * * echo "Hello World" > /home/pi/log // 每天的18点10分执行echo "Hello World" > /home/pi/log
抓取定位包
我使用的是eteams打卡。
其中服务端做校验的就是sign。其他参数都是固定的。
尝试js中查找sign
encode.js链接: https://pan.baidu.com/s/1pTfADZwpctNxOVYFuSx_pQ 提取码: 2idi
JsParser("encode.js", "signSecret", "web"+uid+ETEAMSID+tenantkey)
至此基本打卡的大概流程走完了。
一些自己使用的脚本:
- 1.定时ip任务: #!/bin/bash
#!/bin/bash
# check network availability
# get the IP address of eth0, e.g. "192.168.16.5"
ETH0_IP_ADDR=`/sbin/ifconfig eth0 | sed -n "2,2p" | awk '{print substr($2,1)}'`
# send the Email
echo "Current time: `date '+%F %T'`. Enjoy it" | mutt -s "IP Address of Raspberry Pi: $ETH0_IP_ADDR" xxx@163.com
- 2.报告车况,车辆到站时间
TODO