工具:
- 一台Android手机
- 一台unix系电脑-物理机(Mac/Linux/树莓派
- 电脑需要24小时开机
本文使用环境:
华为nova3一台,树莓派4b一台(centos7.9 aarch 64)
思路:
- 使用adb调试工具模拟点击
- 通过shell脚本实现自动化
- shell搭配crontab实现无人化
- shell搭配sendemail实现高可用
一、安装adb
首先先了解adb工具是什么:
Android 调试桥 (adb)
Android 调试桥 (adb) 是一种功能多样的命令行工具,可让您与设备进行通信。adb 命令可用于执行各种设备操作(例如安装和调试应用),并提供对 Unix shell(可用来在设备上运行各种命令)的访问权限。它是一种客户端-服务器程序,包括以下三个组件:
客户端:用于发送命令。客户端在开发计算机上运行。您可以通过发出 adb 命令从命令行终端调用客户端。
守护程序 (adbd):用于在设备上运行命令。守护程序在每个设备上作为后台进程运行。
服务器:用于管理客户端与守护程序之间的通信。服务器在开发机器上作为后台进程运行。
adb 包含在 Android SDK 平台工具软件包中。
#yum安装adb
yum install android-tools -y
#测试
adb devices
#List of devices attached
#MCQ4C18420007774 device
二、shell脚本
1> 主要部分是执行adb命令
#新建shell脚本
vim daka.sh
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
#检测设备
adb devices
sleep 2s
#亮屏
adb shell input keyevent 26
sleep 2s
#返回桌面
adb shell input keyevent 3 #HOME事件
sleep 2s
#返回主页
adb shell input keyevent 3
sleep 2s
#点击指定坐标(USB链接方式
adb shell input tap 540 1670
sleep 5s
#点击指定坐标(钉钉
adb shell input tap 200 1400
sleep 15s
#点击指定坐标(多任务管理
adb shell input tap 310 2215
sleep 5s
#点击指定坐标(清理任务
adb shell input tap 540 2020
sleep 5s
#返回主页
adb shell input keyevent 3 #HOME事件
sleep 2s
#熄屏
adb shell input keyevent 26
#主要命令
#adb devices #设备检测
#adb shell input keyevent 26 #熄屏亮屏事件
#adb shell input keyevent 3 #HOME事件
#adb shell input tap x y #模拟点击事件
#模拟点击位置 x y 通过打开usb调试-显示指针位置 调试查看
2> 为了体现随机性,我们前置一个默认随机等待时间(每天同一时间打卡也太夸张了
#随机等待0-1700秒
after=$(($RANDOM%1700))
sleep $after
三、定时任务
这个很简单,设置一个时间启动脚本
#查看现有定时任务
crontab -l
#编辑定时任务
crontab -e
#上午8点半
30 8 * * * /root/daka.sh
#报错请添加PATH
30 8 * * * . /etc/profile;/bin/sh /root/daka.sh
这样,一个9点上班的任务就完成了
8点30启动,1700秒内随机打卡
四、监控和维护
在正式运行中,会出现很多问题。
比如数据线被扫地阿姨拔掉了,办公室断电了,断网了
遇到这种情况我们要及时知晓,方便补救
那么我们可以在执行定时任务的时候
自动发送监控邮件,来保证我们对系统运行的掌控
smtp就不多说了,还有端口之类的,网上很多,自行查阅
#安装sendEmail
yum install sendemail -y
编辑脚本
vim daka.sh
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
account='xxxxx@163.com'
smtp='smtp.163.com'
password='123456'
to='xxxxxxx@qq.com'
subject='自动打卡启动提示'
after=$(($RANDOM%1700))
content="自动打卡任务开始启动 |<br>任务目标:上班 |<br>预计将于$after秒/"`expr $after / 60`'分钟后执行 |'
sendemail -f $account -t $to -s $smtp -u $subject -o message-content-type=html -o message-charset=utf8 -xu $account -xp $password -m $content
这样每天我们就会收到提醒邮件
提醒我们系统已经运行
如果到了时间没有收到邮件
就要赶紧跑到公司打卡排查故障
那么如果是代码出现了问题怎么办呢?
我们可以通过$?来检测脚本执行情况
#检测运行案例
#亮屏
adb shell input keyevent 26
step1=$?
#返回桌面
adb shell input keyevent 3 #HOME事件
step2=$?
echo $setp1$step2
#如果运行成功,$?返回0,否则返回其他数值
#成功返回:0-0
#失败返回 255-255
同样,我们可以检测到脚本运行状态后
也可以发送邮件来监控是否执行成功
content="自动打卡任务已完成 |<br> 执行结果:$setp1-$step2"
sendemail -f $account -t $to -s $smtp -u $subject -o message-content-type=html -o message-charset=utf8 -xu $account -xp $password -m $content
结语:
认真上班通过劳动换取报酬
上班摸鱼才是从老板那赚钱
好好摸鱼,天天向上
抵制996,从我做起
/dog
写这篇文章的目的更多是学习,分享
不是让懒狗抄作业的
所以完整的代码我不会贴出来
截张图供参考,动手才能出技术
抄作业都懒得动手的懒狗给👴爬
更新:
- 云服务器也可以接usb,但是要有本地机器,所以脱裤子放屁的事少做
- iOS系统可以通过快捷指令直接执行,所以脱裤子放屁的事少做
- 设置钉钉的极速打卡,打开app自动打卡,所以脱裤子放屁的事少做
- 非想要脱裤子放屁,可以自己加上滑动操作等等,自行查阅
- 其实电脑可以不用24小时开机,通过设置(mac)或者修改bios,或者网卡远程,等等等等一堆办法,有空可以单开一章讲讲
- 延伸去想,不只是自动打卡,自动抢红包,游戏自动挂机,抢购商品等等等等,应用很多
最后截张图
最后,有问题或者想交流,请在下方评论,留言,或者直接发邮件
Comments 4 条评论
博主 1467945465
这是一条私密评论
博主 root
@1467945465 第一:可以
第二:ios不太清楚,但是安卓如果改了,钉钉会报打卡异常
建议你买个6s以上的型号用快捷指令放公司
博主 1467945465
@root 这是一条私密评论
博主 root
@1467945465 可以,这个操作和服务器、笔记本无关,windows系统支持即可