前端之家收集整理的这篇文章主要介绍了
perl 限制用户操作,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
<pre name="code" class="sql">#!/usr/bin/perl
use strict;
use Switch;
use Sys::Hostname;
use File::Basename;
my $host = hostname;
my $prompt = "$host >";
my @allow_command=(
"/bin/cat","/bin/pwd","/bin/date","/bin/df","/bin/dmesg","/bin/grep","/bin/hostname","/bin/ls","/bin/netstat","/bin/ping","/bin/ps","/bin/rpm","/bin/sleep","/bin/sort","/bin/uname","/sbin/ifconfig","/usr/bin/clear","/usr/bin/du","/usr/bin/id","/usr/bin/vi","/bin/tar","/usr/kerberos/bin/ftp","export","/bin/echo","/bin/env","source","chdir",);
my @allow_command2=map {basename("$_") } @allow_command;
#print "@allow_command2\n";
sub help() {
print "Available commands:\n";
print $_."\n" foreach (@allow_command);
}
system("/usr/bin/clear");
while ("1") {
my $command;
print "$prompt " ;
my $input_command=<STDIN>;
chomp ($command=$input_command);
next if $command eq '';
if ($command =~ /^(\.|\\)/){print "Sorry,unknown command '$command',please run 'help' to show all the avaiable commands.\n";};
exit if ($command =~ /^(quit|exit)$/);
if ($command eq "help") {
&help;
next;
}
my ($binary,undef)=split /\s+/,"$command";
if (grep m/$binary/,@allow_command or grep m/$binary/,@allow_command2 ) {
system("$command");
} elsif ($binary eq "cd") {my $newdir=(split /\s+/,"$command")[1];
chdir $newdir;}
else{
print "Sorry,unknown command '$binary',please run 'help' to show all the avaiable commands.\n";}
}