• Publicidad

Programa que cambie parámetros de Samba

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

Programa que cambie parámetros de Samba

Notapor perleando » 2017-01-23 06:33 @315

¡Hola a todo el mundo! Acabo de registrarme en este foro (no sabía de la existencia de foros de Perl en español :D )

Bueno, al lío. Tengo que hacer un programa en Perl que cree usuarios en Samba, y gestione sus permisos. En definitiva, que gestione los parámetros básicos del fichero de configuración de Samba (smb.conf). He estado buscando en el siguiente código (y en el foro también sobre esto):

http://cpansearch.perl.org/src/GHENRY/S ... nfigure.pl

Pero en ningún momento veo alguna línea que haga esto, por lo que no encuentro algo del código que me pueda servir u orientar. ¿Alguien con experiencia y alma cándida que ayude a este humilde servidor que lleva apenas un mes iniciándose en Perl? :( :roll:

Espero que alguien me pueda ayudar. ¡Gracias de antemano, gente!
perleando
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2017-01-23 05:50 @285

Publicidad

Re: Programa que cambie parámetros de Samba

Notapor explorer » 2017-01-23 17:03 @752

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

No creo que ese programa te ayude, porque se refiere a usar LDAP para hacer la autenticación de los usuarios, y supongo que querrás hacerla mediante la autenticación básica de samba por medio del comando smbpasswd (ver su página de manual).

El formato del archivo smb.conf es del tipo .ini, donde existen secciones que están etiquetadas con corchetes, y a la que siguen las opciones con el formato variable=valor. En CPAN hay varios módulos para gestionar esta parte.

Pero... alguien ya lo ha hecho antes, y lo ha dejado en CPAN: File::Samba. Con esto puedes modificar smb.conf. Y para las contraseñas, Passwd::Samba, pero es un módulo del 2012, así que a lo peor no es compatible con las últimas versiones de Samba (no creo que haya cambiado mucho).

Entra en esos módulos y mira las sinopsis.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14475
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Programa que cambie parámetros de Samba

Notapor perleando » 2017-01-25 05:51 @285

explorer escribiste:Bienvenido a los foros de Perl en Español, perleando.

No creo que ese programa te ayude, porque se refiere a usar LDAP para hacer la autenticación de los usuarios, y supongo que querrás hacerla mediante la autenticación básica de samba por medio del comando smbpasswd (ver su página de manual).

El formato del archivo smb.conf es del tipo .ini, donde existen secciones que están etiquetadas con corchetes, y a la que siguen las opciones con el formato variable=valor. En CPAN hay varios módulos para gestionar esta parte.

Pero... alguien ya lo ha hecho antes, y lo ha dejado en CPAN: File::Samba. Con esto puedes modificar smb.conf. Y para las contraseñas, Passwd::Samba, pero es un módulo del 2012, así que a lo peor no es compatible con las últimas versiones de Samba (no creo que haya cambiado mucho).

Entra en esos módulos y mira las sinopsis.


Gracias por responder, explorer. La página me ha aclarado un poco las ideas. Pero hay algo que no lo acabo de entender: en la página que me has facilitado (File::Samba) ¿para qué servirían estas tres líneas de la sinopsis?

@list = $smb->listShares;
$smb->deleteShare('homes');
$smb->createShare('newShare');

Es que no las entiendo, y mira que me estoy mirando los módulos... Perdona la molestia y espero que me puedas aclarar la duda :(
perleando
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2017-01-23 05:50 @285

Re: Programa que cambie parámetros de Samba

Notapor explorer » 2017-01-25 10:27 @477

Son ejemplos de lo que se puede hacer con el módulo.

Las descripciones de cada método están unas líneas más arriba de la sinopsis.

Por ejemplo, para listShares(), pone
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
listShares()

Get a list of shares defined in the smb.conf file EXCLUDING the global section

Params: none Returns: a sorted list of section names Example: my @list = $smb->listShares;
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
que quiere decir
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
listShares()

Proporciona una lista de los recursos compartidos definidos en el archivo smb.conf EXCLUYENDO la sección global

Parámetros: ninguno

Devuelve: una lista ordenada de los nombres de sección

Ejemplo: my @list = $smb->listShares;
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

deleteShare('home') está borrando la sección compartida llamada "home".
Y createShare('newShare') crea una nueva sección compartida, llamada "newShare".
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14475
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Programa que cambie parámetros de Samba

Notapor perleando » 2017-01-26 06:03 @293

Ahora que me fijo, explorer, creo que ese módulo en concreto ya no existe (espero no estar equivocado) en el archivo smb.conf, seguramente debido a lo que has mencionado antes, a que es un mensaje del 2012.

Mirando los demás módulos de File::Samba, por ejemplo, si quiero cambiar el "read only" de la sección [global] (un ejemplo del archivo smb.conf está en esta página: http://www.ite.educacion.es/formacion/materiales/85/cd/linux/m4/instalacin_y_configuracin_de_samba.html ) el código quedaría a mi parecer algo así:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $smb->globalParameter('global','read only','yes');
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4

¿Crees que sería correcta la sintaxis?

Como ya he comentado antes, llevo apenas un mes empezando con Perl, así que igual escribo alguna locura de código, yo aviso. ¡Je,je!
perleando
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2017-01-23 05:50 @285

Re: Programa que cambie parámetros de Samba

Notapor explorer » 2017-01-26 06:50 @326

Para poder usar File::Samba, debes antes instalarlo en tu sistema. Y sí que está disponible.

Usando cpanminus, me lo he instalado en un minuto:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
$ cpanm File::Samba
--> Working on File::Samba
Fetching http://www.cpan.org/authors/id/S/SS/SSC ... .03.tar.gz ... OK
==> Found dependencies: Module::Build
--> Working on Module::Build
Fetching http://www.cpan.org/authors/id/L/LE/LEO ... 220.tar.gz ... OK
Configuring Module-Build-0.4220 ... OK
Building and testing Module-Build-0.4220 ... OK
Successfully installed Module-Build-0.4220
Configuring File-Samba-0.03 ... OK
==> Found dependencies: Data::Dump
--> Working on Data::Dump
Fetching http://www.cpan.org/authors/id/G/GA/GAA ... .23.tar.gz ... OK
Configuring Data-Dump-1.23 ... OK
Building and testing Data-Dump-1.23 ... OK
Successfully installed Data-Dump-1.23
Building and testing File-Samba-0.03 ... OK
Successfully installed File-Samba-0.03
3 distributions installed
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

Ten en cuenta una cosa importante: la modificación del smb.conf del sistema es algo que solo puede hacer el root del sistema, por lo que te será más cómodo hacer pruebas con una versión local de smb.conf, en tu directorio de trabajo. Para cuando veas que todo funciona, y que lo quieres instalar para el sistema, entonces tu programa solo se podrá ejecutar por parte del root, o por medio del comando sudo (siempre y cuando tu usuario del sistema tenga permisos para ello, claro).

Una cosa es la biblioteca File::Samba, para tu programa Perl, y otra cosa es el archivo smb.conf, que forma parte de la configuración de Samba, y que, normalmente, estará en /etc/samba/.

En cuanto al cambio de 'read only', según el manual debería ser así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $smb->globalParameter('read only','yes');
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: 14475
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Programa que cambie parámetros de Samba

Notapor perleando » 2017-03-06 06:47 @324

Cuando ejecuto el script:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2.  
  3. use strict;
  4. use warnings;
  5. use 5.010;
  6. #use Term::ANSIColor;
  7. #use Term::ANSIColor qw(:constants);
  8. use File::Samba;
  9.  
  10. my $smb = File::Samba->new("/etc/samba/smb.conf");
  11. my @list = $smb->listShares;
  12. $smb->globalParameter('read only','yes');
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Me arroja la siguiente línea:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
Use of uninitialized value $value in substitution (s///) at /usr/local/share/perl/5.22.1/File/Samba.pm line 364, <FH> line 248.
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

No entiendo muy bien qué pasa. ¿Me podrías explicar qué función tiene el archivo Samba.pm que se encuentra en esa ruta que me indica? Si es que tengo que modificar algo de ese archivo o qué...
perleando
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2017-01-23 05:50 @285

Re: Programa que cambie parámetros de Samba

Notapor explorer » 2017-03-06 15:58 @707

No sé qué versión de File::Samba estás usando, pero mirando el código fuente de la versión actual, en la línea 364, aparece:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.             my($key,$value) = split('=',$_,2);
  2.             $key =~ s/\s+$//;
  3.             $value =~ s/^\s+//;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Esa parte del programa está leyendo el archivo smb.conf y, concretamente esa línea, es cuando se refiere a las líneas del tipo campo = valor. Y el fallo está en que el programa se ha encontrado con algo inesperado que no corresponde a ese patrón.

De todas maneras, parece que es un mensaje de advertencia, no un error. Si ese es el caso, solo sería necesario quitar el 'use warnings;' de File::Samba.

Otra opción más fácil... revisar smb.conf y ver qué línea es la que da este problema, y arreglarla.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14475
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Programa que cambie parámetros de Samba

Notapor perleando » 2017-03-28 04:30 @229

Diría que tengo la misma versión de File:Samba que aquí, ya que me salen las mismas líneas que mencionas.

En cuanto a la versión de Samba que tengo instalada (por si sirve de algo) tengo la siguiente:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
smbstatus

Samba version 4.3.11-Ubuntu
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

¿Me podrías decir cómo identificar la línea que da el problema del smb.conf?
perleando
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2017-01-23 05:50 @285

Re: Programa que cambie parámetros de Samba

Notapor explorer » 2017-03-30 17:22 @765

Lo dice el propio mensaje de error:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
Use of uninitialized value $value in substitution (s///) at /usr/local/share/perl/5.22.1/File/Samba.pm line 364, <FH> line 248.
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

En la parte final, está diciendo que el error se ha producido al leer la línea 248 del texto que estaba analizando.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14475
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: No hay usuarios registrados visitando el Foro y 1 invitado

cron