El soporte Samba no se monta al cambiar a inalámbrico

El soporte Samba no se monta al cambiar a inalámbrico

Tengo una notebook con Scientific Linux 6.1. Tengo un enrutador inalámbrico con OpenWrt 10.03 - Wrt160NL. Tengo un HDD en el router que comparto vía samba:

cat /etc/samba/smb.conf.template
[global]
workgroup = workgroup
guest account = nobody
security = share
browseable = yes
guest ok = yes
guest only = no
log level = 2
log file = /tmp/log/smbd.log
max log size = 100
encrypt passwords = yes
dns proxy = no
host allow = 192.168.1.0/24
netbios name = Router
server string = Linksys WRT160NL Router
socket options = TCP_NODELAY
client code page = 852
dos charset = 852
unix charset = UTF-8
display charset = UTF-8
character set = ISO8859-2

[SHARE]
comment = SHARE
path = /mnt/hdd/PUB
browseable = yes
public = yes
guest ok = yes
writable = no

y del lado del cliente:

cat /etc/fstab
//192.168.1.1/SHARE /home/USERNAME/Desktop/SHARE cifs ro,noexec,nosuid,nodev,noatime,password=,nolock 0 0

¡Esto FUNCIONA EXCELENTE!

  • Cuando alguien se conecta al enrutador mediante un cable Ethernet, puede ver el recurso compartido en el enrutador.
  • Cuando alguien se conecta al enrutador de forma inalámbrica, puede ver el recurso compartido en el enrutador.

El problema ocurre cuando alguien está usando el cable Ethernet, luego lo desconecta y cambia a inalámbrico: el recurso compartido desaparece y no puede montarlo:

mount -vvv //192.168.1.1/SHARE /home/USERNAME/Desktop/SHARE -o ro,noexec,nosuid,nodev,noatime,password=,nolock -t cifs

porque el comando se agota. Pero si volvemos a enchufar el cable Ethernet y vamos al directorio "SHARE" en GNOME2, se monta automáticamente.

¿Cómo puedo montar SHARE después de cambiar a inalámbrico? ¿Existe algún tipo de caché que almacene que SHARE solo está disponible a través de Ethernet? Intenté desmontar/montar SHARE pero no funcionó.

Respuesta1

Lo resolví con un script bash... (en resumen, usa rmmod cifs/modprobe cifs; después de esto podría montar el recurso compartido sin tiempo de espera...ü)

#!/bin/bash

which timeout > /dev/null 2>&1; if [[ $? -ne 0 ]]; then echo -e '\nerror, no coreutils package'; exit 1; fi
which nc > /dev/null 2>&1; if [[ $? -ne 0 ]]; then echo -e '\nerror, no nc package'; exit 1; fi

# variables
    PATHTOIT="//192.168.1.1/SHARE"

# functions
function notthesame()
{
    # umount PATHTOIT
        while `mount | grep -qi $PATHTOIT`; do timeout -s 9 2 umount -l $PATHTOIT; done
        timeout -s 9 2 pkill -9 -f "SHARE"
        timeout -s 9 2 pkill -9 -f "umount -a -t cifs"
        timeout -s 9 2 pkill -9 -f "/sbin/mount.cifs"
        timeout -s 9 2 pkill -9 -f "rmmod -fw cifs"
        timeout -s 9 2 pkill -9 -f "/sbin/modprobe -q -- cifs"
        timeout -s 9 2 pkill nautilus

    # remove/add cifs kernel module
        timeout -s 9 2 rmmod -fw cifs
        timeout -s 9 2 modprobe cifs

    # mount PATHTOIT
        timeout -s 9 2 mount $PATHTOIT
}

while true; do

    # wait until we can reach the samba server
        while true; do nc -w 1 192.168.1.1 139 >& /dev/null && break && sleep 10; done

    # first sample
        REGIINTERF=`netstat -nr | awk '/0/ {print $NF}' | sort -u`

    # sleep 10
        sleep 10

    # second sample
        MILYENINTERFMOST=`netstat -nr | awk '/0/ {print $NF}' | sort -u`

    # compare the samples
        [ "${MILYENINTERFMOST}" = "${REGIINTERF}" ] || notthesame

    # if can't find mountpoint then mount it
        if ! mount | grep -qi $PATHTOIT; then notthesame; fi

done

información relacionada