⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 modify_samba_config.pl

📁 samba-3.0.22.tar.gz 编译smb服务器的源码
💻 PL
字号:
#!/usr/bin/perl##########################################################################  Simple add/delete/change share command script for Samba####  Copyright (C) Gerald Carter                2004.####  This program is free software; you can redistribute it and/or modify##  it under the terms of the GNU General Public License as published by##  the Free Software Foundation; either version 2 of the License, or##  (at your option) any later version.####  This program is distributed in the hope that it will be useful,##  but WITHOUT ANY WARRANTY; without even the implied warranty of##  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the##  GNU General Public License for more details.####  You should have received a copy of the GNU General Public License##  along with this program; if not, write to the Free Software##  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.########################################################################use POSIX qw(tmpnam);#### local variables##my $delete_mode = undef;my $add_mode = undef;my $tmp_file_name = undef;## check for correct parametersif ($#ARGV == 1) {	$delete_mode = 1;}elsif ($#ARGV == 3) {	$add_mode = 1;}else {	print "Usage: $0 configfile share [path] [comment]\n"; 	exit -1;}## first param is always the config fileopen (CONFIGFILE, "$ARGV[0]") || die "Unable to open $ARGV[0] for reading!\n";## FIXME!!  Right now we throw away all comments in the file.while (<CONFIGFILE>) {	chomp($_);		## eat leading whitespace	$_ =~ s/^\s*//;		## eat trailing whitespace	$_ =~ s/\s*$//;		## throw away comments	next if (($_ =~ /^#/) || ($_ =~ /^;/));	## set the current section name for storing the hash	if ($_ =~ /^\[.*\]$/) {			$_ = substr($_, 1, length($_)-2);				if ( length($_) ) {			$section = $_;		}		else {			print "Bad Section Name - no closing ]\n";			exit -1;		}		next;	}			## check for a param = value	if ($_ =~ /=/) {		($param, $value) = split (/=/, $_,2);		$param =~ s/./\l$&/g;		$param =~ s/\s+//g;		$value =~ s/^\s+//;				$config{$section}{$param} = $value;				next;	}	## should have a hash of hashes indexed by section name}close (CONFIGFILE);#### We have the smb.conf in our hash of hashes now.## Add or delete ##if ($add_mode) {	$config{$ARGV[1]}{'path'} = $ARGV[2];	$config{$ARGV[1]}{'comment'} = $ARGV[3];}elsif ($delete_mode) {	delete $config{$ARGV[1]};}#### Print the resulting configuration###do {#	$tmp_file_name = tmpnam();#	print "Using temporary file - $tmp_file_name\n";#} while (!sysopen(TMP, $tmp_file_name, O_RDWR|O_CREAT|O_EXCL));$tmp_file_name = tmpnam();open (TMP, ">$tmp_file_name") || die "Unable to open temporary file for writing!\n";PrintConfigFile(TMP);## now overwrite the original config fileclose (TMP);system ("cp -pf $ARGV[0] $ARGV[0].bak");system ("cp -pf $tmp_file_name $ARGV[0]");unlink $tmp_file_name; exit 0;######################################################################################### PrintConfigFile()##sub PrintConfigFile {	my ($output) = @_;	## print the file back out, beginning with the global section	print $output "#\n# Generated by $0\n#\n";	PrintSection ($output, 'global', $config{'global'});	foreach $section (keys %config) {		if ("$section" ne "global") {			print $output "## Section - [$section]\n";			PrintSection ($output, $section, $config{$section});		}	}	print $output "#\n# end of generated smb.conf\n#\n";}######################################################################################### PrintSection()##sub PrintSection {	my ($outfile, $name, $section) = @_;	print $outfile "[$name]\n";	foreach $param (keys %$section) {		print $outfile "\t$param".' 'x(25-length($param)). " = $$section{$param}\n";	}	print $outfile "\n";}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -