问题描述:客户端是动态IP,每次连网之后要nsupdate下才可以把客户端的hostname 与IP映射更新到DNS Server上

  命令如下:

  

nsupdate -k K*****.key
>server .*.*.* #dns server ip address
>update delete yourfqdn A delete
>update add yourFQDN A your new IP

  这样的效率实在是有点低,于是我就自己写个脚本来更新了。直接贴上我的脚本。脚本下载地址:http://pan.baidu.com/s/1lhlAu

#!/bin/bash
#########################################
##
##    Author:Medici.Yan@gmail.com
#########################################
PATH=/sbin:/bin:/usr/sbin:/usr/bin
export PATH
usage(){
echo " Usage:$0 [-i interface] [-d basedir] [-h hostname] [-t ttl] [-s servername] [-k keyfile] [-c ClientIP] [-m testdomain]"
echo " Default:"
echo " -i eth0 -d /usr/local/ddns -t 600 -k /usr/local/ddns/*.key"
echo ""
echo " Notice: 如果你自己的主机是DNS Server,那么你不能改变你自己的 hostname 与 IP"
echo " 如果你不知道你的DNS Server是什么,就加上-m 参数,后面是测试的域名,eg:$0 -m swu.edu.cn "
echo " Notice: If your PC is your DNS Server, you can't change your hostname and IP"
echo " If you don't know your DNS Server Address, you can use the param [-m TestDomain] to get the right server address,eg:$0 -m swu.edu.cn "
exit
} ((params=$#%))
if [[ $# -gt ]]; then
usage
#elif [ $params -eq 1 ]; then
# usage
fi #设置默认参数值
domain="swu.edu.cn" #默认测试DNS Server 地址的域名
basedir="/usr/local/ddns" # 基本工作目录
keyfile="$basedir"/"`ls $basedir|grep '.key$'`" #公钥文件
ttl= # ttl
interface="eth0" # 对外的联机接口!
hostname=`hostname`
servername=`grep 'nameserver' /etc/resolv.conf | head -n |awk '{print $2}'` #dns Server IP
newip=`ifconfig "$interface" | grep 'inet addr' | awk '{print $2}' | sed -e "s/addr\://"` #IP地址 #处理NetworkManager管理DNS Server,基本上用不到,一般在启动NetworkManager后会自动修改resolv.conf
if [ "$servername" == "" ]; then
servername=`nslookup $domain|grep Server|awk '{print $2}'`
fi
#获取用户输入参数,如不指定则使用默认参数
while [ $# -gt ]
do
case $ in
-i)shift;interface=$;shift;;
-d)shift;basedir=$;shift;;
-h)shift;hostname=$;shift;;
-t)shift;ttl=$;shift;;
-s)shift;servername=$;shift;;
-k)shift;keyfile=$;shift;;
-c)shift;newip=$;shift;;
-m)shift;domain=$;shift;;
*)usage;;
esac done
#自动查找DNS和手动都找不到DNS则退出
if [ "$servername" == "" ]; then
echo "Error:Can not find the DNS Server!"
exit
fi #检查IP合法性
checkip=`echo $newip | grep "^[0-9]"` if [ "$checkip" == "" ]; then
echo "$0: The interface can't connect internet...."
exit fi
#检测basedir目录是否存在,不存在则创建
if !([ -d $basedir ]);then
mkdir -p $basedir
fi
#检测keyfile存在性
if !([ -f $keyfile ]);then
echo "Error:$keyfile does not exist!"
exit
fi tmpfile=$basedir/tmp.txt
#如果文件不存在,则创建
if !([ -f $tmpfile ]);then
touch $tmpfile
#查看是否创建成功
if !([ -f $tmpfile ]);then
echo "Permission Denyed,Can not touch $tmpfile in $basedir"
exit
fi
fi
#写入配置文件
echo "server $servername" > $tmpfile
echo "update delete $hostname A " >> $tmpfile
echo "update add $hostname $ttl A $newip" >> $tmpfile
echo "send" >> $tmpfile
#更新
nsupdate -k $keyfile -v $tmpfile

  

  测试如下:

  

  

  

  这样的效率确实就提高了不少。

