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.
    ";}
    }


    
    
    
                                        
    
  • 相关阅读:
    闭包 (Closure)
    RSA算法
    HTTPS
    SSH
    HDU1754 I hate it_线段树(入门级别)
    HDU1166 敌兵布阵_线段树
    c++运算符优先级表
    归并排序练习.
    HDU 1969 精度二分
    uva10944 状态压缩bfs or DP
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13352027.html
Copyright © 2011-2022 走看看