CIFSMOUNT nur 3 connections?

Darkyputz

Aktives Mitglied
Mitglied seit
27 Jul 2005
Beiträge
2,324
Punkte für Reaktionen
0
Punkte
36
Hallo!

Ich nutze seit gestern ungefähr cifsmount...
Mir reichen aber ncie 3 mounts nicht...
Kann man das irgendwie aufbohren?
Habe schon versucht einfach in der config einen eintrag per hand zu machen und dann abzuspeichern...aber mounten tut er meine Test nur 4 nicht...
Iss das nen Binary limit oder nur von der Konfigration?
so 5 wären schon schön ;-)

Grüße!!
 
Schau mal ins CGI, vllt. kannst du das ohne grossartrige Kenntnisse aufbohren?
 
wollt erstmal abhorchen ob das andere gründe hat...
Aber ich entnehme deiner Aussage das dem wohl nicht so ist...
danke und ich werd mal versuchen zu basteln...
 
Ich weiss nicht, ob es andere Gründe hat, ehrlich gesagt.
 
Trage die weiteren mounts doch in der FREETZ rc.config ein. Ist zwar nicht so schön grafisch, erfüllt aber den Zweck.

Beispiel:
cifsmount mount //192.168.X.y/fritz /var/nas Benutzer Password
 
Sooo...
CGI iss angepasst auf 5 accounts...aber mounten tut er sie noch nicht...grmpf...
Naja...bin dran...
 
Nunjut...ich muss nachfragen...
ich habe jetzt das cgi aufgebohrt:
[Edit frank_m24: Bitte benutzt CODE Tags für solche Ausgaben.]
Code:
#!/bin/sh

PATH=/bin:/usr/bin:/sbin:/usr/sbin

. /usr/lib/libmodcgi.sh

auto_chk=''; man_chk=''

if [ "$CIFSMOUNT_ENABLED" = "yes" ]; then auto_chk=' checked'; else man_chk=' checked'; fi

sec_begin 'Starttyp'

cat << EOF
<p>
<input id="e1" type="radio" name="enabled" value="yes"$auto_chk><label for="e1"> Automatisch</label>
<input id="e2" type="radio" name="enabled" value="no"$man_chk><label for="e2"> Manuell</label>
</p>
EOF

sec_end

sec_begin 'Shares'

cat << EOF

<script>
function change(value) {
  document.getElementById("Acc1").style.display = "none";
  document.getElementById("Acc2").style.display = "none";
  document.getElementById("Acc3").style.display = "none";
  document.getElementById("Acc4").style.display = "none";
  document.getElementById("Acc5").style.display = "none";

  switch (value) {
    case "0":
      document.getElementById("Acc1").style.display = "block";
      break;
    case "1":
      document.getElementById("Acc2").style.display = "block";
      break;
    case "2":
      document.getElementById("Acc3").style.display = "block";
      break;
    case "3":
      document.getElementById("Acc4").style.display = "block";
      break;
    case "4":
      document.getElementById("Acc5").style.display = "block";
      break;
    }

}

document.write("<p><SELECT NAME='account' onChange='change(value)'>" +
"<OPTION SELECTED VALUE='0'>Share 1</OPTION>" +
"<OPTION VALUE='1'>Share 2</OPTION>" +
"<OPTION VALUE='2'>Share 3</OPTION>" +
"<OPTION VALUE='3'>Share 4</OPTION>" +
"<OPTION VALUE='4'>Share 5</OPTION>" +
"</SELECT></p>");

document.write("<div id='Acc1' style='display:block'><p><label id='acc1' for='r06'>Share: </label><input id='r06' type='text' name='share1' size='50' maxlength='255' value='$(html "$CIFSMOUNT_SHARE1")'></p>" +
"<p><label for='r03'>User: </label><input id='r03' type='text' name='user1' size='50' maxlength='255' value='$(html "$CIFSMOUNT_USER1")'></p>" +
"<p><label for='r04'>Pass: </label><input id='r04' type='password' name='pass1' size='50' maxlength='255' value='$(html "$CIFSMOUNT_PASS1")'></p>" +
"<hr color='silver'>" +
"<p><label for='r05'>Mountpoint: </label><input id='r05' type='text' name='mountpoint1' size='50' maxlength='255' value='$(html "$CIFSMOUNT_MOUNTPOINT1")'></p>" +
"</div>");

