mount [bind/loop/partition] als 3rd-party-Apps

Status
Für weitere Antworten geschlossen.

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Hatte mich ja vor kurzem mit dem cryptoloop befasst. Vor längerem auch mal mit dem Mounten von ISO-Images.

Nun habe ich dazu ein kleines PHP-Skript geschrieben, welches wenn als 3rd-party eingebunden, das Mounten insgesamt etwas einfacher macht. Man kann Verzeichnisse mounten (bind), also das root-Verzeichnis in eine Share z.B. und eben auch via loop-Device (iso-Images oder crypto-container) mounten. Wenn man ein Kennwort eingibt, dann wird es als cryptoloop eingebunden, ansonsten als isofs. (Maus über die Felder, gibt Hinweise was wo ...)

Die Integration als 3rd-party-apps wie immer (gibt ja nun schon genug Beispiele).

PHP:
<?php
if ($_REQUEST['action'] == 'mount_bind') exec("mount --bind ".$_REQUEST['bind_dir']." ".$_REQUEST['bind_mount']." 2>&1");
elseif ($_REQUEST['action'] == 'umount_bind') exec("umount -f ".$_REQUEST['bind_dir']);
elseif ($_REQUEST['action'] == 'mount_loop') 
   if ($_REQUEST['loop_password'] != '') 
     exec("echo ".$_REQUEST['loop_password']." | losetup -e aes ".$_REQUEST['loop_dev']." ".$_REQUEST['loop_file']
          .";mount -t ext3 ".$_REQUEST['loop_dev']." ".$_REQUEST['loop_mount']);
   else
     exec("losetup ".$_REQUEST['loop_dev']." ".$_REQUEST['loop_file']
          .";mount -t iso9660 ".$_REQUEST['loop_dev']." ".$_REQUEST['loop_mount']);
elseif ($_REQUEST['action'] == 'umount_loop') exec ("umount ".$_REQUEST['loop_dev']);
$_REQUEST['action']='';
?>
<html><head><title>mount</title>
<style>body,input{font:12px Arial}pre{font-size:11px}.in{width:200px;}fieldset{border:1px solid #bbb}</style>
<script>function $(e){return document.getElementById(e);}</script>
</head><body>
<form name="f" id="f" method="post" action="mount.php">
<input type="hidden" name="action" id="action" value=""/>
<fieldset><legend>bind-mount</legend>
<pre><?php passthru("mount | grep bind"); ?></pre>
<input class="in" type="text" name="bind_dir" value="<?php print $_REQUEST['bind_dir'] ?>" title="directory">
<input class="in" type="text" name="bind_mount" value="<?php print $_REQUEST['bind_mount'] ?>" title="mount_point">
<input type="button" value="mount" onclick="$('action').value='mount_bind';f.submit();">
<input type="button" value="umount" onclick="$('action').value='umount_bind';f.submit();">
</fieldset>
<fieldset><legend>loop-mount</legend>
<pre>
<?php passthru("losetup /dev/loop0 && mount | grep loop0 || echo /dev/loop0:;".
               "losetup /dev/loop1 && mount | grep loop1 || echo /dev/loop1:;".
               "losetup /dev/loop2 && mount | grep loop2 || echo /dev/loop2:;".
               "losetup /dev/loop3 && mount | grep loop3 || echo /dev/loop3:;".
               "losetup /dev/loop4 && mount | grep loop4 || echo /dev/loop4:;".
               "losetup /dev/loop5 && mount | grep loop5 || echo /dev/loop5:;".
               "losetup /dev/loop6 && mount | grep loop6 || echo /dev/loop6:;".
               "losetup /dev/loop7 && mount | grep loop7 || echo /dev/loop7:"); ?></pre>
<input type="text" name="loop_dev" value="/dev/loop" title="loop_device" size="6">               
<input class="in" type="text" name="loop_file" value="" title="file">
<input class="in" type="text" name="loop_mount" value="" title="mount_point">
<input type="password" name="loop_password" value="" title="password">
<input type="button" value="mount" onclick="$('action').value='mount_loop';f.submit();">
<input type="button" value="umount" onclick="$('action').value='umount_loop';f.submit();">
</fieldset>
</form></body></html>

Wie immer geht alles auf eigene Kappe :D

itari


Motivationsbildchen:
 

Anhänge

  • mount.jpg
    mount.jpg
    42,4 KB · Aufrufe: 1.307
Zuletzt bearbeitet:

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Nu habe ich noch das Mounten von Partitionen einer externen Platte miteingebaut. Eventuell muss man die Bezeichnungen /dev/sdk1 .... im Skript anpassen. Bei mir ist das halt /dev/sdk1-4 und /dev/sdl1-4. Nur so kurz erläutert: /dev/sdk1 wäre die erste Partition, welche auch immer automatisch gemountet würde; /dev/sdk2 die zweite Partition usw. Würde man 2 externe Platte anschließen, wäre die zweite wahrscheinlich /dev/sdl... - man sieht das aber, weil auch hier die erste Partition ja automatisch gemountet wäre ;)

