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???