PHP-search&list-Skript

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.

itari

Benutzer
Registriert
15. Mai 2008
Beiträge
21.900
Reaktionspunkte
14
Punkte
0
Man hat manchmal irgendwelche Verzeichnisse in einem Volume, z.B. /volume1/video und möchte sich eine Liste der Dateien in diesem Verzeichnis (rekursiv) anschauen. Hierfür kann das folgenden kleine PHP-Skript verwendet werden.

Voraussetzung: PHP ist aktiviert und die Restriktion 'PHP safe_mode_exec_dir' ist nicht aktiv. Desweiteren wird der IPKG-find verwendet (ipkg install findutils): schneller, besser, mehr Optionen.

Die Datei (list.php) könnte man ins Web-Verzeichnis stellen.

PHP:
<?php
$style = isset($_REQUEST['style']) ? ' style="font-size:'.$_REQUEST['style'].'"' : '';
$name = isset($_REQUEST['name']) ? ' -name "'.$_REQUEST['name'].'" ' : '';
$path = isset($_REQUEST['path']) ? '/volume'.$_REQUEST['path'] : '/volume1/web';
$cmd = '/opt/bin/find '.$path.$name.' -print';

print '<pre'.$style.'>';
print $cmd.'<br><br>';
exec($cmd, $out, $ret);
foreach($out as $f) print utf8_decode($f).'<br>';
?>
</pre>

Aufrufen würde man das Skript im Browser so:
Rich (BBCode):
http://IP_der_DS/list.php?path=1/video&name=*007*&style=10

und das Ergebnis könnte dann so aussehen:

Rich (BBCode):
/opt/bin/find /volume1/video_repos -name "007*"  -print

/volume1/video_repos/007_Diamonds_are_forever_1971.iso
/volume1/video_repos/007_Octopussy_1983.iso
/volume1/video_repos/007_Goldfinger_1964.iso

Das Skript kann man ausbauen! Zum einen kann man noch mehr Suchoptionen (Datum, Eigentümer, usw) einbauen - funktioniert wie beim '-name'; zum anderen kann man die Ausgabe aufbreiten: also noch Filter nachschieben z. B. zum Sortieren oder per awk zerkleinern und vielleicht eine HTML-Tabelle erzeugen.

Wer daraun herumbastelt und was Hübsche hinbekommt, muss (!!!) es hier posten :D

Itari
 
Erste Erweiterungs-Bastelei, um etwas kürzere Ausgaben zu erhalten:

PHP:
$cmd = '/opt/bin/find '.$path.$name.' -print | /opt/bin/sed "s|^'.$path.'|..|" | sort';

Rich (BBCode):
http://IP_der_DS/list.php?path=2/video_dir&name=007*&style=10
Rich (BBCode):
/opt/bin/find /volume2/video_dir -name "007*"  -print | /opt/bin/sed "s|^/volume2/video_dir|..|" | sort

../1962/007_Dr._No_1962.iso
../1963/007_From_Russia_with_Love_1963.iso
../1964/007_Goldfinger_1964.iso

Itari
 
Zuletzt bearbeitet:
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