sábado, 31 de marzo de 2012

Compartir directorios con Samba fácilmente

Hola, como dice el título este pequeño post va de compartir directorios usando Samba fácilmente, sin configuraciones rocambolescas.

Primero, en el ordenador que hará se servidor hemos de instalar una serie de paquetes, que son:
samba, samba_common, samba_common_bin, smbclient, smbfs, y todas las dependiencias que nos salgan. Esto se hace desde synaptic o con la siguiente instrucción desde línea de comandos y como root:

#aptitude install samba samba_common samba_common_bin smbclient smbfs

Vamos a configurar el sistema de forma que podamos conectarnos a las unidades que marquemos com de red usando nuestro usuario, y en modo solo lectura.

Desde línea de comando y como root hacemos lo siguiente:

#cd /etc/samba
#cp smb.cfg cmb.cfg.old

#vi smb.cfg

Ahora, pulsamos i para comenzar la insercción de texto y pegamos lo siguiente:

#parametros basicos
workgroup = WORKGROUP

netbios name = mundo

server string = Cosas compartidas del mundo

hosts allow = 192.168.0. 127.

security = user

#Unidades de red
[unidad_compartida_1]

comment = unidad_compartida_1
path = /ruta1
writable = no
public = no

browseable = yes

[unidad:compartida_2]
comment = unidad_compartida_2

path = /ruta2
writable = no
public = no
browseable = yes

Notas respecto a este fichero:
-Este fichero es para dos carpetas compartidas.
-Donde pone compartida_1 y compartida_2 ponemos el nombre de la unidad en la red.
-Donde pone unidad_compartida_1 y 2, se ponen comentarios asociados a dichas uniades de red.
-Donde pone /ruta1 y /ruta2 hay que poner la ruta interna de cada directorio compartido.
-Writable, public y browseable nos indican si en la unidad se podrá escribir, si será pública o solo accesible para su dueño y si se mostrará la carpeta en una exploración de red. Poner esto al gusto.
-netbios name: Apuntar el nombre que se pone pues erá el que nuestro ordenador muestre en la red.
-workgroup: Nombre de nuestro grupo de trabajo.
Salimos pulsando :wq

Ahora hemos de crear otro fichero así que de nuevo desde la línea de comandos ponemos:

#cd /etc/samba
#vi lmhosts

Pulsamos i e insertamos el siguiente contenido:

127.0.0.1 localhost
192.168.0.11 mundo


Donde en la segunda línea se indica la dirección IP y el nombre de nuestro ordenador/servidor. El nombre es el que hemos indicado en el fichero anterior como netbios name.
De nuevo pulsamos :wq para salir guardando.

Ahora hay que añadir un usuario samba usando el siguiente comando:

#smbpasswd usuario

Donde en usuario pondremos el nombre de nuestro usuario en el sistema. Nos pedirá una clave para acceder al sistema vía samba. Puede o no ser igual a la que usamos en el sistema normalmente.

Hecho esto reiniciamos el servicio samba para que se configure con los nuevos datos:

#/etc/init.d/samba restart

Ahora podemos irnos a otro ordenador para tratar de conectarnos a las carpetas compartidas que hemos configurado. Si es desde windows, en vuestras manos lo dejo. Si es desde gnome o KDE igualmente.

Para conectarnos desde cualquier cliente linux necesitaremos al menos instalar una serie de paquetes, como no como root desde línea de comandos:

#aptitude install samba_common samba_common_bin smbclient smbfs xsmbrowser

Ahora, si desde la línea de comandos ponemos xsmbrowser, nos aparecerá una pantalla tal que así:
Mi conexión a mundo la he declarado usando el botón inferior +Network y completando los datos que se me piden. Navegar desde este programa es bién sencillo, así como montar unidades de red, aunque para ello tendremos que haber abierto el programa como root.
Para ver otras formas de conectarse a las unidades compartidas os recomiendo recurrir a San Google.

Espero o sea de untilidad.

=:)



jueves, 29 de marzo de 2012

Script para automatizar la eliminación de líneas en ficheros de texto

Hola!

Como continuación y basado en el script para sustitución masiba de texto, os propongo este otro, que también puede llegar a ser util.

En particular sirve para eliminar la línea de texto exacta que se le indique dentro de los ficheros que se le indique (puede ponerse una máscara para seleccionar múltiples ficheros).

Como siempre, copiar el siguiente texto en un fichero nuevo:

#!/bin/bash
# Script borrado de linea que se indique dentro de un conjunto de ficheros
# Arg.1: texto a buscar
# Arg.2: Ficheros donde borrar lineas, incluyendo comodines
# Por IMV-2012

b="/^"$1"$/d"
echo $b
shift 1
c='.temp'
for a in $*; do
# echo $a
cat $a | sed "$b" > $c
cp $c $a
done
rm $c

Se guarda con el nombre que consideréis oportuno, en mi caso he puesto borrado_linea.sh y se le da permiso de ejecución. Ésto se puede hacer desde el explorador->botón derecho->Propiedades->..... o desde línea de comandos:

#chmod +x borrado_linea.sh

Una ver terminado todo esto se llamaría de la siguiente forma:

#borrado_linea.sh texto_exacto_de_linea mascara_de_ficheros

Se mostrará en pantalla la instrucción que se usará para realizar esta acción y cambiará todos los ficheros que se correspondan con la máscara y que contengan una línea exacta a la indicada.

El funcionamiento de este script se basa de nuevo en el uso del comando sed. Fuera del script la eliminación de líneas sería de la siguiente forma:

#sed '/^linea$/d' ficheros

Donde linea se sustituye por la línea exacta a buscar y fichero por el nombre del fichero donde queremos hacer el trabajo. El carácter ^ indica principio de línea y $ final de línea.

Para más detalles de este comando os recomiendo le deis una vuelta al siguiente link El shell de linux, comando sed.

Bueno, espero os sea de utilidad.

=:)