document.write("<div id='Acc2' style='display:none'><p><label id='acc2' for='r16'>Share: </label><input id='r16' type='text' name='share2' size='50' maxlength='255' value='$(html "$CIFSMOUNT_SHARE2")'></p>" +
"<p><label for='r13'>User: </label><input id='r13' type='text' name='user2' size='50' maxlength='255' value='$(html "$CIFSMOUNT_USER2")'></p>" +
"<p><label for='r14'>Pass: </label><input id='r14' type='password' name='pass2' size='50' maxlength='255' value='$(html "$CIFSMOUNT_PASS2")'></p>" +
"<hr color='silver'>" +
"<p><label for='r15'>Mountpoint: </label><input id='r15' type='text' name='mountpoint2' size='50' maxlength='255' value='$(html "$CIFSMOUNT_MOUNTPOINT2")'></p>" +
"</div>");

document.write("<div id='Acc3' style='display:none'><p><label id='acc3' for='r26'>Share: </label><input id='r26' type='text' name='share3' size='50' maxlength='255' value='$(html "$CIFSMOUNT_SHARE3")'></p>" +
"<p><label for='r23'>User: </label><input id='r23' type='text' name='user3' size='50' maxlength='255' value='$(html "$CIFSMOUNT_USER3")'></p>" +
"<p><label for='r24'>Pass: </label><input id='r24' type='password' name='pass3' size='50' maxlength='255' value='$(html "$CIFSMOUNT_PASS3")'></p>" +
"<hr color='silver'>" +
"<p><label for='r25'>Mountpoint: </label><input id='r25' type='text' name='mountpoint3' size='50' maxlength='255' value='$(html "$CIFSMOUNT_MOUNTPOINT3")'></p>" +
"</div>");

document.write("<div id='Acc4' style='display:none'><p><label id='acc4' for='r27'>Share: </label><input id='r27' type='text' name='share4' size='50' maxlength='255' value='$(html "$CIFSMOUNT_SHARE4")'></p>" +
"<p><label for='r28'>User: </label><input id='r28' type='text' name='user4' size='50' maxlength='255' value='$(html "$CIFSMOUNT_USER4")'></p>" +
"<p><label for='r29'>Pass: </label><input id='r29' type='password' name='pass4' size='50' maxlength='255' value='$(html "$CIFSMOUNT_PASS4")'></p>" +
"<hr color='silver'>" +
"<p><label for='r30'>Mountpoint: </label><input id='r30' type='text' name='mountpoint4' size='50' maxlength='255' value='$(html "$CIFSMOUNT_MOUNTPOINT4")'></p>" +
"</div>");

document.write("<div id='Acc5' style='display:none'><p><label id='acc5' for='r31'>Share: </label><input id='r31' type='text' name='share5' size='50' maxlength='255' value='$(html "$CIFSMOUNT_SHARE5")'></p>" +
"<p><label for='r32'>User: </label><input id='r32' type='text' name='user5' size='50' maxlength='255' value='$(html "$CIFSMOUNT_USER5")'></p>" +
"<p><label for='r33'>Pass: </label><input id='r33' type='password' name='pass5' size='50' maxlength='255' value='$(html "$CIFSMOUNT_PASS5")'></p>" +
"<hr color='silver'>" +
"<p><label for='r34'>Mountpoint: </label><input id='r34' type='text' name='mountpoint5' size='50' maxlength='255' value='$(html "$CIFSMOUNT_MOUNTPOINT5")'></p>" +
"</div>");
</script>

EOF

sec_end
und dazu noch die default cifsmount.cfg
Code:
export CIFSMOUNT_ENABLED='no'

export CIFSMOUNT_SHARE1=''
export CIFSMOUNT_USER1=''
export CIFSMOUNT_PASS1=''

export CIFSMOUNT_SHARE2=''
export CIFSMOUNT_USER2=''
export CIFSMOUNT_PASS2=''

export CIFSMOUNT_SHARE3=''
export CIFSMOUNT_USER3=''
export CIFSMOUNT_PASS3=''

export CIFSMOUNT_SHARE4=''
export CIFSMOUNT_USER4=''
export CIFSMOUNT_PASS4=''

export CIFSMOUNT_SHARE5=''
export CIFSMOUNT_USER5=''
export CIFSMOUNT_PASS5=''

export CIFSMOUNT_MOUNTPOINT1=''
export CIFSMOUNT_MOUNTPOINT2=''
export CIFSMOUNT_MOUNTPOINT3=''
export CIFSMOUNT_MOUNTPOINT4=''
export CIFSMOUNT_MOUNTPOINT5=''
Kann auch im cgi sehen das da 5 auswählbar und bespielbar sind...
Aber er mountet sie nicht...
Habe ich ne Datei vergessen anzupassen?
Danke!!
 
Zuletzt bearbeitet:
Was passiert im Init-Script?
 
Genau, ohne Änderung am Init-Skript gibt es nur eine grafische Oberfläche, aber keine Aktion.

Mir ist aufgefallen, daß da /mod/etc/default.cifsmount/cifs_mount aufgerufen wird, um eine Datei zu erstellen, die nachher ausgeführt wird. Ist das an dieser Stelle sinnvoll?