Linux架设DDNS服务器之自动更新脚本的更多相关文章

  1. linux下维护服务器之常用命令

    linux下维护服务器之常用命令! 第1套如下: 正则表达式: 1.如何不要文件中的空白行和注释语句: [root@localhost ~]# grep -v '^$' 文件名 |grep -v '^ ...

  2. Linux系统如何设置开机自动运行脚本?

    大家好,我是良许. 在工作中,我们经常有个需求,那就是在系统启动之后,自动启动某个脚本或服务.在 Windows 下,我们有很多方法可以设置开机启动,但在 Linux 系统下我们需要如何操作呢? Li ...

  3. linux 设置svn钩子实现自动更新

    一.svn安装设置 1.安装svn启动 yum install subversion 2.建个svn的根目录,因为项目不止一个 mkdir -p /home/svn/3.新建一个新的空的版本仓库(su ...

  4. Git github webhook 自动更新/部署代码 php自动更新脚本

    这几天尝试了利用github的webhook,当代码更新到github,我们的测试服务器自动更新最新的gitbub仓库代码. 先列几个大概步骤,有时间再补充详细 1 . 服务器生成ssh key,一般 ...

  5. linux 添加 service 服务并自动添加 chkconfig 启动级别

    下面以添加一个叫做watchcat的服务为例进行说明: 1.写一个提供给service命令使用的脚本 service 命令的使用方法一般如下 启动: $ service watchcat start ...

  6. linux和windows下的自动ftp脚本(shell bat)

    一.先来看linux下的: 复制代码 代码如下: #! /bin/bashcd /ftp/CURRENTDATE=` date +%Y%m%d `YESTERDAY=` date -d yesterd ...

  7. 【Linux】虚拟服务器之LVS

    写在前面 觉得甚是幸运,能够有机会参与到ITOO配置环境的工作中去.现在正在熟悉,在搭建环境的时候,有LVS安装配置教程,对这一块有些懵逼,这几天查了一些资料,写在这里,和大家分享一下 是什么 LVS ...

  8. Linux Oracle服务启动&停止脚本与开机自启动

    在CentOS 6.3下安装完Oracle 10g R2,重开机之后,你会发现Oracle没有自行启动,这是正常的,因为在Linux下安装Oracle的确不会自行启动,必须要自行设定相关参数,首先先介 ...

  9. 代替DDNS方案,自动更新CloudFlare的AAAA记录

    为解决DDNS更新慢的问题,直接通过cloudflare的API来更新AAAA记录 将下面代码保存成cloudflare_ipv6_update.ps1 $config = @{} $config.z ...

随机推荐

  1. node.js之express中app.use

    express中app.use 用法: app.use([path,] function [, function…]) 一.app.use() 在express中是怎么工作的 app.use在expr ...

  2. FlexPaper 里的pdf2json.exe 下载地址

    在使用FlexPaper 做在线阅读,需要使用到pdf2json.exe,将PDF转成JSON或者XML格式,网上很少下载的,现在提供一个下载的地址 http://pan.baidu.com/s/1i ...

  3. 20155209 2016-2017-2 《Java程序设计》第1周学习总结

    20155209 2016-2017-2 <Java程序设计>第1周学习总结 初读教材对每章节的提问 第一章:为什么java被广泛使用,java这样的平台相比其它语言有什么实质的好处? 第 ...

  4. 20155212 实验三 敏捷开发与XP实践

    20155212 实验三 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器&g ...

  5. 20155236 《信息安全概论》实验二(Windows系统口令破解)实验报告

    20155236 <信息安全概论>实验二(Windows系统口令破解)实验报告 北京电子科技学院(BESTI) 实验报告 课程:信息安全概论 班级:1552 姓名:范晨歌 学号:20155 ...

  6. 20155308 2016-2017-2《Java程序设计》课程总结

    20155308 2016-2017-2<Java程序设计>课程总结 每周作业链接汇总 预备作业1:回答"我专业吗.我的老师.师生关系.代码问题"四个问题. 预备作业2 ...

  7. 20155310 《JAVA程序设计》实验二(JAVA面向对象程序设计)实验报告

    20155310 <JAVA程序设计>实验二(JAVA面向对象程序设计)实验报告 实验内容 •初步掌握单元测试和TDD •理解并掌握面向对象三要素:封装.继承.多态 •初步掌握UML建模 ...

  8. 20155321 《Java程序设计》实验三 敏捷开发与XP实践

    实验内容 XP基础 XP核心实践 相关工具 实验步骤 敏捷开发与XP 软件工程是把系统的.有序的.可量化的方法应用到软件的开发.运营和维护上的过程.软件工程包括下列领域:软件需求分析.软件设计.软件构 ...

  9. 【LG4491】[HAOI2018]染色

    [LG4491][HAOI2018]染色 题面 洛谷 题解 颜色的数量不超过\(lim=min(m,\frac nS)\) 考虑容斥,计算恰好出现\(S\)次的颜色至少\(i\)种的方案数\(f[i] ...

  10. 后端API入门到放弃指北

    后端API入门学习指北 了解一下一下概念. RESTful API标准] 所有的API都遵循[RESTful API标准]. 建议大家都简单了解一下HTTP协议和RESTful API相关资料. 阮一 ...