兼职刷客在哪个网站做,中企动力做的网站后台怎么登录,ckplayer播放器如何安装到wordpress,图书馆网站建设公司找了个盒子刷了Armbian#xff0c;主要有两个作用#xff0c;一个是做离线下载和SMB。另外一个作用是用来搞打印服务器#xff0c;因为家里角落比较多#xff0c;因此有两个路由器信号#xff0c;而打印机所在的位置的wifi信号#xff0c;外网速度并不好#xff0c;因此…找了个盒子刷了Armbian主要有两个作用一个是做离线下载和SMB。另外一个作用是用来搞打印服务器因为家里角落比较多因此有两个路由器信号而打印机所在的位置的wifi信号外网速度并不好因此想到平时盒子做下载机就把盒子放到角落A需要打印就把盒子放到角落B然而不管是在角落A还是在角落B两个wifi信号都可以接受到但是我发现Armbian并不能主动切换到wifi信号更好的热点因此写一个脚本来切换wifi #!/bin/bash# 两个wifi的密码都一样
wifi_pwdxxxxxxxxxx# 定义函数:查询热点信号,参数是wifi ssid
get_wifi_signal() {local ssid$1echo 获取wifi:$ssid的信号情况wifi_signal#一个wifi名称,可能对应两项(5G/2.4G),awk同时过滤掉已经连接上的connect_status$(nmcli dev wifi list | grep $ssid | awk NR1 {print $1})if [ connect_status ! * ];thenwifi_signal$(nmcli dev wifi list | grep $ssid | awk NR1 {print $7})else# 说明当前行wifi是连接上的wifi_signal$(nmcli dev wifi list | grep $ssid | awk NR1 {print $8}) fi# 注意定义函数返回值时echo和return的区别和调用函数获取返回值的区别return $wifi_signal
}# 定义函数:查询当前连接的热点信息
get_current_connection() {# 查看当前连接的热点名称,当服务器存在多个网桥时,应注意过滤条件。保证查询到正确的信息current_conn$(nmcli device status | grep wlan0 | grep wifi | grep -v disconnected | awk {print $4})# 这里使用的是echo返回,调用方使用方式为 var$(get_current_connection)echo $current_conn
}# 定义切换wifi函数
switch_wifi() {# 查询两个热点的信号get_wifi_signal yun# 获取函数上一步的操作结果yun_signal$?get_wifi_signal apap_signal$?echo 搜到的热点信号强度[ap$ap_signal , yun$yun_signal]# 执行函数并得到当前连接的热点名称current_conn$(get_current_connection)if [ $current_conn ap ]; thenecho 当前连接的热点是[ap],判断当前热点信号强度是否小于[yun],如果小于切换到yun热点if [ $ap_signal -lt $yun_signal ]; thenecho 当前连接的热点信号小于另一个热点信号,切换到另一个热点nmcli device wifi connect yun password $wifi_pwdfielif [ $current_conn yun ]; thenecho 当前连接的热点是[yun],判断当前热点信号强度是否小于[ap],如果小于切换到ap热点if [ $yun_signal -lt $ap_signal ]; thenecho 当前连接的热点信号小于另一个热点信号,切换到另一个热点nmcli device wifi connect ap password $wifi_pwdfielseecho 当前未连接任何热点,准备连接信号最好的热点if [ $yun_signal -lt $ap_signal ]; thennmcli device wifi connect ap password $wifi_pwdelsenmcli device wifi connect yun password $wifi_pwd fifi
}#############Main###########
while true; doecho $(date %Y-%m-%d %H:%M:%S)开始执行热点检测,确保连上信号最好的热点# 检测是否有指定的两个或以上热点(考虑双频合一)wifi_countnmcli dev wifi list | grep -E yun|ap | wc -l#使用进行字符串比较时它区分大小写。如果不区分大小写的比较可以使用操作符if [ $wifi_count 1 ]; thenecho 只搜索到一个热点,判断热点是否已连接,随后执行操作# 执行函数并得到当前连接的热点名称current_conn$(get_current_connection)if [ -z $current_conn ]; thenecho 当前未连接热点,准备连接热点......# 前一个wifi连接成功不会连接下一个wifi,前一个wifi连接失败才会连接下一个wifinmcli device wifi connect ap password $wifi_pwd || nmcli device wifi connect yun password $wifi_pwd fielif [ $wifi_count 0 ]; thenecho 未搜到热点,不再处理elseswitch_wififisleep 600
done
把脚本放到crontab中执行就可以了可以使用crontab中可以使用reboot关键字
脚本大致意思是先查询预定义的两个wifi信号盒子是否能搜到,可以搜到一个预定义的热点则直接连接那个热点搜不到热点则不处理搜到了多个热点则准备执行热点切换。首先查询预定义的两个热点的信号是多少这里一定要注意查询条件需要符合自己盒子的情况然后查询当前连接的是哪个热点根据当前连接热点的信号情况判断是否需要切换热点。
以上整个动作的执行包含在while循环中10分钟执行一次