dir2html-Script - Definierte Dateinamen "auslassen"



  • Hallo liebe Community,

    ich habe ehrlichgesagt keine Ahnung von C, habe eigendlich auch keine Interesse es zu lernen (zeitmangel; ansonsten sieht das ganz interessant aus). Jedoch habe ich auf meinem Linux-Server (Gentoo 2.4.21) derzeit ein C-Script laufen, das ich unbedingt benötige. Die Sourcen habe ich im irgendwo im Internet gefunden, leider fehlt mir an dem Script etwas.

    Zur Erklärung des Scripts:

    C-Script wird ausgeführt und speichert alle Daten im selben Verzeichnis in eine HTML-Datei und formatiert diese so, das ein Directory-Listing (beispielsweise für einen Webserver, so wie es bei mir auch der fall ist) erzeugt. In meinem Fall wird die index.html erzeugt, da darauf der Webserver zugreift ohne das direkt diese Datei vom Client-Browser aufgefufen wird (so wie eben auch bei Apache etc.).

    Problem:

    Das Script listet nacher bei der Ausgabe in HTML den Scriptnamen selbst und die index.html mit auf (was natürlich im normalfall ungewöhnlich und unerwünscht ist).

    Möchte Lösung:

    Script wird ausgeführt, formatiert alle Dateien im selben Verzeichnis in HTML, ignoriert jedoch den von mir definierten Scriptnamen (in meinem Fall "script") und die index.html um zu verhindern, das der Client-Browser bei http-Anfrage die index.html und den Scriptnamen "script" mit einsehen kann.

    Hier das Script an sich:

    #!/bin/bash
    
    # Variablen
    page=index.html         #default output file name
    fmask="*"
    if [ $# -gt 0 ]
    then
        fmask="$@"
    fi
    echo Files: $fmask
    
    # Html header
    echo \<html\> > $page
    echo \<head\> >> $page
    echo \<title\>List of Files\</title\> >> $page
    echo \<META name=\"generator\" content=\"dir2html v1.0\"\> >> $page
    echo \</head\> >> $page
    echo \<body\> >> $page
    echo \<H2\>List of Files\</H2\> >> $page
    echo \<pre\> >> $page
    
    # Links erstellen
    for i in $fmask
      do
        echo \<A HREF=\"${i}\"\>`ls -l "${i}"`\</A\> >> $page
      done
    
    # Close the html
    echo \</pre\> >> $page
    echo \<HR\>\<center\> >> $page
    echo \</center\> >> $page                                                           
    echo \</body\> >> $page
    echo \</html\> >> $page
    

    Wäre dankbar wenn mir jemand die Lösung auf die Hand klatschen würde.

    MfG,
    Michael



  • Das ist doch kein C; das ist Bash.

    Aber wenn Du das beheben möchtest, dann mach einfach sowas:

    for i in $fmask
      do
        wenn Dateiname nicht in Blacklist:
        echo \<A HREF=\"${i}\"\>`ls -l "${i}"`\</A\> >> $page
      done
    


  • Sorry, aber ich habe keinerlei Programmiertechnischen vorstellungen in meinem Gehirn. Wenn du mir das einfachso in mein Script schreiben würdest und mir die Lösung ausgibst, wäre ich dir sehr dankbar.

    Ich dache C wäre (fast) das gleiche wie bash ?!

    MfG,
    Michael



  • Hallo,
    Ich hab mir das ganze gerade nochmal angeschaut; Du kannst Doch ohnehin angeben, für welche Dateien Du das Skript aufrufen möchtest; dafür ist ja fmask da.

    Andererseits solltest Du das Skript schleunigst wegschmeißen, es ist nämlich ziemlich mies, kann ja nichtmal Dateien mit Leerzeichen verarbeiten.
    Für was besseres frag einfach Freund Google oder freshmeat.net wenns was richtig umfangreiches sein soll.

    Ich dache C wäre (fast) das gleiche wie bash ?!

    Cool, das sollte ich in meine Sig tun; das ist so ziemlich das falscheste was ich in den letzten Monaten hier gelesen habe. 😉


Anmelden zum Antworten