ENGLISH 意见建议 网站地图 网站帮助
广泛智力汇聚   高效成果传播   先进机制培育
联盟首页  |  协同开发  |  开放源码库  |  安全告警  |  开源导航  |  文档中心  |  服务支持  |  共创论坛  |  关于联盟


注册会员 网站帮助
    您的位置 »
    今天是: 2010年11月22日    
项目搜索

完全匹配   
开源软件
软件分类表
新发布软件
其它网站镜像
代码片断
协同开发
文档
论坛
寻求协助
热点项目
站点状态
编译工厂

联系我们
关于联盟

代码片段库:
查看代码片段

浏览 | 提交新的代码片段 | 创建代码包

pxe启动时候配置nfs服务器的脚本

类型:
Function
类别:
Other
许可证:
GNU General Public License
语言:
Perl
 
描述:
pxe启动时候配置nfs服务器的脚本

该代码片段的版本系列:

片段ID 下载版本 提交时间 提交人 删除
48571。02005-03-25 15:38wldandan

点击"下载版本"来下载该代码片段.


最新版本的代码片段: 1。0


配置文件xxx.nodes
例:
   文件名:180.nodes
   文件内容:
imagename: 180
domain name: langchao 
subnet mask: 255.255.0.0 
default gateway: 10.151.20.222 
client: node1 10.151.19.21 00:C0:9F:29:43:CB 
client: node2 10.151.19.22 00:C0:9F:2A:68:4E




#!/usr/bin/perl -w
use strict;
use Carp;
use File::Copy;
#####################################################
#传入参数:nfs 的serverIP,node名称
#####################################################


my $nfs_dir ="remote" ;
my ($node,$interface,$server_ip,@imagearray);
#my $node  = "wldandan";
#my $server_ip = "10.151.11.170";

if (@ARGV<1) {
    croak "usage: $0 <interface> client1 [client2] ... 
";
   }

$interface = shift;
$server_ip = (find_internal_ip($interface))[0];


@imagearray = @ARGV;

#1.创建server端nfs的根目录
&config_server_nfs_dir;


#&config_node_fstab("/$nfs_dir/$node",$server_ip);
foreach my $image (@imagearray) {
   my $file ="$ENV{CAIT_HOME}/userfiles/nodesinfo/$image.nodes";
   open(FILE,$file) or die"read this file error! $!
";
   print "open success!
";
    while (<FILE>){
       s/#.*//;  #remove comments
       s/^s*//;  #remove space
     # if (/^client:s+(w)s+/){
     if(/^client:s*(S+)s+(S+)s+(S+)/){
           $node  = $1;
           #2.创建当前节点的nfs目录
           &config_node_dir($nfs_dir,$node);

           #3.修改node节点的fstab文件
           print "/$nfs_dir/$node
";
           &config_node_fstab("/$nfs_dir/$node",$server_ip);

           #4.修改node节点的eth0文件
           &config_node_eth("/$nfs_dir/$node");

           #5配置server端的exports文件
           &config_server_exports_file;
         }
     }
}


################################################
#
################################################
sub config_node_dir{
   my ($self_nfs_dir,$self_node)=@_;
   print "$self_nfs_dir
";
   print "self_node
";

   system"./config_node_nfs_dir $self_nfs_dir $self_node";
}


##################################
# 修改当前client目录下etc/fstab
##################################
sub config_node_fstab{
 my ($node_dir,$server_ip) = @_;
 open(FSTAB,">$node_dir/etc/fstab") || die "$!";
     print FSTAB qq(none   /proc  proc defaults  0  0
);
     print FSTAB qq($server_ip:$node_dir  /  nfs  rw  0  0);
}


################################################
# 创建nfs文件系统的总目录
################################################
sub config_server_nfs_dir{
  my $nfs_dir = "/remote/";
  unless(-d "$nfs_dir"){
     mkdir($nfs_dir, 0777)|| die "failed create dir $nfs_dir";
  }
}



################################################
#
################################################
sub get_nfs_dir{
}
################################################
#配置nfs server的exports文件
################################################
sub config_server_exports_file{
  my @content;
 if (-f "/etc/exports"){

   open(EXPORTS,"< /etc/exports");
   while (<EXPORTS>) {
      push(@content, $_)
      };
   }
 close(EXPORTS);

 my @result = grep {//$nfs_dir/$nodes+/gm} @content;

 open(EXPORTS,"> /etc/exports");
 foreach my $line(@content){
   print EXPORTS $line;
 }
   if (@result < 1){
     print EXPORTS qq(/$nfs_dir/$node $node(rw,async,no_root_squash) 
);
   }

}

###########################################################
# 根据interface接口(eth0)返回其ip、bcast、mask
# find_internal_ip ($interface)
###########################################################
sub find_internal_ip {
    my $interface = shift;
    # normally I hate sub processes, but for this I make an exception
    my $string = qx/ifconfig $interface | grep inet/;

    if($string =~ /addr:([d.]+).*cast:([d.]+).*ask:([d.]+)/)    {
        return $1,$2,$3;
    }
    return undef;
} #find_internal_ip

################################################
#配置if-eth0文件
################################################
sub config_node_eth{
  my $node_dir = $_[0];
  open(IFETH,">$node_dir/etc/sysconfig/network-scripts/ifcfg-eth0") or die "$!";
  print IFETH qq(DEVICE=eth0 
);
  print IFETH qq(BOOTPROTO=dhcp
);
  print IFETH qq(ONBOOT=no
);
}

		

提交新版本

如果您修改了一个代码片段并且觉得很应该让别人共享,您可以把这作为这个代码片段的最新版本提交上来.


联盟团体会员
合作伙伴
© 共创软件联盟 版权所有
联盟服务条款 | 联盟隐私权规则 | 联系我们
电话: (8610)68313388-5949 | 传真: (8610)88377936
京ICP备05056057号