kurse:ef05a-2021:js:webupload

Webserver

  • Computer der Webseiten ausliefert, im einfachsten Fall einfach Dateien, in der URL sichtbar
    • Namensauflösung (DNS) → liefert IP-Adresse von ofi.tech-lab.ch, Verbindung mit IP, Anfrage von Verzeichnis 2022/EF05a/
  • http, bzw. https («s» für secure, mit authentifizierter und verschlüsselter Verbindung)
  • Spezielle Datei index.html, bzw. index.php: Existiert so eine Datei im Verzeichnis, wird anstatt des Listings aller Dateien diese ausgeliefert.
  • Spezielle Datei .htaccess. Regelt Einstellungen des Webservers für das entsprechende Verzeichnis, z.B. Zugriff nur aus den Kanti-Netzen.

Nur mit scp oder sftp. Entweder via Kommandozeile oder mit Hilfe von FileZilla.

# Lokal zum Server:  (im KSBG-wild muss der Port 23 anstatt 40199 verwendet werden).
scp -P 40199 datei.html hansli@tech-lab.ch:verzeichnis/.
 
# Vom Server zu lokal (das aktuelle Verzeichnis ist der Punkt .)
scp -P 40199 hansli@tech-lab.ch:verzeichnis/datei.html .
  • Laden Sie Ihr JavaScript Projekt auf den Webserver. Sie können Ihre html-Datei in index.html umbenennen, damit diese direkt geladen wird.
  • Wenn Sie möchten, dass Ihre Seite von überall zugänglich ist, löschen Sie die Datei .htaccess.
ssh -p 40199 hansli@tech-lab.ch

Generelle Bemerkungen:

  • Die Tabulator-Taste (Tab) vervollständigt Dateinamen so weit wie eindeutig. Zweimaliges Drücken zeigt die verbleibenden Möglichkeiten an.
  • Leerzeichen sind Trennzeichen. Vermeiden Sie diese in Dateinamen (sonst sind die Dateinamen zwischen zu schreiben.
  • Optionen beginnen mit einem Minuszeichen -. Manchmal auch für ausgeschriebene Optionen.
  • Pfeiltaste nach oben geht die Historie der eingegebenen Kommando durch.
  • Unix-Philosophie:
    • Ein Programm kann ein Ding
    • Programme lesen Text als Input und produzieren wieder Text als Output
    • Vom «Standard input» (STDIN) wird gelesen, aus «Standard output» wird geschrieben.
    • Ein- und Ausgabe können umgeleitet werden (z.B. von oder zu Datei oder von oder zu einem Programm)
      • Pipe: | Umleitung in nächstes Programm
      • > Umleitung in Datei (überschreiben), » Umleitung in Datei (anhängen)
      • < lesen aus Datei (anstatt STDIN)
  • Gross-/Kleinschreibung ist relevant!
  • Dateinamen können mit Wildcards spezifiziert werden:
    • * steht für eine Folge aus beliebigen Zeichen (auch keine)
    • ? seht für genau ein beliebiges Zeichen
    • [a-z] steht für genau einen Kleinbuchstaben a-z
    • {txt,TXT} steht für txt oder TXT (z.B. *.{txt,TXT} bedeutet alle Dateien, die mit .txt oder .TXT enden).
    • img{08..12}.jpg steht für img08.jpg img09.jpg img10.jpg img11.jpg img12.jpg
  • Der aktuelle Ordner ist ., der übergeordnete Ordner ist ...
  • Das Homeverzeichnis kann mit ~ abgekürzt werden.
  • ls Dateien anzeigen
    • ls -l Mehr Infos
    • ls -a Alle Dateien (auch solche, die mit . beginnen).
    • ls -lh human readable filesizes
    • ls -ltrh Sortierung nach Datum, neueste zuletzt.
    • ls -lSrh Sortierung nach Grösse, grösste zuletzt.
  • pwd Print working directory (aktuelles Verzeichns anzeigen)
  • cd ordner Verzeichnis wechseln
    • cd .. ins übergeordnete Verzeichnis wechseln.
    • cd ins Homeverzeichnis wechseln.
  • cp source dest, wobei source mehrere Dateien sein können, dann muss aber dest ein Verzeichnis sein.
  • mv source dest, umbenennen, bzw. verschieben wenn dest ein Ordner ist. source können mehrere Dateien sein
    • mmv mehrere Dateien auf einmal umbenennen, nicht standard
  • rm datei, Datei(en) unwiderruflich löschen
  • mkdir ordner Ordner anlegen
  • rmdir ordner leeren Ordner löschen
    • rm -r ordner Ordner mit allem Inhalt unwiderruflich löschen
  • chmod [ugo]{+,-}[rwx] datei Berechtigung auf Datei ändern: user, group, other, read, write, execute.

Beispiel: Meine häufigsten Kommandos

Beispiel: Meine häufigsten Kommandos

cut -f1 -d' '  ~/.bash_history | sort | uniq -c | sort -nr | head -n 40
    548 ls
    288 cd
    265 git
    102 vim
     52 host
     50 make
     47 less
     42 ssh
     42 okular
     33 sudo
     29 exit
     23 bg
     22 cp
     22 adb
     21 grep
     19 ruby
     18 mkdir
     17 mount
     17 libreoffice
     17 bash
     16 cat
     15 mv
     15 gwenview
     14 ping6
     14 apt
     13 telnet
     13 rm
     12 pdftk
     12 ip
     10 for
      8 touch
      8 ps
      8 asy
      7 teams
      7 irb
      7 inkscape
      6 scp
      6 pwd

Die erste Ziffer $d$ von Dateigrössen ist nicht gleichverteilt, sondern ungefähr $P(d) = \log_{10}\left(1+\frac{1}{d}\right)$

Untersuchen Sie diesen Zusammenhang mit allen Dateien unterhalb /usr auf dem Server (oder auf Ihrem Computer, wenn folgende Tools verfügbar sind).

Lesen Sie dazu die Dokumentation zu den folgenden Kommandos und deren Optionen (entweder online oder mit man kommando)

  • find mit -type und -printf
  • cut mit -c
  • sort
  • uniq mit -c

Erstellen Sie einen entsprechenden Graphen in einer Tabellenkalkulation oder gleich mit gnuplot ;-)

