①检查是哪一个接口来支持无线连接
sudo iwconfig
②启动无线网卡WLAN0
sudo ip link set wlan0 up
③扫描附近的无线网络
sudo iw dev wlan0 scan | less
④用下面的命令直接连接
sudo iw dev wlan0 connect [网络 SSID] key 0:[WEP 密钥]
#SSID就是无线网的名称,密钥就是无线网的密码。
简单讲下思路吧,判断是否断网,一般可以通过ping网关。如果不通则执行重启网络服务功能。我简单写了个bash,不知道debian的是ksh还是csh,所以仅供参考。
--------------
#!/bin/sh
#假设1.254是网关
host=192.168.1.254
ping -c2 $host >>/dev/null
#我觉得你最大的疑问就是这里,怎么判断网络是否正常。你可以搜一下shell的变量。
if [ $? -eq 0 ]then
echo “network is ok,exit...”
else
echo “network is down,now restart network services”
#centos linux的网络服务重启,根据你实际情况填写
#/etc/init.d/network restart
fi
如有疑问可以留言。
1、ping 的话可能会并网关屏蔽掉,ping www.baidu.com可以ping通就说明可以连外网;2、80 端口,有些需要认证的网络,比如 ChinaUnicom的 wifi,登录之前会把所有的 80 端口DNAT然后重定向到登录页面,导致误判。
3、 443 端口,一般认证的网络不会对这个端口 DNAT,即使做了,也会导致证书错误,国内 HTTPS 网站不多,而且百度正常情况下也会有 证书错误。
所以建议 wget/curl 某个有固定内容的 HTTP 页面,比如 http://example.com/(这个域名真的存在),然后判断其中的内容,如果检测到不同还可以提示用户"您所在的网络可能需要登录才能使用"。而且即使判断错了也与用户的体验一样。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)