Wie wäre es damit, und gleich in rc.cifsmount?
Code:
for i in 1 2 3 4 5; do
  eval if [ -n \"\$CIFSMOUNT_SHARE$i\" ]\; then \
    echo \"mount \$CIFSMOUNT_SHARE$i...\" \; \
    mkdir \$CIFSMOUNT_MOUNTPOINT$i \; \
    $CIFSMNT_PATH/mount.cifs \$CIFSMOUNT_SHARE$i \$CIFSMOUNT_MOUNTPOINT$i -o user=\$CIFSMOUNT_USER$i,pass=\$CIFSMOUNT_PASS$i \; \
  fi
done
Oder vielleicht übersichtlicher:
Code:
for i in 1 2 3 4 5; do
  eval CIFSMOUNT_SHARE=\$CIFSMOUNT_SHARE$i
  eval CIFSMOUNT_MOUNTPOINT=\$CIFSMOUNT_MOUNTPOINT$i
  eval CIFSMOUNT_USER=\$CIFSMOUNT_USER$i
  eval CIFSMOUNT_PASS=\$CIFSMOUNT_PASS$i
  if [ "$CIFSMOUNT_MOUNTPOINT" != "" ]; then
    echo "mount $CIFSMOUNT_SHARE..."
    mkdir $CIFSMOUNT_MOUNTPOINT
    $CIFSMNT_PATH/mount.cifs $CIFSMOUNT_SHARE $CIFSMOUNT_MOUNTPOINT -o user=$CIFSMOUNT_USER,pass=$CIFSMOUNT_PASS
  fi
done
 
Mir ist aufgefallen, daß da /mod/etc/default.cifsmount/cifs_mount aufgerufen wird, um eine Datei zu erstellen, die nachher ausgeführt wird. Ist das an dieser Stelle sinnvoll?
Ist mir gestern auch schon aufgefallen. Für cifs_umount ist das auch der Fall. Die Idee von dir, Ralf, finde ich gut.

MfG Oliver
 
ahh...an diese datei hae ich nicht gedacht..grmpf...
Ihr habt ja so recht
 
@olistudent
Ich verstehe das so, daß Du auch keinen Sinn in diesen defaults-Dateien siehst.

@Darkyputz
Kannst Du das mal ausprobieren in rc.cifsmount:
Code:
#!/bin/sh

DAEMON=cifsmount

. /etc/init.d/modlibrc

CIFSMOUNT_COUNT=5
# works only with applet seq enabled:
#CIFSMOUNT_LIST="$(seq 1 $CIFSMOUNT_COUNT)"
CIFSMOUNT_LIST="1"
i=1
while [ "$i" -lt "$CIFSMOUNT_COUNT" ]; do
    i=$((i + 1))
    CIFSMOUNT_LIST="$CIFSMOUNT_LIST $i"
done

start() {

        echo -n 'mount cifs...'
        exitval=0
        CIFSMNT_PATH=/usr/sbin

        modprobe cifs
        [ "$?" -gt 0 ] && exitval=1

        for i in $CIFSMOUNT_LIST; do
                eval CIFSMOUNT_SHARE=\$CIFSMOUNT_SHARE$i
                eval CIFSMOUNT_MOUNTPOINT=\$CIFSMOUNT_MOUNTPOINT$i
                eval CIFSMOUNT_USER=\$CIFSMOUNT_USER$i
                eval CIFSMOUNT_PASS=\$CIFSMOUNT_PASS$i
                if [ "$CIFSMOUNT_MOUNTPOINT" != "" ]; then
                        echo "mount $CIFSMOUNT_SHARE..."
                        mkdir -p "$CIFSMOUNT_MOUNTPOINT"
                        $CIFSMNT_PATH/mount.cifs $CIFSMOUNT_SHARE $CIFSMOUNT_MOUNTPOINT -o user="$CIFSMOUNT_USER",pass="$CIFSMOUNT_PASS"
                        [ "$?" -gt 0 ] && exitval=1
                fi
        done

        if [ "$exitval" -eq 0 ]; then
                echo 'done.'
        else
                echo 'failed.'
                exit $exitval
        fi
}

stop() {
        echo -n 'unmount cifs...'
        exitval=0

        for i in $CIFSMOUNT_LIST; do
                eval CIFSMOUNT_SHARE=\$CIFSMOUNT_SHARE$i
                eval CIFSMOUNT_MOUNTPOINT=\$CIFSMOUNT_MOUNTPOINT$i
                eval CIFSMOUNT_USER=\$CIFSMOUNT_USER$i
                eval CIFSMOUNT_PASS=\$CIFSMOUNT_PASS$i
                if [ "$CIFSMOUNT_MOUNTPOINT" != "" ]; then
                        echo "unmount $CIFSMOUNT_SHARE..."
                        umount $CIFSMOUNT_MOUNTPOINT
                        [ "$?" -gt 0 ] && exitval=1
                        rmdir $CIFSMOUNT_MOUNTPOINT
                fi
        done
        rmmod cifs

        sleep 1

        if [ "$exitval" -eq 0 -a -z "$(pidof cifsoplockd)" -a -z "$(pidof cifsdnotifyd)" ]; then
                echo 'done.'
        else
                echo 'failed.'
                exit 1
        fi

}

...
 
@Ralf: Genau. :)

