[AWK] : créer un serveur web minimaliste

Print Friendly, PDF & Email

Dans un post précédent, nous avions vu comment lancer un serveur web en python. Cela ne prenait qu’une seule ligne par les miracles de python.

Mais saviez vous qu’avec AWK vous pouviez faire pareil ? c’est fou non ? ben oui c’est possible mais attention cela ne se fait pas en une seule ligne (ou sinon elle sera bien loin du one-liner).

#!/usr/bin/gawk -f
BEGIN {
if (ARGC < 2) { print "Usage: wwwawk  file.html"; exit 0 }
	Concnt = 1;
        while (1) {
        RS = ORS = "\r\n";
        HttpService = "/inet/tcp/8080/0/0";
        getline Dat < ARGV[1];
        Datlen = length(Dat) + length(ORS);
        while (HttpService |& getline ){
		if (ERRNO) { print "Connection error: " ERRNO; exit 1}
                print "client: " $0;
                if ( length($0) < 1 ) break;
        }
        print "HTTP/1.1 200 OK"             |& HttpService;
        print "Content-Type: text/html"     |& HttpService;
        print "Server: wwwawk/1.0"          |& HttpService;
        print "Connection: close"           |& HttpService;
        print "Content-Length: " Datlen ORS |& HttpService;
        print Dat                           |& HttpService;
        close(HttpService);
        print "OK: served file " ARGV[1] ", count " Concnt;
        Concnt++;
      }
} 

 

Après avoir créé votre fichier donnez lui les droits qui vont bien (755) par exemple et créez une fichier file.html. Lancez le script et rendez vous sur votre localhost:8080 et le fichier sera servi.

Je trouve ça trop fort quand même. Pas vous ?

Source : bon article de tuxgraphics

Découvrez  [Linux] : lister les ports en écoute sur une machine