2008-04-04
一个 Ubuntu获取铁通独立 IP 的脚本
关键字: ubuntu
我的铁通 ADSL 最近几天经常被铁通分配 10.*.*.* 的内网 IP,让我的 MLDonkey 基本上用不了。今天有空顺手写了个脚本自动测试 IP,如果是内网的就断线重拨,直到获得外网 IP 为止
Happy Hacking!
=begin
一个 Ubuntu Linux 下自动拨号获取铁通独立 IP 的脚本
作者:oldrev <oldrev@gmail.com>
授权: Public Domain
=end
require 'socket'
# 获取本机 IP 代码来自:
# http://www.javaeye.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!
- 23:08
- 浏览 (861)
- 评论 (0)
- 分类: Linux
- 进入论坛
- 发布在 Ubuntu For Fun 圈子
- 相关推荐
发表评论
提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则
- 浏览: 93690 次
- 性别:

- 来自: 昆明

- 详细资料
搜索本博客
我的相册
Screenshot
共 1 张
共 1 张
最近加入圈子
最新评论
-
Range Coding 的 D 实现 ...
引用oldrev 2008-01-12LZMA SDK 只是一个 LZMA 算法 ...
-- by oldrev -
D 静态数组初始化大bug ...
看看日期好伐?
-- by oldrev -
D新闻组里的天才代码
没看过产生的汇编代码,测试了是可行的。如果用宏来实现就完美了
-- by oldrev -
D新闻组里的天才代码
这里的lazy根本没推后evaluate吧? 这个的优化我看在于用了一条指令来决 ...
-- by DavidL -
D 静态数组初始化大bug ...
dmd 1.028编译成功!
-- by honglang13






评论排行榜