Skip to content

Linux Befehle - ls & tail

Linux
1 1 482
  • Jeder von Euch weiß hoffentlich, was ein Script ist!? In diesen Scripten, schreibt man eine Reihe von Linuxbefehlen rein, die beim Aufrufen des Scriptes dann zeilenweise abgearbeitet werden. Hier mal ab und zu, ich hoffe für den ein oder anderen interessant, nette Beispiele. Hier das Erste 😉

    Wir haben ein Backup-Verzeichnus, in das regelmäßig VMs gesichert werden, auf dem Host. Nun möchten wir ab und zu die letzte Version sichern, sagen wir hier bei mir zu Hause. Es soll hier jetzt nicht ums runterladen usw. gehen, sondern nur um das Suchen und Finden der letzten aktuellen Sicherung.

    webserver=$(ls -1tr --group-directories-first vzdump-qemu-100*.vma.* | tail -n 1)
    

    Das da oben ist ein funktionierendes Beispiel. Was macht es? Wir zerlegen das mal ein wenig, da es sich hier um zwei Befehle handelt, die zusammengefasst werden.

    * webserver
    * ls -1tr --group-directories-first vzdump-qemu-100*.vma.*
    * tail -n 1
    

    webserver ist dabei eine Variable
    Der Befehl ls sollte allgemein bekannt sein, hier kombiniert mit ein paar Optionen
    Und der Befehl tail

    ls

    ls steht für List und gibt den Inhalt eines Verzeichnisses aus. Die Optionen bedeuten

    -1                                   list one file per line.  Avoid '\n' with -q or -b
    -t                                   sort by modification time, newest first
    -r, --reverse                        reverse order while sorting
    --group-directories-first            group directories before files;
    

    Quelle: ls --help

    Jedes Ergebnis kommt in eine Zeile, das Neueste zuerst. Und das Ganze reverse, also anders herum. Damit steht das neueste File unten. Evt. vorhandene Ordner kommen an den Anfang der Ausgabe. Beispiel

    ls -1tr --group-directories-first vzdump-qemu-100*.vma.*
    vzdump-qemu-100-2019_09_05-03_00_01.vma.lzo
    vzdump-qemu-100-2019_09_12-03_00_01.vma.lzo
    

    Hier sehen wir, das wir zwei Dateien haben. Die Neueste steht ganz unten.

    tail

    Mit tail kann man sich die letzte Zeile einer Datei anzeigen. Hier im Beispiel, geben wir die letzte Zeile mit

    -n 1
    

    aus. Standardmäßig gibt tail die letzten 10 Zeilen aus. Somit bekommen wir von unserem Beispiel oben, die letzte Zeile angezeigt.

    root@vms-01 /backup/dump # ls -1tr --group-directories-first vzdump-qemu-100*.vma.* | tail -n 1
    vzdump-qemu-100-2019_09_12-03_00_01.vma.lzo
    

    Ausgangsbefehl

    Der Befehl ganz oben, ich wiederhole noch mal

    webserver=$(ls -1tr --group-directories-first vzdump-qemu-100*.vma.* | tail -n 1)
    

    macht folgendes. Das $-Zeichen speichert das Ergebnis von ls und tail zwischen und weist es der Variablen webserver zu. Das Zeichen | verbindet zwei Linuxbefehle, erst wird der eine abgearbeitet, dann der Zweite. Diese Variable können wir dann weiterverarbeiten. Beispiel

    echo $webserver
    vzdump-qemu-100-2019_09_12-03_00_01.vma.lzo
    

    Wer inhaltliche Fehler findet, dafür gibt es hier den Button mit der Aufschrift Antworten 😉

  • AI Bots aussperren

    Linux linux block-ai nginx
    2
    0 Stimmen
    2 Beiträge
    147 Aufrufe
    FrankMF
    Wir können das noch für eine sanfte Methode erweitern, das ist die Datei robots.txt, wo man sich in alten Zeiten mal dran hielt. Einige Bots machen das, andere nicht. Praktisch, das o.g. Projekt bietet diese Datei auch an. Dann werden wir das kurz mal mit einbauen. ai-block.sh #!/bin/bash # Script um AI-Bots zu blocken # https://github.com/ai-robots-txt/ai.robots.txt/tree/main mkdir /root/AI-test cd /root/AI-test ## Daten holen curl -O https://raw.githubusercontent.com/ai-robots-txt/ai.robots.txt/master/nginx-block-ai-bots.conf curl -O https://raw.githubusercontent.com/ai-robots-txt/ai.robots.txt/master/robots.txt ## Daten in nginx einbauen mv nginx-block-ai-bots.conf /etc/nginx/blocklists/ mv robots.txt /var/www/html ## NGINX neustarten systemctl restart nginx.service Damit das in nginx funktioniert. Den Server Block um folgendes erweitern. # Serve robots.txt directly from Nginx location = /robots.txt { root /var/www/html; try_files $uri =404; } Kurzer Test https://<DOMAIN>/robots.txt Ergebnis User-agent: AI2Bot User-agent: Ai2Bot-Dolma User-agent: Amazonbot User-agent: anthropic-ai User-agent: Applebot User-agent: Applebot-Extended User-agent: Brightbot 1.0 User-agent: Bytespider User-agent: CCBot User-agent: ChatGPT-User User-agent: Claude-Web User-agent: ClaudeBot User-agent: cohere-ai User-agent: cohere-training-data-crawler User-agent: Crawlspace User-agent: Diffbot User-agent: DuckAssistBot User-agent: FacebookBot User-agent: FriendlyCrawler User-agent: Google-Extended User-agent: GoogleOther User-agent: GoogleOther-Image User-agent: GoogleOther-Video User-agent: GPTBot User-agent: iaskspider/2.0 User-agent: ICC-Crawler User-agent: ImagesiftBot User-agent: img2dataset User-agent: imgproxy User-agent: ISSCyberRiskCrawler User-agent: Kangaroo Bot User-agent: Meta-ExternalAgent User-agent: Meta-ExternalFetcher User-agent: OAI-SearchBot User-agent: omgili User-agent: omgilibot User-agent: PanguBot User-agent: Perplexity-User User-agent: PerplexityBot User-agent: PetalBot User-agent: Scrapy User-agent: SemrushBot-OCOB User-agent: SemrushBot-SWA User-agent: Sidetrade indexer bot User-agent: Timpibot User-agent: VelenPublicWebCrawler User-agent: Webzio-Extended User-agent: YouBot Disallow: /
  • Proxmox 8.3 released

    Proxmox proxmox linux
    2
    0 Stimmen
    2 Beiträge
    240 Aufrufe
    FrankMF
    Ich habe gestern mal eine Neuigkeit ausprobiert, den Import einer Anwendung mittels OVA. Dazu habe ich irgendwo im Netz ein File für OpenProject gefunden (steht schon sehr lange auf meiner Testliste). Der Import war langweilig einfach. Nach Import ein paar Dinge eingestellt, Netzwerk usw. und die VM gestartet. Ok, die Installation war so alt, das ich sie danach wieder gelöscht habe, aber das soll ja kein Problem sein. Man kann OpenProject ja auch mittels .deb Package installieren. Zweiter Test war der "Tag View". Interessantes Feature, was ich auch mal direkt angewendet habe, auch wenn fast alle meine VMs Debian sind
  • checkmk - Rest-Server überwachen

    Verschoben checkmk checkmk linux restic
    1
    3
    0 Stimmen
    1 Beiträge
    563 Aufrufe
    Niemand hat geantwortet
  • Rest-Server

    Verschoben Restic rest-server linux restic
    8
    0 Stimmen
    8 Beiträge
    744 Aufrufe
    FrankMF
    Dann mal eben ausprobiert. Auf meinem Server war die Version 0.9.7 selber, mit go, gebaut. Dann mache ich das auch mit der v0.10.0 so. Aber bevor ich anfange, wird die v0.9.7 gesichert. mv /usr/local/bin/rest-server /usr/local/bin/rest-server_0_9_7 So erspare ich mir im Problemfall das selber bauen. Ok, dann die neue Version bauen. git clone https://github.com/restic/rest-server.git cd rest-server go run build.go Danach befindet sich im Verzeichnis die Binärdatei rest-server Die kopieren wir jetzt cp rest-server /usr/local/bin Danach kurzer Test # rest-server --version rest-server 0.10.0 (v0.10.0-6-g037fe06) compiled with go1.11.6 on linux/amd64 Gut Version passt Dann ein Backup gestartet. Das sichert einen Teil meines Home-Verzeichnis Files: 153 new, 100 changed, 177857 unmodified Dirs: 0 new, 1 changed, 0 unmodified Added to the repo: 81.881 MiB processed 178110 files, 80.571 GiB in 0:28 snapshot 607e0027 saved Applying Policy: keep the last 3 snapshots, 3 monthly snapshots keep 5 snapshots: ID Time Host Tags Reasons Paths --------------------------------------------------------------------------------------- fa97890e 2020-07-25 21:02:05 frank-XXX monthly snapshot /home/frank 5b073bbb 2020-08-30 10:17:27 frank-XXX monthly snapshot /home/frank f7cf37ef 2020-09-06 15:13:03 frank-XXX last snapshot /home/frank 0157462c 2020-09-13 13:32:12 frank-XXX last snapshot /home/frank 607e0027 2020-09-14 08:09:34 frank-XXX last snapshot /home/frank monthly snapshot --------------------------------------------------------------------------------------- 5 snapshots remove 1 snapshots: ID Time Host Tags Paths --------------------------------------------------------------------- 3010b7cc 2020-09-06 11:39:27 frank-XXX /home/frank --------------------------------------------------------------------- 1 snapshots 1 snapshots have been removed, running prune counting files in repo building new index for repo [1:34] 100.00% 17351 / 17351 packs So weit funktioniert das genau wie vorher. Im Changelog stand ja was von Subfoldern. Das betrifft mich nicht, weil ich für jeden User genau ein Verzeichnis habe. So mit alles Gut Dann warte ich mal morgen ab, ob die täglichen Backups der Server rund laufen.
  • VS Code - entferntes Verzeichnis einbinden

    Linux vscode linux
    2
    0 Stimmen
    2 Beiträge
    451 Aufrufe
    FrankMF
    Mein kleines Projekt liegt auch noch auf gitlab.com. Man kann prima die beiden Dienste (VSCode & gitlab.com) verknüpfen. Eine Änderung, ein commit und dann git push origin master Und die Änderungen sind oben. Aber, ich stecke da noch ganz am Anfang der Lernkurve
  • NAS - Cups & Sane

    Linux linux
    1
    0 Stimmen
    1 Beiträge
    511 Aufrufe
    Niemand hat geantwortet
  • Sidebar im Theme Quark bearbeiten

    Grav grav linux
    1
    0 Stimmen
    1 Beiträge
    627 Aufrufe
    Niemand hat geantwortet
  • Let'sEncrypt auf Debian-Server einbauen

    Verschoben Let's Encrypt letsencrypt linux
    1
    0 Stimmen
    1 Beiträge
    831 Aufrufe
    Niemand hat geantwortet