| 项目搜索 |
| |
|
代码片段库:
查看代码片段
浏览
| 提交新的代码片段
| 创建代码包
pxe启动时候配置nfs服务器的脚本
|
类型:
Function |
类别:
Other
|
许可证:
GNU General Public License |
语言:
Perl
|
描述:
pxe启动时候配置nfs服务器的脚本
|
该代码片段的版本系列:
片段ID |
下载版本 |
提交时间 |
提交人 |
删除 |
4857 | 1。0 | 2005-03-25 15:38 | wldandan | |
点击"下载版本"来下载该代码片段.
最新版本的代码片段: 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
);
}
如果您修改了一个代码片段并且觉得很应该让别人共享,您可以把这作为这个代码片段的最新版本提交上来. |
|