Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2388791
  • 博文数量: 384
  • 博客积分: 10193
  • 博客等级: 上将
  • 技术积分: 3785
  • 用 户 组: 普通用户
  • 注册时间: 2005-06-09 18:02
文章分类

全部博文(384)

文章存档

2011年(10)

2010年(29)

2009年(39)

2008年(36)

2007年(43)

2006年(198)

2005年(29)

分类: LINUX

2006-09-12 23:33:14

运行vmware-config.pl脚本, 建立hostonly或nat网络后, vmware总会在相应的网络接口上运行dhcp服务器, 为客户机分配ip地址. 这个功能有时候很有用, 有时候确很烦人. 本文介绍了在Linux下禁用vmware dhcp的方法, vmware版本是VMware Server 1.0.1 build-29996.

/etc/init.d/vmware通过/usr/lib/vmware/net-services.sh完成网络服务的设置.  dhcp的起动和关闭由如下函数来实现: 

vmware_start_dhcpd() {
   local vHostIf="$1" # IN

   # The daemon already logs its output in the system log, so we can safely
   # trash it
   cd "$vmdb_answer_BINDIR" && "$vmdb_answer_BINDIR"/"$dhcpd" \
      -cf "$vmware_etc_dir"/"$vHostIf"/dhcpd/dhcpd.conf \
      -lf "$vmware_etc_dir"/"$vHostIf"/dhcpd/dhcpd.leases \
      -pf /var/run/"$dhcpd"-"$vHostIf".pid "$vHostIf" >/dev/null 2>&1
}

# Stop a DHCP server on a private IP network
vmware_stop_dhcpd() {
   local vHostIf="$1" # IN

   if vmware_stop_pidfile /var/run/"$dhcpd"-"$vHostIf".pid; then
      rm -f /var/run/"$dhcpd"-"$vHostIf".pid
   fi
}

如果需要关闭所有网卡上的dhcp, 则只需要将以上代码段中的执行部分注释, 修改为

vmware_start_dhcpd() {
   local vHostIf="$1" # IN

   # The daemon already logs its output in the system log, so we can safely
   # trash it
#   cd "$vmdb_answer_BINDIR" && "$vmdb_answer_BINDIR"/"$dhcpd" \
#      -cf "$vmware_etc_dir"/"$vHostIf"/dhcpd/dhcpd.conf \
#      -lf "$vmware_etc_dir"/"$vHostIf"/dhcpd/dhcpd.leases \
#      -pf /var/run/"$dhcpd"-"$vHostIf".pid "$vHostIf" >/dev/null 2>&1
}

# Stop a DHCP server on a private IP network
vmware_stop_dhcpd() {
   local vHostIf="$1" # IN

#   if vmware_stop_pidfile /var/run/"$dhcpd"-"$vHostIf".pid; then
#      rm -f /var/run/"$dhcpd"-"$vHostIf".pid
#   fi
}


我写了下面的代码用来起动和关闭部分网卡上的dhcp, 其中vDhcpIf保存了要起动dhcp的虚拟网卡的列表, 用空格分开.

#vDhcpIf define interface on which dhcp run, interfaces are seprated with space
vDhcpIf="vmnet1 vmnet2"

# Start a DHCP server on a private IP network
vmware_start_dhcpd() {
   local vHostIf="$1" # IN

   # The daemon already logs its output in the system log, so we can safely
   # trash it
   if   echo $vDhcpIf|tr ' ' '\n' |grep $vHostIf  >/dev/null
   then
   cd "$vmdb_answer_BINDIR" && "$vmdb_answer_BINDIR"/"$dhcpd" \
      -cf "$vmware_etc_dir"/"$vHostIf"/dhcpd/dhcpd.conf \
      -lf "$vmware_etc_dir"/"$vHostIf"/dhcpd/dhcpd.leases \
      -pf /var/run/"$dhcpd"-"$vHostIf".pid "$vHostIf" >/dev/null 2>&1
   fi
}

# Stop a DHCP server on a private IP network
vmware_stop_dhcpd() {
   local vHostIf="$1" # IN
   if  echo $vDhcpIf|tr ' ' '\n' |grep $vHostIf  >/dev/null
   then
   if vmware_stop_pidfile /var/run/"$dhcpd"-"$vHostIf".pid; then
      rm -f /var/run/"$dhcpd"-"$vHostIf".pid
   fi
   fi
}

也可以设置vDhcpIf=""使得dhcp不在任何网卡上启动
阅读(4171) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~