Ich habe das nicht mit den verschiedenen Dateisystemen getestet, aber die 4 wären die Dateisystem-Optionen, die man überhaupt angeben könnte. Daran denken, dass man sich eine Share ('gemeinsames Verzeichnis') als Mount-Point anlegt, sonst kann man nicht ordentlich mit der gemouteten Partition arbeiten. NTFS geht zur Zeit nur lesend zu mounten.

itari

.
 

Anhänge

  • mount.php.txt
    4,4 KB · Aufrufe: 101
  • mount.jpg
    mount.jpg
    41,1 KB · Aufrufe: 1.238

Tuono

Benutzer
Mitglied seit
25. Aug 2008
Beiträge
26
Punkte für Reaktionen
3
Punkte
0
Erweiterung mount 3rd-Apps

Sehr sehr hilfreich!

Gibt es die Möglichkeit zwei weitere Button in der jeweilgen Kategorie einzufügen, die das permanente mounten ermöglichen, bzw. es wieder aufheben?

Dann wärs perfekt für mich ;)

Ein Beispiel würde auch schon reichen, ich kann das Script dann entsprechend ändern.

Danke im voraus!

Gruß
Tuono
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Man kann die permanenten Mount-Zeilen in die /etc/rc.local schreiben.

itari
 

tomecemot

Benutzer
Mitglied seit
20. Jul 2008
Beiträge
16
Punkte für Reaktionen
0
Punkte
0
Mounten von anderen Netwerklaufwerken

Erst einmal ein Hallo und eine verneigung vor den super Apps, die hier entstehen.

Ich hätte eine Frage zu dem Mount App oder allgemein ... bin leider ein Linux-Dummy :eek:

Ist es möglich auch externe Netzwerkdrives wie z.B. von einer Dreambox etc. zu mounten?

Dank im Voraus für Antworten und Hinweise.
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Wenn auf der Dreambox ein NFS-Server läuft und die dort vorhandene Datei exports das zulässt, geht das bestimmt. Da ich keine Ahnung von der Dreambox habe, kann ich dir nur leider nicht weiter helfen.

itari
 

tomecemot

Benutzer
Mitglied seit
20. Jul 2008
Beiträge
16
Punkte für Reaktionen
0
Punkte
0
Vielen Dank itari

Hmmm, also das Einbinden über
mount -t nfs -o rw 192.168.0.37:/hdd /volume1/NFS/Dreambox_37 in Telnet funktioniert soweit, aber leider lassen sich die Files nicht via Filestation kopieren ... kann die Files auch wenn sie angezeigt werden nicht finden.

Hatte gehofft ich könnte mir den Umweg über den PC sparen.
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Hast denn das Verzeichnis /volume1/NFS/Dreambox_37 als Share (gemeinsamer Ordner) vorher angelegt? Denn nur dann wird es ja in der File Station sichtbar.

itari
 

tomecemot

Benutzer
Mitglied seit
20. Jul 2008
Beiträge
16
Punkte für Reaktionen
0
Punkte
0
Ich sehe die Verzeichnisse und Dateien, kann sie auch wählen aber wenn ich sie kopieren oder verschieben möchte kommt ein Fenster: die meldung verschieben oder kopieren Fehler und ein fenster: Name: Name der Datei xy Ursache: Datei oder Verzeichnis nicht vorhanden
 

ag_bg

Benutzer
Mitglied seit
19. Jan 2008
Beiträge
1.736
Punkte für Reaktionen
0
Punkte
0
Als erstes einmal ein dicke Dankeschön an den TO itari für ein weiteres sehr nützliches Tool. Da es ja allgemein bequemer ist, möchte ich hier einmal das aus dem obigen Thema das passende spk. anhängen.

best regards

PS Ließ sich sauber installieren und deinstallieren
 

Anhänge

  • mount.spk
    12,5 KB · Aufrufe: 761

SirDomsen

Benutzer
Mitglied seit
13. Aug 2008
Beiträge
48
Punkte für Reaktionen
0
Punkte
0
krieg es nicht zum laufen!

Hi,

hab gerade meine ersten Versuche mit den 3rd Party apps gemchat. Einige (unter Anderem auch mit php programmierte) laufen bereits prima. nur die mount-App bekomme ich nicht zum Laufen... Muss ich da noch was anderes zusätzlich installieren? Bei den Apps im diskManager wird mir nur der php-code angezeigt...


