PHP-search&list-Skript

Status
Für weitere Antworten geschlossen.

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
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
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
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