find /usr -type f -printf "%s\n" | cut -c 1 | sort | uniq -c

Mit Gnuplot (der Skalierungsfaktor 190000 ist Handgelenk mal $\pi$):

find /usr -type f -printf "%s\n" | cut -c 1 | grep -v 0 | sort | uniq -c | gnuplot -e "set terminal dumb $COLUMNS $LINES; plot '-' using 2:1 with lines, 190000*log(1+1/x)"

Ausgabe mit Gnuplot auf dem Terminal

Ausgabe mit Gnuplot auf dem Terminal

  160000 +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+   
         |                     +                     +                     +                     +                     +                     +                     +                     |   
         |                                                                                                                                                         '-' using 2:1 ******* |   
         |                                                                                                                                                     190000*log(1+1/x) ####### |   
         |*                                                                                                                                                                              |   
  140000 |-*                                                                                                                                                                           +-|   
         |  *                                                                                                                                                                            |   
         |   *                                                                                                                                                                           |   
         |#   *                                                                                                                                                                          |   
         | #   *                                                                                                                                                                         |   
  120000 |-+#   *                                                                                                                                                                      +-|   
         |   #   *                                                                                                                                                                       |   
         |    #   *                                                                                                                                                                      |   
         |     #   *                                                                                                                                                                     |   
         |      ##  **                                                                                                                                                                   |   
  100000 |-+      ##  *                                                                                                                                                                +-|   
         |          #  *                                                                                                                                                                 |   
         |           ## *                                                                                                                                                                |   
         |             ##*                                                                                                                                                               |   
         |               ##                                                                                                                                                              |   
   80000 |-+               ###                                                                                                                                                         +-|   
         |                  * ##                                                                                                                                                         |   
         |                   *  ####                                                                                                                                                     |   
         |                    *     ###                                                                                                                                                  |   
         |                             ####                                                                                                                                              |   
         |                     *********   ###                                                                                                                                           |   
   60000 |-+                            ***** ######                                                                                                                                   +-|   
         |                                   ****** #####                                                                                                                                |   
         |                                         **    #####                                                                                                                           |   
         |                                           *********#########                                                                                                                  |   
         |                                                    *****    #########                                                                                                         |   
   40000 |-+                                                       ******       ###########                                                                                            +-|   
         |                                                               **                ############                                                                                  |   
         |                                                                 ****************************################                                                                  |   
         |                                                                                                        *****#######################                                           |   
         |                                                                                                             ********************** ###############################            |   
   20000 |-+                                                                                                                                 ********************************############|   
         |                                                                                                                                                                               |   
         |                                                                                                                                                                               |   
         |                                                                                                                                                                               |   
         |                     +                     +                     +                     +                     +                     +                     +                     |   
       0 +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+   
         1                     2                     3                     4                     5                     6                     7                     8                     9   

Im und unterhalb des Verzeichnisses /srv/www/ofi/2022/EF05a werden Dateien gesucht, die in .html enden und in den letzten 30 Tagen erstellt wurden:

cd /srv/www/ofi/2022/EF05a
find . -name \*.html -ctime -30

Es gibt noch backup-Dateien der index.html Datei. Diese werden noch herausgefiltert:

find . -name \*.html -ctime -30 | grep -v back

Jetzt müssen wir die Dateinamen noch in Links verpacken. Die kann z.B. in einem schlauen Text-Editor erfolgen oder ebenfalls auf der Kommandozeile:

for a in `find . -name \*.html -ctime -30 | grep -v back`;do echo "<a href='$a'>$a</a><br>"; done

Schlussendlich leiten wir die Ausgabe in eine Datei um (wofür Sie nicht die Berechtigung haben):

for a in `find . -name \*.html -ctime -30 | grep -v back`;do echo "<a href='$a'>$a</a><br>"; done > projects.html
  • kurse/ef05a-2021/js/webupload.txt
  • Last modified: 2022/05/05 09:34
  • by Ivo Blöchliger