Sometimes you have to manage the /etc/passwd and /etc/group files on your Netapp filer and seemingly the only options available are to use rdfile and wrfile or a text editor like vi via a NFS mount or Notepad++ via a CIFS share. None of which appeal to me when trying to create something that a less technical person could use to manipulate these files.
Below is the rough framework that could be used to build a full fledged file manipulator for Netapp files under the /etc directory. In the example below we are looking at the /etc/passwd file, however it could be expanded to manipulate any files on the filer through DFM. Further, you could use Win32:GUI or Perl/TK to provide a GUI to the script as opposed to running it via the command line.
The breakdown of the script is as follows:
Standard Perl interpreter line. In this example we are on Windows.
#!/Perl64/bin/perl
This section of the script is a basic variable assignment of what I want my new line to be in the /etc/passwd file. However you could have an input prompt here and/or have it read from a file.
$newentry = "Your passwd entry\n";
This line grabs the existing /etc/passwd file and loads it into a perl array called rpasswd. It is using the DFM command set to run rdfile on the filer.
chomp (@rpasswd = `dfm run cmd -t 120 faseslab1 rdfile /etc/passwd`);
This section cleans up the rpasswd values and only puts in the lines that match Stdout from the DFM output into a second array called passwd.
foreach $line (@rpasswd) {
if ($line =~ /^Stdout:\s+/) {
$line =~ s/^Stdout:\s+//g;
push(@passwd,$line);
}
}
This line places the new entry into the passwd array.
push (@passwd,$newentry);
This line backs up the existing passwd file using DFM and mv command.
$result = `dfm run cmd -t 120 faseslab1 mv /etc/passwd /etc/passwd.bak`;
This line writes the new passwd file using the passwd array and DFM to write out the new file.
foreach $line (@passwd) {
$result = `dfm run cmd -t 120 faseslab1 wrfile -a /etc/passwd $line`;
}
exit;
Again, this is a rough example, but it gives you the idea of what can be done using Perl and DFM.