`
oldrev
  • 浏览: 233714 次
  • 性别: Icon_minigender_1
  • 来自: 昆明
社区版块
存档分类
最新评论

一个 Ubuntu获取铁通独立 IP 的脚本

阅读更多
我的铁通 ADSL 最近几天经常被铁通分配 10.*.*.* 的内网 IP,让我的 MLDonkey 基本上用不了。今天有空顺手写了个脚本自动测试 IP,如果是内网的就断线重拨,直到获得外网 IP 为止 

=begin
    一个 Ubuntu Linux 下自动拨号获取铁通独立 IP 的脚本
    作者:oldrev <oldrev@gmail.com>
    授权: Public Domain
=end

require 'socket'  

# 获取本机 IP 代码来自:
# http://www.iteye.com/topic/160284

# bits/ioctls.h  
SIOCGIFADDR    = 0x8915          # get PA address            

def get_ip_address(iface)  
    begin  
        sock = UDPSocket.new  
        buf = [iface,""].pack('a16h16')  
        sock.ioctl(SIOCGIFADDR, buf);  
        sock.close  
        buf[20..24] 
    rescue  
        nil  
    end  
end  

def getip
    get_ip_address('ppp0') #通常 ADSL 连接是 ppp0
end

def format_ip ip   
    if ip != nil then ip.unpack("CCCC").join(".") end
end

def recall
    puts "正在断开...."
    system 'poff dsl-provider'
    sleep 1
    puts "正在拨号...."
    system 'pon dsl-provider'
end

def needs_recall(ip)
    ip == nil || ip[0] <= 10 #内网 ip 通常是 10.*.*.*
end

if $0 == __FILE__ then
    ip = getip
    puts "当前 IP 地址是: #{format_ip(ip)}"

    if not needs_recall(ip) then
        puts "不需要重新拨号"
        exit()
    end

    while needs_recall(ip)
        recall
        sleep 4
        ip = getip
        puts "新 IP: #{format_ip(ip)}"
    end

end  



Happy Hacking!
分享到:
评论

相关推荐

    Ubuntu22开机自启脚本 jar 包的自动化部署脚本

    Ubuntu22开机自启脚本 jar 包的自动化部署脚本 文件里面有使用方法说明,脚本亲测可用init.shcp kuosheng.service /etc/systemd/system/kuosheng.servicecp kuosheng.sh /usr/local/bin/kuosheng.shchmod 777 /usr/...

    ubuntu图形界面配置IP步骤详解linux系统.doc

    网络管理器提供了一个图形界面,允许用户配置网络设置,例如 IP 地址、子网掩码、默认网关和 DNS 服务器的地址等。 Ubuntu 图形界面配置 IP 的应用场景 Ubuntu 图形界面配置 IP 地址有很多应用场景,例如: * ...

    ubuntu下创建热点的脚本

    这个名为"ubuntu下创建热点的脚本"的资源提供了一个便捷的方法来管理和控制笔记本电脑上的WiFi热点。通过运行两个简单的命令,用户可以快速开启或关闭热点。 脚本`ap.sh`是这个功能的核心。在Ubuntu系统中,它通常...

    Ubuntu系统备份用的脚本

    总的来说,"Ubuntu系统备份用的脚本"是一个实用的工具,它简化了系统管理员和普通用户在Ubuntu上的备份与恢复流程,增强了系统的可维护性和可靠性。对于那些依赖Ubuntu进行工作或研究的用户来说,这样的脚本是必不可...

    ubuntu镜像安装和启动脚本.zip

    这个"ubuntu.sh"安装脚本就是为了简化Ubuntu的安装过程而设计的。 首先,我们要理解什么是安装脚本。安装脚本是一种自动化工具,它通常由一系列命令组成,可以执行一系列预定义的任务,例如配置系统环境、安装...

    ubuntu系统更改ip

    2. 在文件中添加新的配置块,指定一个新的逻辑接口`eth0:1`,并为其配置静态IP地址。例如: ```plaintext auto eth0:1 iface eth0:1 inet static address ***.***.*.* netmask ***.***.***.* gateway ***.***.*.***...

    ubuntu自动安装nginx php脚本

    ubuntu自动安装nginx php脚本ubuntu自动安装nginx php脚本

    ubuntu下用python编写的修改IP地址和MAC的界面工具

    使用Ubuntu的时候,有时需要修改IP地址和MAC,而用命令行的形式会敲很多东西,用图形界面的方式又找不到什么地方能修改MAC,所以我写了这个小软件,可修改ubuntu的IP地址和MAC

    一键安装 Ubuntu Docker 脚本:简化部署流程,提高效率

    该一键安装脚本旨在帮助用户快速部署 Docker 环境于 Ubuntu 操作系统中,简化安装步骤,节省时间。通过此脚本,用户可以快速搭建 Docker 环境,轻松实现容器化部署,提高开发和部署效率。 适用人群: 熟悉 Ubuntu ...

    ubuntu20.04固定ip地址配置.pdf

    Ubuntu是一个以Debian为底层开发的开源Linux操作系统发行版,它以用户友好、稳定可靠而著称。固定IP地址(也称静态IP地址)是网络中分配给设备的一个特定地址,它不会在每次设备连接到网络时改变。这个地址允许设备...

    ubuntu9.04双网卡双IP配置方法

    本文将详细介绍 Ubuntu 9.04 双网卡双 IP 配置方法,解决了双线情况下只能 ping 通一个网卡的问题。 在 Ubuntu 9.04 系统中,配置双网卡双 IP 需要解决两个问题:一是配置两个网卡的 IP 地址和子网掩码,二是配置...

    ubuntu如何设置静态ip

    Ubuntu操作系统中设置静态IP是网络管理中的一项重要内容。静态IP是指在网络中分配给设备的固定IP地址,可以确保设备在网络中的唯一性和稳定性。今天,我们将详细介绍如何在Ubuntu中设置静态IP。 首先,让我们了解...

    ubuntu下安装xen的脚本

    ubuntu下安装xen的脚本 放在这里备份

    ubuntu20.04 tmux.sh 自启动脚本

    ubuntu tmux 自动执行shell脚本,可创建多个session,多个window。多个panes, 平铺所有的panes,对指定session下指定window的指定panes发送指定的多条命令,后台创建! 稍微修改可做成自己的自启动脚本,

    ubuntu18.04配置固定IP

    在Ubuntu 18.04操作系统中,配置固定IP地址是通过使用Netplan工具来实现的,这是一个用于配置网络接口的统一接口。Netplan在16.04版本之后被引入,取代了传统的ifupdown工具,使得网络配置更加简洁和灵活。以下是...

    ubuntu16.04安装mysql5.7脚本

    MySQL 5.7是该数据库管理系统的一个稳定版本,提供了许多性能改进和新特性。以下是关于使用脚本在Ubuntu 16.04上自动安装MySQL 5.7的详细步骤和相关知识点。 首先,你需要确保你的系统是最新的。运行以下命令更新...

    UBUNTU静态IP绑定MAC地址上网方法

    nameserver xxx.xxx.xxx.xxx # 添加第一个DNS服务器IP nameserver xxx.xxx.xxx.xxx # 如果有多个,添加第二个DNS服务器IP ``` 虽然这一步可能在重启后被覆盖,但在某些情况下,这有助于立即生效。 最后,我们通过...

    ubuntu更改IP的shell代码

    ubuntu更改IP的shell代码,自己写的,比较拙,请指正

    ubuntu自动挂载硬盘,u盘、sd卡脚本

    ubuntu自动挂载硬盘,u盘、sd卡脚本,后台自动执行本脚本,存储设备将自动挂载

    ubuntu实用脚本

    3. **集成adb push到脚本**: 在Ubuntu脚本中集成adb push,我们可以创建一个函数或者独立脚本,接受源文件路径和目标设备路径作为参数,然后调用adb push命令。这样可以避免每次手动输入完整的命令,减少错误发生的...

Global site tag (gtag.js) - Google Analytics