Hast du das ganze mal ausprobiert? Mir scheint, dass die Abfrage für den Status nicht funktioniert. Entweder nehmen wir den cifsd Prozess oder die Ausgabe von mount.

MfG Oliver
 
Ausprobiert habe ich es nicht, bzw. nur auf dem Build-System. Ich bin mir relativ sicher, daß die Status-Abfrage vorher auch nicht viel gebracht hat, von daher sehe ich da kein Problem.
Meiner Meinung nach sollte es mit meiner Version einen Fehler-Status geben, wenn entweder das Modul nihct geladen werden kann oder einer der Mounts fehlschlägt. Man könnte auch argumentieren, daß der Test, ob das Modul geladen wurde, unnötig ist, weil ohne das Modul sowieso keiner der Mounts erfolgreich sein wird.

Oder wolltest Du damit sagen, daß der Return-Wert von mount hier nicht zuverlässig ist?

Die Existenz eine cifsd Prozesses besagt nicht, daß alle Mounts erfolgreich waren. Auf meinem Build-System bleibt sogar cifsd sogar nach dem unmount und läßt sich nicht beenden. Scheint ein Fehler von Suse zu sein.

Ich persönlich würde übrigens das rmmdir nach umount weglassen, es ist auch sonst nicht üblich, Mount-Punkte zu löschen.
 
Ich persönlich würde übrigens das rmmdir nach umount weglassen, es ist auch sonst nicht üblich, Mount-Punkte zu löschen.
Wenn das nicht üblich ist, dann lassen wir es weg. Mach doch mal einen Patch von deinen Änderungen.

MfG Oliver
 
Sorry Kinders...war heut abend nicht mehr on...soll ich morgen noch fix testen oder habt ihr den change schon fertig gebaut?

Grüße!!
 
@Darkyputz
Ich habe die Skripte angepaßt, so daß sie 5 Mount-Punkte unterstützen. Außerdem ist es jetzt einfacher, die Anzahl zu verändern. Ich hätte das auch in cifsmount.cfg geändert, war mir aber nicht sicher, wie das mit dem Mechanismus zum Speichern der Konfiguration zusammen paßt. Wenn Du experimentierfreudig bist, nimmst Du das als cifsmount.cfg:
Code:
CIFSMOUNT_COUNT=5
CIFSMOUNT_LIST="1"
i=1
while [ "$i" -lt "$CIFSMOUNT_COUNT" ]; do
    i=$((i + 1))
    CIFSMOUNT_LIST="$CIFSMOUNT_LIST $i"
done
export CIFSMOUNT_ENABLED='no'
for i in $CIFSMOUNT_LIST; do
        eval export CIFSMOUNT_SHARE$i=''
        eval export CIFSMOUNT_MOUNTPOINT$i=''
        eval export CIFSMOUNT_USER$i=''
        eval export CIFSMOUNT_PASS$i=''
done
Wenn ich jetzt noch wach wäre, würde ich vielleicht auch noch das cgi-Skript so anpassen, daß man die Anzahl der Mount-Punkte auch dort festlegen kann.
 
@ralf: Ich glaube da sind einige Fehler in make/cifsmount/files/root/etc/init.d/rc.cifsmount bei Vergleichen von "Strings" und "Integern". Hab das Package nicht getestet da ich es nicht nutze

Beispiel:
Code:
 # exitval=""
 # [[ "$exitval" -eq 0 ]] && echo true || echo false
true


Also sollte es
Code:
x=0
[[ $x -eq 0 ]] && ...
oder
Code:
x=0
[[ "$x" = 0 ]] && ...
sein
 
Diese Unterscheidung zwischen Strings und Intergers betrifft eher Compilersprachen. Speziell für die Shell ist fast alles String.
Konkret sind einige Anführungszeichen überflüssig, aber nicht störend.
 
Fast :-] Mein "Beispiel" funktioniert aber nicht wie erwartet
 

Statistik des Forums

Themen
246,295
Beiträge
2,249,588
Mitglieder
373,894
Neuestes Mitglied
Samanthahovee
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.