Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Shell in Perl

  1. #1

    Aiuto cosa strana

    Sto cercando di fare una shell in perl

    ecco il code:
    codice:
    #! /usr/bin/perl
    
    #---- CREO FILE CONFIG ----
    
    system ("whoami > .user.gsh");
    system ("uname -n > .host.gsh");
    
    open (USER,".user.gsh");
    chomp($utente = <USER>);
    close USER;
    open (HOST,".host.gsh");
    chomp ($host = <HOST>);
    close HOST;
    
    system ("rm .user.gsh");
    system ("rm .host.gsh");
    
    # -------------------------
    
    print "Galatolo SHell v 0.1\n\n";
    print "Benvenuto $utente su $host\n\n";
    
    # --- CICLO PROGRAMMA -------
    
    
    for(;;){
    print $utente."@".$host." >> ";
    chomp($cmd = <STDIN>);
    
    #--- OK??? ---
    open FILE,"/etc/gsh/$utente.conf";
    @lista = <FILE>;
    if ($lista[0] eq ""){
    print "Error : Chiedere all'amministratore di creare il file /etc/gsh/$utente.conf con la lista dei comandi autorizzati!\n";
    }
    else {
    @acmd = split(/ /,$cmd);
    for ($x=0;$x<@lista;$x++){
    chomp(@lista);
    
    
    if ($acmd[0] eq $lista[$x]){
    $ok = "TRUE";
    }
    else {
    $ok = "FALSE";
    }
    }
    
    }
    
    # -----
    
    if ($ok eq "TRUE"){
    system ($cmd);
    } else {
    print "Error : Comando non autorizzato dall'amministratore\n";
    }
    }
    
    # --- FINE CICLO ----
    Questo è il risultato:

    codice:
    federico@crash-overflow:~/perl/gsh$ ./gsh
    Galatolo SHell v 0.1
    
    Benvenuto federico su crash-overflow
    
    federico@crash-overflow >> ls
    Error : Comando non autorizzato dall'amministratore
    federico@crash-overflow >> ls
    Error : Comando non autorizzato dall'amministratore
    federico@crash-overflow >> echo asd
    Error : Comando non autorizzato dall'amministratore
    federico@crash-overflow >>
    questo è il file /etc/gsh/utente:

    codice:
    ls
    echo
    mkdir
    nano
    Perche fa cosi???

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Sei sicuro della logica del programma?

    Se capisco bene, in @lista ci metti i comandi permessi. Perche` allora fai il chomp della lista? E perche` lo fai ad ogni ciclo? Non basterebbe farlo una volta fuori dal loop?

    Comunque inserisci una serie di print, in modo da vedere subito il risultato; magari inviali a stderr, anziche stdout, altrimenti il risultato viene bufferizzato e potrebbe andare perso qualcosa in caso di errore.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    ho risolto grazie lo stesso

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.