Linux Hacks

Mittwoch, 13. Oktober 2021

Symlinks vor dem löschen mit mount bind schützen

Symlinks werden von chattr nicht unterstützt. Mit mount bind statt Symlinks können diese vor dem löschen/ändern geschützt werden.

$ mkdir c d
$ echo c>c/ok
$ echo d>d/ok
$ sudo mount --bind c/ok d/ok
$ cat d/ok
c
$ rm d/ok
rm: cannot remove 'd/ok': Device or resource busy


Email mit curl verschicken

1. Textdatei mit Mailbody erstellen

cat  << EOF > mail.txt
From: klaus@foo.com
To: peter@bar.com
Subject: Test

Hi Peter,

Diese Mail habe ich Dir mit curl geschickt.

Gruß
Klaus
EOF

2. Email senden

curl -n --ssl-reqd --user "klaus@foo.com:passwd" --mail-from "<klaus@foo.com>" --mail-rcpt "<peter@bar.com>" --url smtps://smtp.smarthost.com:465 -T mail.txt

Geht auch als Einzeiler
curl -n --ssl-reqd --user "klaus@foo.com:passwd" --mail-from "<klaus@foo.com>" --mail-rcpt "<peter@bar.com>" --url smtps://smtp.smarthost.com:465 -T - <<< $'From: klaus@foo.com\n ...'

Hier das Dollar-Zeichen $ als Prefix vor den Body-String setzen, Damit die Newlines richtig gelesen weden!

Awk als Webserver (gawk)

#!/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++;
      }
}

Anmelden