• Publicidad

Ayuda cambiar fichero de usuarios por defecto

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Ayuda cambiar fichero de usuarios por defecto

Notapor darkborrego » 2009-04-24 15:49 @700

Hola.

Necesito crear un programa que permita cambiar el fichero de usuarios por defecto, es decir, en vez de ser /etc/passwd sea otro que yo introduzca al ejecutar el programa de Perl con la opción -p; el problema lo encuentro en que no sé cambiar el fichero por defecto.

De igual modo debo hacer con el fichero grupo con la opción -o.

Saludos y muchas gracias.
darkborrego
Perlero nuevo
Perlero nuevo
 
Mensajes: 11
Registrado: 2009-04-24 12:49 @576

Publicidad

Notapor explorer » 2009-04-24 19:14 @843

Bienvenido a los foros de Perl en Español, darkborrego.

El cambiar los ficheros de usuarios y grupos por otros... creo que no lo había nunca en los 14 años de conocimiento del UNIX que tengo. Me suena a algo muy malo o muy tonto.

¿Para qué quieres una cosa tan rara?

Si se trata de sobreescribir el fichero que reside en /etc/passwd por el contenido de otro, te vale con abrir en modo escritura el primero, en modo lectura el segundo, y hacer un bucle línea a línea que pinte el contenido de uno a otro. Ídem para el de grupos.

Eso sí... debes tener los suficientes permisos de usuario como para poder hacer eso.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14482
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor darkborrego » 2009-04-25 01:20 @097

Si, estoy contigo de que es una cosa muy, muy rara y tonta. El hecho de realizar lo que te digo es por un programa que tengo que hacer en la universidad para aprobar una asignatura.

Según el profesor estas dos opciones son las más fáciles pero yo sinceramente no sé cómo cambiarla. Lo único que se me ocurre es modificar la zona del archivo de configuración de kubuntu donde esté el fichero de usuarios por defecto pero creo que es un poco arriesgado a la vez que mi profesor dice que es una locura, por eso pregunto.

Aquí te dejo el enunciado de estas dos partes tal y como me la piden:

-P fichero
Permite cambiar el fichero de usuarios por defecto. En caso de no ser usado este será ../etc/passwd
-O fichero
Permite cambiar el fichero de grupos por defecto. En caso de no ser usado este será ../etc/group
Estas dos opciones si son empleadas serán las primeras. Se pueden usar ambas a la vez o una sola, según las necesidades.
Ejemplo: usugrupo.pl -P ../etc/usuarios-prueba ...
usugrupo.pl -P ../etc/usuarios -O ../etc/grupos-mios ...


Muchas gracias por tu ayuda.
darkborrego
Perlero nuevo
Perlero nuevo
 
Mensajes: 11
Registrado: 2009-04-24 12:49 @576

Notapor explorer » 2009-04-25 05:37 @275

Vale, entonces entendí mal la pregunta. Creí que querías cambiar los ficheros del sistema, y en realidad solo quieres indicar qué fichero de usuarios debe usar tu programa, ¿no es eso?

Entonces es muy sencillo: debes leer los argumentos pasados en @ARGV, ver si hay algún '-p' y '-o' y guardar los argumentos que le siguen como valores a usar en tu programa.

No puedo darte la solución porque tu profesor está leyendo estos foros... y no querrás que te acuse de recibir ayuda para realizar tu práctica :)

Lo que sí podemos hacer es ayudarte si te atascas con alguna parte del código. Publícalo aquí y te iremos ayudando.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14482
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor darkborrego » 2009-04-26 05:17 @261

Claro, claro, yo lo que quiero es que me ayudéis con esta parte, las otras más o menos las tengo encaminadas; son muchas las opciones que tengo que hacer. Te puedo decir casos en los que es el profesor el que contesta en los foros, jeje.

Yo lo que hago es una función para cada opción, y luego con un if() comparo que sea $ARGV[0] eq "-e" (por ejemplo) y dentro de cada if() pongo la función. El problema que tengo es que no sé cómo indicarle al sistema el cambio de fichero o el cambio de ruta mejor dicho.

Saludos y muchas gracias de verdad.
darkborrego
Perlero nuevo
Perlero nuevo
 
Mensajes: 11
Registrado: 2009-04-24 12:49 @576

Notapor explorer » 2009-04-26 05:56 @289

Nada, muy sencillo.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $fichero_de_usuarios = '/etc/passwd';

if ($opcion_nuevo_fichero_de_usuarios) {
    $fichero_de_usuarios = $opcion_nuevo_fichero_de_usuarios;
}

# A partir de aquí, $fichero_de_usuarios contiene
# el fichero a usar
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14482
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor darkborrego » 2009-04-26 06:11 @299

ahhhhhhhhhh, valla tela xDDD, ya ves, la de vueltas que le he dado y lo fácil que es, jeje.
Muchas gracias, me pongo manos a la obra ;)
darkborrego
Perlero nuevo
Perlero nuevo
 
Mensajes: 11
Registrado: 2009-04-24 12:49 @576

El elemento nulo

Notapor darkborrego » 2009-04-26 06:33 @314

Una cosita, ¿el elemento nulo en Perl cuál es?. Es que quiero que me devuelva un mensaje de que no se ha introducido ningún argumento pero no sé cómo ponerlo.

Esto es un ejemplito pequeño que me he hecho:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
if ($ARGV[0]==0){
  print "No ha introducido ningun argumento.\n";
} elsif ($ARGV[0] eq "-p"){
    print "OPCION P ELEGIDA\n";
  } elsif ($ARGV[0] eq "-e"){
      print "OPCION E ELEGIDA";
      }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


La idea es que si $ARGV[0] es nulo escriba el mensaje y se acabe el programa. Lo hace pero también devuelve lo siguiente:

Código: Seleccionar todo
Use of uninitialized value $ARGV[0] in numeric eq (==) at programa.pl line 4.


El "0" que he puesto es el fallo, en "C" se que es NULL. A ver si alguien me puede ayudar.

Gracias
darkborrego
Perlero nuevo
Perlero nuevo
 
Mensajes: 11
Registrado: 2009-04-24 12:49 @576

Notapor explorer » 2009-05-02 04:34 @232

Sería algo así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
if (! @ARGV){
    die "No ha introducido ningún argumento.\n";
}
elsif ($ARGV[0] eq "-p") {
    print "OPCIÓN P ELEGIDA\n";
}
elsif ($ARGV[0] eq "-e") {
    print "OPCIÓN E ELEGIDA\n";
}
 
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14482
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: Bing [Bot] y 0 invitados