zoukankan      html  css  js  c++  java
  • 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
    ";
    sub help() {
        print "Available commands:
    ";
        print $_."
    " 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.
    ";};
        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.
    ";}
    }


    
    
    
                                        
    
  • 相关阅读:
    JavaScript Hoisting
    关于性能工具
    JavaScript 新旧替换五:函数嵌套
    JavaScript 新旧替换四:继承
    JavaScript 新旧替换三:参数转换
    JavaScript 新旧替换二:赋值和取值
    test
    这么多数组方法,你掌握了么?
    问问自己,你真的会用防抖和节流么????
    防抖、节流、闭包的真谛所在
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13352027.html
Copyright © 2011-2022 走看看