hdcpc
来源:互联网 发布:网络布线是做什么的 编辑:程序博客网 时间:2024/06/07 05:15
IP配置规则:如果配置静态IP,那么DNS也需要是静态的。如果IP是动态的,DNS可以是动态也可静态。
使用udhcpc工具,作用是:向局域网dhcp服务器(udhcpd工具)请求分配IP($ip),广播地址($broadcast),子网掩码($subnet),网关($router),网卡接口($interface),域名($domain)如180.97.33.108 www.baidu.com,域名服务器地址($dns)如:202.96.128.166 202.96.134.133 127.0.1.1;。
如果这些信息获得了,配置IP的方法就是:
$IFCONFIG $interface $ip broadcast $broadcast netmask $subnet
$ROUTE add default gw $router
ifconfig eth0 192.168.75.100 broadcast 192.168.75.255 netmask 255.255.255.0 配置IP,广播地址,和子网掩码。子网掩码这里表示可以有256个client。
route add default gw 192.168.75.1 网管不是用ifconfig来配置的
配置DNS:打开/etc/resolv.conf就可以看到dns信息:
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 202.96.128.166
nameserver 202.96.134.133
nameserver 127.0.1.1
因此如果我们要配置dns的话就直接填进这里面即可:
RESOLV_CONF="/etc/resolv.conf"
if [ -n "$domain" ]; then
#返回域名如:180.97.33.108 www.baidu.com
echo domain $domain >> $RESOLV_CONF
echo $domain > $DOMAIN_BAK
fi
for i in $dns ; do
echo adding dns $i
#注意dns返回来的DNS只有IP,前面要加:nameserver
echo nameserver $i >> $RESOLV_CONF
#这里是备份。
echo $i >> $DNS_BAK
done
脚本:
dhcpc_eth_start()
{
cp $dbgmode_file $tmp_dir/udhcpc_eth0.result
#killall udhcpc
###########在dhcp请求包中包含myhostname信息。
myhostname=`cat /proc/sys/kernel/hostname`
#################使用udhcpc来配置########################-t发送120个discover数据包(lease),-q获得配置退出,-n没有立即获得动态IP立即错误退出,-V设置供应商,-s发送事件执行shell文件,-i指定网卡,-x在发送包中包含OPT=hostname:内容是$myhostname。详情看:man udhcpc.中udhcpc部分。##################
/sbin/udhcpc -t 120 -q -n -V Vendor -s $DHCP_PATH/udhcpc_callbak.script -i $arg_ifname -x hostname:$myhostname
#################$?返回上条语句的返回值。
if [ "$?" -eq "0" ] && [ -f $UDHCPC_FULL_SUCCESS_FILE ]; then
#if [ "$?" -eq "0" -a -f $UDHCPC_FULL_SUCCESS_FILE ]; then
echo "#ETH0_DHCP_SUCCESS" > /tmp/cmdpipe
################-e表示解释\
echo -e "success\n" > $dhcpstatus_file
else
echo "#ETH0_DHCP_FAIL" > /tmp/cmdpipe
echo -e "fail\n" > $dhcpstatus_file
fi
wait
#####
#echo "#ETH0_DHCP_SUCCESS" > /tmp/aeicmdpipe
echo -e "success\n" > $dhcpstatus_file
}
####################################################
#################################udhcpc_callbak.script:
####################################################
#!/bin/sh
# udhcpc script edited by Jason Lee
[ -z "$1" ] && echo "Error: should be called from udhcpc" && exit 1
RESOLV_CONF="/etc/resolv.conf"
DHCP_OK="/var/lock/dhcp_full.ok"
DHCP_OK2="/var/lock/dhcp."
DNS_BAK="/usr/local/etc/dns.bak"
DOMAIN_BAK="/usr/local/etc/domain.bak"
[ -n "$broadcast" ] && BROADCAST="broadcast $broadcast"
[ -n "$subnet" ] && NETMASK="netmask $subnet"
case "$1" in
deconfig)
#################这是默认配置,如果lease失败(http://lists.busybox.net/pipermail/uclibc/2006-January/034854.html)了,进入,配置IP重新发送。应该就是/sbin/ifconfig $interface 0.0.0.0和/sbin/route add -net 0.0.0.0 netmask 0.0.0.0 $interface
#modified by yuyu
#/sbin/ifconfig $interface 0.0.0.0
rm -f $DHCP_OK
ip2=$(($RANDOM%253+1))
ip3=$(($RANDOM%253+1))
/sbin/ifconfig $interface 169.254.$ip2.$ip3
echo "ifconfig $interface 169.254.$ip2.$ip3"
/sbin/route add -net 0.0.0.0 netmask 0.0.0.0 $interface
echo "route add -net 0.0.0.0 netmask 0.0.0.0 $interface"
#end modified
;;
renew|bound)
##################获得成功,这里配置/sbin/ifconfig $interface $ip $BROADCAST $NETMASK和/sbin/route add -net $router netmask $subnet $interface,但是有可能broadcast和subnet没有。
#/sbin/ifconfig $interface $ip $BROADCAST $NETMASK
set > /tmp/udhcpc_eth0.result
#Added by yuyu
#/sbin/route add -net 169.254.0.0 netmask 255.255.0.0 $interface
#end add
#/sbin/route del default
#/sbin/route add default gw $router
echo $router > /tmp/gateway.result
echo $ip > /tmp/ip.result
if [ -n "$broadcast" ]; then
#######################################可能broadcast,subnet没有
echo "---The broadcast $broadcast---"
echo $broadcast > /tmp/broadcast.result
fi
if [ -n "$subnet" ]; then
echo "---The netmask $subnet---"
echo $subnet > /tmp/netmask.result
fi
echo "---The gateway $router---"
echo -n > $DNS_BAK
echo -n > $RESOLV_CONF
echo -n > $DOMAIN_BAK
if [ -n "$domain" ]; then
echo domain $domain >> $RESOLV_CONF
echo $domain > $DOMAIN_BAK
fi
for i in $dns ; do
echo adding dns $i
echo nameserver $i >> $RESOLV_CONF
echo $i >> $DNS_BAK
done
echo ok > $DHCP_OK
echo ok > $DHCP_OK2$interface
;;
esac
exit 0
上面是用udhcpc来请求dhcp服务器请求ip地址等,然后调用callback脚本来执行配置ip和dns。如果我们使用的是静态ip和DNS不用配置,可以去dhcp服务器拿domain过来。如果ip和dns都动态,配置。如果ip动态dns静态,配置ip和domain就好了。一般domain不会返回回来。
使用udhcpc工具,作用是:向局域网dhcp服务器(udhcpd工具)请求分配IP($ip),广播地址($broadcast),子网掩码($subnet),网关($router),网卡接口($interface),域名($domain)如180.97.33.108 www.baidu.com,域名服务器地址($dns)如:202.96.128.166 202.96.134.133 127.0.1.1;。
如果这些信息获得了,配置IP的方法就是:
$IFCONFIG $interface $ip broadcast $broadcast netmask $subnet
$ROUTE add default gw $router
ifconfig eth0 192.168.75.100 broadcast 192.168.75.255 netmask 255.255.255.0 配置IP,广播地址,和子网掩码。子网掩码这里表示可以有256个client。
route add default gw 192.168.75.1 网管不是用ifconfig来配置的
配置DNS:打开/etc/resolv.conf就可以看到dns信息:
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 202.96.128.166
nameserver 202.96.134.133
nameserver 127.0.1.1
因此如果我们要配置dns的话就直接填进这里面即可:
RESOLV_CONF="/etc/resolv.conf"
if [ -n "$domain" ]; then
#返回域名如:180.97.33.108 www.baidu.com
echo domain $domain >> $RESOLV_CONF
echo $domain > $DOMAIN_BAK
fi
for i in $dns ; do
echo adding dns $i
#注意dns返回来的DNS只有IP,前面要加:nameserver
echo nameserver $i >> $RESOLV_CONF
#这里是备份。
echo $i >> $DNS_BAK
done
脚本:
dhcpc_eth_start()
{
cp $dbgmode_file $tmp_dir/udhcpc_eth0.result
#killall udhcpc
###########在dhcp请求包中包含myhostname信息。
myhostname=`cat /proc/sys/kernel/hostname`
#################使用udhcpc来配置########################-t发送120个discover数据包(lease),-q获得配置退出,-n没有立即获得动态IP立即错误退出,-V设置供应商,-s发送事件执行shell文件,-i指定网卡,-x在发送包中包含OPT=hostname:内容是$myhostname。详情看:man udhcpc.中udhcpc部分。##################
/sbin/udhcpc -t 120 -q -n -V Vendor -s $DHCP_PATH/udhcpc_callbak.script -i $arg_ifname -x hostname:$myhostname
#################$?返回上条语句的返回值。
if [ "$?" -eq "0" ] && [ -f $UDHCPC_FULL_SUCCESS_FILE ]; then
#if [ "$?" -eq "0" -a -f $UDHCPC_FULL_SUCCESS_FILE ]; then
echo "#ETH0_DHCP_SUCCESS" > /tmp/cmdpipe
################-e表示解释\
echo -e "success\n" > $dhcpstatus_file
else
echo "#ETH0_DHCP_FAIL" > /tmp/cmdpipe
echo -e "fail\n" > $dhcpstatus_file
fi
wait
#####
#echo "#ETH0_DHCP_SUCCESS" > /tmp/aeicmdpipe
echo -e "success\n" > $dhcpstatus_file
}
####################################################
#################################udhcpc_callbak.script:
####################################################
#!/bin/sh
# udhcpc script edited by Jason Lee
[ -z "$1" ] && echo "Error: should be called from udhcpc" && exit 1
RESOLV_CONF="/etc/resolv.conf"
DHCP_OK="/var/lock/dhcp_full.ok"
DHCP_OK2="/var/lock/dhcp."
DNS_BAK="/usr/local/etc/dns.bak"
DOMAIN_BAK="/usr/local/etc/domain.bak"
[ -n "$broadcast" ] && BROADCAST="broadcast $broadcast"
[ -n "$subnet" ] && NETMASK="netmask $subnet"
case "$1" in
deconfig)
#################这是默认配置,如果lease失败(http://lists.busybox.net/pipermail/uclibc/2006-January/034854.html)了,进入,配置IP重新发送。应该就是/sbin/ifconfig $interface 0.0.0.0和/sbin/route add -net 0.0.0.0 netmask 0.0.0.0 $interface
#modified by yuyu
#/sbin/ifconfig $interface 0.0.0.0
rm -f $DHCP_OK
ip2=$(($RANDOM%253+1))
ip3=$(($RANDOM%253+1))
/sbin/ifconfig $interface 169.254.$ip2.$ip3
echo "ifconfig $interface 169.254.$ip2.$ip3"
/sbin/route add -net 0.0.0.0 netmask 0.0.0.0 $interface
echo "route add -net 0.0.0.0 netmask 0.0.0.0 $interface"
#end modified
;;
renew|bound)
##################获得成功,这里配置/sbin/ifconfig $interface $ip $BROADCAST $NETMASK和/sbin/route add -net $router netmask $subnet $interface,但是有可能broadcast和subnet没有。
#/sbin/ifconfig $interface $ip $BROADCAST $NETMASK
set > /tmp/udhcpc_eth0.result
#Added by yuyu
#/sbin/route add -net 169.254.0.0 netmask 255.255.0.0 $interface
#end add
#/sbin/route del default
#/sbin/route add default gw $router
echo $router > /tmp/gateway.result
echo $ip > /tmp/ip.result
if [ -n "$broadcast" ]; then
#######################################可能broadcast,subnet没有
echo "---The broadcast $broadcast---"
echo $broadcast > /tmp/broadcast.result
fi
if [ -n "$subnet" ]; then
echo "---The netmask $subnet---"
echo $subnet > /tmp/netmask.result
fi
echo "---The gateway $router---"
echo -n > $DNS_BAK
echo -n > $RESOLV_CONF
echo -n > $DOMAIN_BAK
if [ -n "$domain" ]; then
echo domain $domain >> $RESOLV_CONF
echo $domain > $DOMAIN_BAK
fi
for i in $dns ; do
echo adding dns $i
echo nameserver $i >> $RESOLV_CONF
echo $i >> $DNS_BAK
done
echo ok > $DHCP_OK
echo ok > $DHCP_OK2$interface
;;
esac
exit 0
上面是用udhcpc来请求dhcp服务器请求ip地址等,然后调用callback脚本来执行配置ip和dns。如果我们使用的是静态ip和DNS不用配置,可以去dhcp服务器拿domain过来。如果ip和dns都动态,配置。如果ip动态dns静态,配置ip和domain就好了。一般domain不会返回回来。
0 0
- hdcpc
- jquery选择器
- Confirmation on Leaving the Current Page in an Angular.js App
- Activity生命周期
- 总结
- CSS Hack技术介绍及常用的Hack技巧集锦
- hdcpc
- androidstudio--gsonformat--超爽的数据解析方式
- Swift学习笔记(十二)构造过程
- 第四章 变量、作用域和内存问题
- CodeForces 560A Currency System in Geraldion
- DOM(二)-01-(示例-新闻字体)
- poj1734floyd——最小环+路径
- spring配置文件的加载
- Selenium 工具介绍、安装、配置及使用