文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>网线插上与断开自动检测和静态dns地址自动设置的..

网线插上与断开自动检测和静态dns地址自动设置的..

时间:2010-03-13  来源:gliethttp

luther@gliethttp:~$ vim dns_ds.sh
#!/usr/bin/awk -f
# dns_ds.sh
# 说明:当网线被不经意拔掉之后本来手工设置在/etc/resolv.conf中的静态dns将被清空,
#       故加入该daemon脚本,当检测到dns丢失之后,网线重新恢复正常之后,自动添加静态dns,
#       无需再手工添加,实现本地静态dns添加的自动化[luther.gliethttp].
# 对于网线是否被拔掉的检测,可以使用检测/sys/class/net/eth0/carrier或者operstate文件中
# 数值来判断
# 输入文件读取第1行数据,如果直接
# 执行./dns_ds.sh那么将从stdin读取一行数据,如果加入参数
# 执行./dns_ds.sh /etc/passwd
#////////////反复执行的语句体//////////////
{
    # print $0 # 打印读入的一行
    print # 打印读入的一行,和上面的效果一样
    exit; # 显示的退出,否则,awk将一直反复执行{}内的语句
}
#////////////程序加载时,首先执行的语句体,执行完该语句体之后,将重复执行上面{}内部语句//////////////
BEGIN {
    dns_ip = "192.168.1.101"
    dns_file = "/etc/resolv.conf"
    print dns_file
    do {
    # if (system(sprintf("[ -f %s ]", dns_file)) == 0) {
    if (system("[ -f "dns_file" ]") == 0) {
        dns_ip_ok = 0
        while (getline < dns_file) {
            if ($1 == "nameserver") {
                if ($2 != dns_ip) {
                    system("sed \"1i\\nameserver "dns_ip"\" "dns_file">/tmp/dns_file.tmp.luther.gliethttp.00")
                    system("mv /tmp/dns_file.tmp.luther.gliethttp.00 "dns_file)
                    print dns_ip" appended!"
                }
                dns_ip_ok = 1
                break
            }
        }
        if (dns_ip_ok == 0) {
            system("echo \"nameserver "dns_ip"\" >> "dns_file)
            print "null line!"
        }
        close(dns_file)
    } else {
        print dns_file" dosen't exit!"
    }
        system("sleep 4")
    } while (1)
}
#////////////程序退出时调用//////////////
END {
    # print "exit!\n"
}
luther@gliethttp:~$ sudo ./dns_ds.sh
或者加到rc.local启动脚本中
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载