|
代码目的如下:
公司有一router与另一公司有专线连接,其IP为10.10.10.10,备注其IP域名地址我故意有更改,以下也一样
同时也负责了ADSL-MODEM后router功能.故其上会有一个公网的IP地址.不過此地址不是固定的,我们用如下perl程式获得其公
网的IP地址,这样可以去做一个mail server..其它的以后再谈.
cat /root/check_real_ip.pl
- #! /usr/bin/perl -w
- use Net::Telnet ();
- $t = new Net::Telnet (Timeout => 10,
- Prompt => '/ns5gt\-\> $/');
- $t->open("10.10.10.10");
- $t->login('Riverstar', 'linuxsir');
- @lines = $t->cmd("get interface");
- for($i = 0;$i < @lines;$i++)
- {
- if($lines[$i] =~ /^untrust/)
- {
- @fd = split(/\s+/,$lines[$i]);
- last;
- }
- }
- $fd[1] =~ s/\/\d+$//;
- print STDERR "my ip: " . $fd[1] . "\n";
- open OUT,"| /usr/bin/nsupdate";
- print OUT <<OUT_NSUPDATE;
- server 192.168.2.253
- local 192.168.5.112
- update delete mail.server.com.
- update add mail.server.com. 610 A ${fd[1]}
- send
- quit
- OUT_NSUPDATE
- close OUT;
- exit 0;
复制代码
以下是我telnet登录操作过程.
[root@shlinux root]# telnet 10.10.10.10
Trying 10.10.10.10...
Connected to 10.10.10.10 (10.10.10.10).
Escape character is '^]'.
Remote Management Console
login: Riverstar
password:linuxsir
ns5gt->
ns5gt-> ?
clear clear dynamic system info
delete delete persistent info in flash
exec exec system commands
exit exit command console
get get system information
ping ping other host
reset reset system
save save command
set configure system parameters
trace-route trace route
unset unconfigure system parameters
ns5gt-> get interface
A - Active, I - Inactive, U - Up, D - Down, R - Ready
Interfaces in vsys Root:
Name IP Address Zone MAC VLAN State VSD
trust 10.10.10.10/24 Trust 0010.db01.9272 - U -
untrust 222.79.2.89/32 Untrust 0010.db01.9271 - U -
serial 0.0.0.0/0 Null 0010.db01.9276 - D -
vlan1 0.0.0.0/0 VLAN 0010.db01.927f 1 D -
备注:其中的第二行为公司的外网IP地址
ns5gt->exit
ns5gt-> exitConnection closed by foreign host.
crontab -e
*/5 * * * * /root/check_real_ip.pl
这样每五分钟我分收到一封来自Cron Daemon的信可以检测到是否IP变了吗?也可以在DNS中设置mail的A记录.
my ip: 222.79.2.89
> > > > > >
其中192.168.5.112为内部的dns只是forwards到192.168.2.253上而已
192.168.2.253有server.com域的使用权以及固定的IP地址
DNS是由也是运行perl的mail server |
|