Ich habe an meiner FritzBOX 7270 mit FREETZ 1.03 einen USB-Hub und 4 USB Sticks (aeltere, die ich sonst nicht mehr verwende), insgesamt 16 GB.
Nervent ist nur, dass wie hier schon mehrfach beschrieben, nach einem Restart der Box (mit grosser Regelmaessigkeit) die Zuordnung der "uStorXY" zu den USB-Sticks sich ändert.
Also habe ich mir ein kleines shell-script einfallen lassen, das mir die Sticks mit neuen Namen, die aber fest einem Stick zugeordnet sind, anlegt.
Es werden "symlinks" auf die "uStorXY" erzeugt.
Code:
##############################################################
##############################################################
### Michael Fuchs 11.04.2009 #################################
### Michael Fuchs 15.06.2009 #################################
##############################################################
##############################################################
mkdir -p /var/dtmfbox/tmp/
##############################################################
MyUSBlink() {
echo MyUSBlink :: `date` :: START
USB_Alle_Namen="EINS ZWEI DREI VIER FUENF SECHS SIEBEN ACHT NEUN"
USB_Freie_Namen="$USB_Alle_Namen"
uStorXY=
USBF="USB.NAME"
FTP="/var/media/ftp"
MEDIA="/var/media"
# Warteschleife
XX=5
while [ $XX -gt 0 ]; do
[ -e /var/media/devmap ] && break
echo MyUSBlink :: `date` :: ... warte
sleep 30
XX=$((XX-1))
done
# existierende BENENNEN und NEUE merken
echo MyUSBlink :: `date` :: 1.Schritt
uStorXY=
USB1=
###auf CD geändert MF:20090615:1605
cd $FTP
for XX in uStor*; do
# Wenn Datei ex., dann Inhalt holen,
# ansonsten bleibt Variable LEER
USB="`cat $FTP/$XX/$USBF`"
# VAR bzw. Datei nicht LEER
if [ -n "$USB" ]; then
# falls notwendig VERZEICHNIS anlegen
[ ! -d $MEDIA/$USB ] && mkdir $MEDIA/$USB
# und MOUNT-Befehl
mount --bind $FTP/$XX $MEDIA/$USB
echo MyUSBlink :: `date` :: "Symlink $FTP/$XX an $MEDIA/$USB"
# diverse Flags setzen
touch $MEDIA/$USB/$USB
# USB_Alle_Namen um verwendete Dir-Namen kürzen
USB1=
for YY in $USB_Freie_Namen; do
[ "$USB" != "$YY" ] && USB1="$USB1 $YY"
done
USB_Freie_Namen="$USB1"
else
# die DATEI war LEER u/o. hat nicht existiert
# ... den uStorXY merken
uStorXY="$uStorXY $XX"
fi
done
# NEUE anlegen und BENENNEN
echo MyUSBlink :: `date` :: 2.Schritt
for XX in $uStorXY; do
USB=
USB1=
for YY in $USB_Freie_Namen; do
# beim 1.mal ist USB LEER
if [ -z "$USB" ]; then
# den 1. Namen aus LISTE vergeben
USB="$YY"
else
# alle anderen wieder in FREI merken
USB1="$USB1 $YY"
fi
done
# und zurückschreiben
USB_Freie_Namen="$USB1"
# ggf. DIR anlegen
[ ! -d $MEDIA/$USB ] && mkdir $MEDIA/$USB
# ... und MOUNTEN
mount --bind $FTP/$XX $MEDIA/$USB
echo MyUSBlink :: `date` :: "Symlink $FTP/$XX an $MEDIA/$USB"
# ... und diverse FLAGS setzen
touch $MEDIA/$USB/$USB
echo $USB >$MEDIA/$USB/$USBF
echo MyUSBlink :: `date` :: "schreibe $USB nach $MEDIA/$USB/$USBF"
done
echo MyUSBlink :: `date` :: "USB_Alle_Namen=$USB_Alle_Namen"
echo MyUSBlink :: `date` :: "USB_Freie_Namen=$USB_Freie_Namen"
# ggf. SAMBA anwerfen
echo MyUSBlink :: `date` :: ggf. SAMBA starten
/etc/init.d/rc.samba load
# und ENDE
echo MyUSBlink :: `date` :: FERTIG
}
#...
MyUSBlink &
#...
##############################################################
##############################################################
##############################################################
Im FREETZ WebIF sind man dann unter "Status.Logdateien" was das Script gemacht hat:
MyUSBlink :: Sat Jan 1 01:01:15 CET 2000 :: START
MyUSBlink :: Sat Jan 1 01:01:15 CET 2000 :: 1.Schritt
MyUSBlink :: Sat Jan 1 01:01:15 CET 2000 :: Symlink /var/media/ftp/uStor01 an /var/media/ftp/LENNY
MyUSBlink :: Sat Jan 1 01:01:16 CET 2000 :: Symlink /var/media/ftp/uStor11 an /var/media/ftp/VIER
MyUSBlink :: Sat Jan 1 01:01:16 CET 2000 :: Symlink /var/media/ftp/uStor21 an /var/media/ftp/EINS
MyUSBlink :: Sat Jan 1 01:01:16 CET 2000 :: Symlink /var/media/ftp/uStor31 an /var/media/ftp/DREI
MyUSBlink :: Sat Jan 1 01:01:16 CET 2000 :: 2.Schritt
MyUSBlink :: Sat Jan 1 01:01:16 CET 2000 :: FERTIG
Das Script sucht im Wurzelverzeichnis von jedem Stick eine Datei namens "USB.NAME", wenn die da ist nimmt es den Inhalt für den Linknamen, wenn die nicht da ist, legt das Script sie an und vergibt den nächsten freien Namen der (in der momentanen Konfiguration) nicht genutzt wird!
Diese Default Namen sind "EINS ZWEI ... ACHT NEUN"; na gut nicht sehr creativ, aber hinreichend!!!
Natürlich kann man manuell einen anderen Namen in die jeweilige "USB.NAME" schreiben.
FROHE OSTERN