Grüßle
SirD
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Ich hoffe, dass du den einleitenden Thread im Forum gelesen hast ... das ist der, in dem beschrieben wird, dass man bei meinen 3rd-party-apps immer zuerst (1x) die Init_3rdparty.spk installalieren muss. *guck*. Dort wird nämlich erst in der Apache-Konfigurationsdatein für den System-Apache das PHP freigeschaltet. Im User-Apache läuft das natürlich sowieso schon. Dir ist das bestimmt schon aufgefallen, dass zwei Apache-Web-Server auf dem System laufen ;)

Itari
 

SirDomsen

Benutzer
Mitglied seit
13. Aug 2008
Beiträge
48
Punkte für Reaktionen
0
Punkte
0
Hi,

danke für die schnelle Antwort!
Nur: Genau dieses habe ich gemacht - wonach alles bis auf dein mount-Programm auch funktionierte... In der Zwischenzeit durfte ich eh die Firmware neu installieren, da ich da irgendwas zerschossen haben muss :rolleyes:
Werd es aber nach der Neuinstallation nochmal testen...

Grüße
SirD
 

SirDomsen

Benutzer
Mitglied seit
13. Aug 2008
Beiträge
48
Punkte für Reaktionen
0
Punkte
0
Sers,

also hab interessante Neuigkeiten: Nach der Neuinstallation der Firmware (DSM2.1 0844; DS108j) und wiederherstellen der Konfiguration hab ichs nochmal probiert. Wieder zuerst das Einstellungsfile installiert und danach das Mountprogramm. Lief zunächst alles wunderbar. ABER: Seit dem DS-Neustart ist der DSM nicht mehr erreichbar - selbes Phänomen wie gestern schon. Außerdem geht kein ftp mehr und die Download-Station antwortet auch nicht. Photostation geht aber und per telnet komm ich auch problemlos auf die DS. Bin aber echt ratlos, kann dieses Einstellungsfile was so verändert haben dass es da etwas zerhagelt hat? Hab die (aktuelle?) Version 1.4 verwendet...
Wär echt über Ratschläge dankbar - auch wenns langsam nicht mehr zu diesem Thema gehört :eek:

Greetz
SirD

edit: Ach ja: Per Windows-Freigabe komm ich auch ganz normal an meine Daten auf der DS...
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Wahrscheinlich läuft der System-Apache nicht. Versuch ihn doch mal per Hand zu starten:

Rich (BBCode):
/usr/syno/etc/rc.d/S97apache-sys.sh restart

Und schau danach mal ob du in den DS-Manager kommst.

Itari
 

SirDomsen

Benutzer
Mitglied seit
13. Aug 2008
Beiträge
48
Punkte für Reaktionen
0
Punkte
0
Hi,

cool es hat funktioniert. Nur - was tu ich jetzt damit ich den Server nicht jedesmal von Hand starten muss?

SirD
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Probier mal mit der Brechstange ... fahr das System ein paar Mal runter und wieder rauf und kontrolliere, ob der System-Apache irgendwann von alleine startet.

Itari
 

SirDomsen

Benutzer
Mitglied seit
13. Aug 2008
Beiträge
48
Punkte für Reaktionen
0
Punkte
0
Leider kein Erfolg, auch beim 3. Neustart. Aber: ftp ging wohl vorher auch schon, hatte nur beim Neukonfigurieren anscheinend die Rechtevergabe vergessen. Jedenfalls geht ftp jetzt - nur der DSM bleibt unerreichbar... :(
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Wenn du den System-Apache von Hand starten kannst, dann scheint die Konfiguration ja zu stimmen ...

Du könntest nun nochmal von Hand starten und im DSManager-Protokoll nachschauen, ob er zwar gestartet, aber dann von irgendeinem Ereignis wieder gestoppt wird.

Vielleicht kannst ja noch mal alle spk-Pakete deinstallieren, weil darin vielleicht irgendwas ist, aber so recht glaube ich nicht daran.

Ich habe schon ein paar Mal gehört, dass der System-Apache eine zeitlang Probleme gemacht hat und dann wundersamer Weise auf einmal ging. Deswegen mein Vorschlag von vorhin.

Wenn du nun keine Lust mehr hast, weiter nachzuforschen, dann wende dich an den Synology-Support und lass ihn mal auf deine DS draufschauen.

Itari
 

SirDomsen

Benutzer
Mitglied seit
13. Aug 2008
Beiträge
48
Punkte für Reaktionen
0
Punkte
0
So, hab jetzt Init_3rdparty.spk und mount.spk wieder deinstalliert. Und schon hab ich wieder normalen Zugriff auf den DSM, ohne manuellen Start vom SysApache :eek:

Werd das jetzt erstmal so lassen - aber ne Ahnung an was es gelegen haben könnte?


Greetz
SirD
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat