~ >: vim apps/tools/wifi_uplink 
#!/bin/sh

# Copyright (C) 2012 GuoWenxue <guowenxue@gmail.com QQ:281143292>

# This Shell scripts used to NAT by iptables, to make wlan0 as the downlink device

# and set the uplink device as eth0/ppp0, it will be called by crond

DOWNLINK_DEV="wlan0"

#可以改为ppp0

DEF_UPLINK_DEV="eth0"

#使能profile和ifcfg-wlan0文件

source /etc/profile

source $network_cfg_dir/ifcfg-$DOWNLINK_DEV

#在ifcfg-wlan0文件中有设置是否使用AP模式,如果没有就会在这里退出。

if [ $WORKMODE != AP ] ; then

   echo "$DOWNLINK_DEV doesn't work as AP mode, exit now..."

   exit

fi

#求出子网的网络地址,例如wlan0的子网的ip=192.168.2.1

NETWORK=`/bin/ipcalc -n $IPADDR_AP $NETMASK_AP`

DOWNLINK_SUBNET=${NETWORK##*=}

#set -x

#取得默认网关的网卡

#Current defaulte gateway out-going interface

cur_gateway_inf=`ip route show | grep default | sed -n '1p' | awk -F "dev" '{print $2}'`

#Current Uplink interface

cur_uplink_inf=`iptables -t nat -vnL POSTROUTING | grep $DOWNLINK_SUBNET | awk '{print $7}'`

#Initialise NAT or not

if [ ! -n "$cur_uplink_inf" ]; then

    iptables -A INPUT -i $DOWNLINK_DEV -j ACCEPT

    if [ -n "$cur_gateway_inf" ] ; then

        iptables -t nat -A POSTROUTING -s $DOWNLINK_SUBNET -o $cur_gateway_inf -j MASQUERADE

    fi

    exit

fi

if [ $cur_uplink_inf != $cur_gateway_inf ] ; then

   iptables -t nat -D POSTROUTING -s $DOWNLINK_SUBNET -o $cur_uplink_inf -j MASQUERADE

   iptables -t nat -A POSTROUTING -s $DOWNLINK_SUBNET -o $cur_gateway_inf -j MASQUERADE

fi

wifi_uplink脚本分析的更多相关文章

  1. iredmail安装脚本分析(一)---iRedmail.sh

    iredmail是一套以postfix为核心的整合邮件系统的安装脚本,可以达到快速部署邮件服务器的目的.为了让自己不遗忘shell的语法,所以闲来无事,学习一下他的代码. 我从官网下载他的最新版,解压 ...

  2. busybox rootfs 启动脚本分析(一)

    imx6文件系统启动脚本分析.开机运行/sbin/init,读取/etc/inittab文件,进行初始化. 参考链接 http://blog.163.com/wghbeyond@126/blog/st ...

  3. Spark 个人实战系列(2)--Spark 服务脚本分析

    前言: spark最近非常的火热, 本文不讲spark原理, 而是研究spark集群搭建和服务的脚本是如何编写的, 管中窥豹, 希望从运行脚本的角度去理解spark集群. 研究的spark为1.0.1 ...

  4. 实用防火墙(Iptables)脚本分析

    实用防火墙(Iptables)脚本分析 --Redhat,CentOS,Ubuntu等常见Linux发行版中都会预装Iptables防火墙,大多数初学者设置起来由于对这款软件比较陌生,设置起来比较困难 ...

  5. Hadoop的shell脚本分析

    你会发现hadoop-daemon.sh用于启动单独的本机节点 而hadoop-daemons.sh 会批量的ssh到别的机器启动 前记: 这些天一直学习hadoop,学习中也遇到了许多的问题,主要是 ...

  6. uboot 连接脚本分析

    一.脚本分析 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm ...

  7. HBase配置&启动脚本分析

    本文档基于hbase-0.96.1.1-cdh5.0.2,对HBase配置&启动脚本进行分析 date:2016/8/4 author:wangxl HBase配置&启动脚本分析 剔除 ...

  8. Spark配置&启动脚本分析

    本文档基于Spark2.0,对spark启动脚本进行分析. date:2016/8/3 author:wangxl Spark配置&启动脚本分析 我们主要关注3类文件,配置文件,启动脚本文件以 ...

  9. 一段shell脚本分析

    工作中碰到这样的需求: 1.每天定时要执行python脚本生成excel 2.将生成的excel拷贝到特定目录下 3.通过python发送脚本发送给特定的接收者 因为之前没有接触过shell脚本,同事 ...

随机推荐

  1. LRU Cache的简单c++实现

    什么是 LRU LRU Cache是一个Cache的置换算法,含义是“最近最少使用”,把满足“最近最少使用”的数据从Cache中剔除出去,并且保证Cache中第一个数据是最近刚刚访问的,因为这样的数据 ...

  2. java接口传递数据的实例

    我们要讲E类中的数据变化通知A类,这样通过接口F来实现.具体原理就是E的每次数据改变都让其通知接口:而A类继承接口,所以每次E的调用接口都会触发A类的数据更改事件的触发. 首先创建一个类E: publ ...

  3. CSS基础知识之float

    前段时间写过一篇CSS基础知识之position,当时对float的理解不太准确,被慕课网多名读者指出(原文已修正,如有误导实在抱歉).现对float进行更深入的学习,在此把学习心得分享给大家. 浮动 ...

  4. js-浏览器DOM

    1.window尺寸 适配所有浏览器的尺寸方案 var w=window.innerWidth|| document.documentElement.clientWidth|| document.bo ...

  5. oc随笔二:组合、继承

    在oc中如果没有使用ARC的话,手动管理内存一定要注意处理好“野指针”,通常我们在释放指针的指向的地址时,都要将指针赋值为nil,这样能有效的防止野指针.常用的关键字:retain.assign .s ...

  6. OD调试6—使未注册版软件的功能得以实现

    OD调试6—使未注册版软件的功能得以实现 本节使用的软件下载链接 (想动手试验的朋友可以下载来试试) 继续开始我OD调试教程的学习笔记. 本次试验对真正的程序进行逆向.(之前的都是为破解而专门设计的小 ...

  7. SQL Server类型与C#类型对应关系

    SQL类型 C#类型 bit bool tinyint byte smallint short int int bigint long real float float double money de ...

  8. 基于'sessionStorage'与'userData'的类session存储

    Storage.js: 注意:此版本实现的存储在符合Web存储标准(ie8及ie8以上的版本与其他主流浏览器)的情况下与session的周期一致,但在页面不关闭的情况下没有过期时间,ie7及以下版本则 ...

  9. hdu1272并查集入门

    小希的迷宫 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...

  10. hdu 3460

    算法:字典树 题意:给你一些单词,有一台打印机只能进行以下三种操作 1.读入 2.删除 3.打印 让你输出最少的操作次数将这些单词全部打印出来: (字典树节点-1)*2  表示读入和删除操作: 打印操 ...