Blog

Tail

De opdracht “tail -f ” wordt gebruikt in Unix-achtige systemen, zoals Linux, om de inhoud van een bestand weer te geven en wijzigingen in realtime te volgen. Met deze opdracht kun je de meest recente regels van het bestand bekijken en automatisch nieuwe regels zien terwijl ze worden toegevoegd.

Het gebruik van “tail” op zichzelf geeft normaal gesproken de laatste 10 regels van een bestand weer. Door de “-f” optie toe te voegen, schakel je de “follow” modus in, wat betekent dat “tail” actief blijft en continu updates van het bestand weergeeft. Dit is vooral handig bij het monitoren van logbestanden of het volgen van de voortgang van een lopend proces waarbij nieuwe informatie wordt toegevoegd aan het bestand.

Om specifiek een ander aantal regels weer te geven, kun je de “-n” optie gebruiken, bijvoorbeeld “tail -n 20” om de laatste 20 regels te bekijken. Het bestand “testfile” is het specifieke bestand waarvan je de inhoud wilt volgen. Zorg ervoor dat je de juiste bestandsnaam en het juiste pad opgeeft als het bestand zich niet in de huidige werkdirectory bevindt.

tail -f -n 20 /var/log/syslog

Je kunt “tail -f” uitvoeren in een terminalvenster om de initiële regels van een bestand te bekijken en vervolgens automatisch nieuwe regels zien verschijnen terwijl ze worden toegevoegd. Om het proces te stoppen, kun je de toetscombinatie “Ctrl+C” gebruiken.

pip en modules installeren op Linux voor Python

In Python kun je een boel doen. Dit wordt nog verder verruimt met extra modules die je kunt installeren.

Denk hierbij aan

  • Het kunnen sturen van mail.
  • Tekst kopieren en plakken.
  • Gebruik maken van hardware componenten zoals
    • WiFi
    • Bluetooth
    • Webcam

Je zult ziet dat bijna in alle python script gebruik gemaakt wordt van modules. Deze worden altijd boven aan het script geplaatst en zo als eerste opgehaald en ingelezen, zodat deze in de rest van het script gebruikt kan worden.

  • import os
  • import sys
  • import csv

Een boel modules zijn standaard ook al geinstalleerd samen met de installatie van Python zelf, echter daarnaast zijn er via pip een grote lijst aan extra modules toe te voegen. Om dit soort modules te kunnen gebruiken, moet je eerst pip zelf installeren.

Via een terminal omgeving kun je pip installeren met de volgende regel:

sudo apt install python3-pip

Als pip succesvol geinstalleerd is, kun je modules toevoegen.

Om een kleine impressie te krijgen van wat er te installeren is aan extra modules kun je in de terminal invoeren:

pip3 list

Resticties kunnen er voor zorgen dat je niet op een normale manier modules kunt installeren. Hiervoor kun je de module als een script runnen, waardoor je als nog de module geinstalleerd krijgt.

sudo pip3 install <modulenaam>

Soms kan het zijn in verband met restricties op je computer dat het installeren van modules niet lukt. Mogelijk lukt het wel op de volgende manier:

sudo python3 -m pip install <modulenaam>

Nu dat pip geinstalleerd is, en je een module hebt geinstalleerd, kun je die op meerdere manieren toepassen in je script. Modules kunnen klein zijn, maar ook bijzonder groot. Dan is het beter voor de prestaties van het script om alleen een onderdeel van een module te gebruiken.

Om als voorbeeld te nemen het eerdere genoemde ‘os’ module. Je kunt de gehele module inladen:

import os
os.system("ls")

Als je maar één onderdeel nodig hebt van de ‘os’ module importeer je alleen dat wat je nodig hebt.

from os import system
system("ls")

In het genoemde voorbeeld kun je misschien de behoefte voelen om de module of het onderdeel van de module een aparte naam te willen geven. Dit is mogelijk en kan ook soms handig zijn om lange namen te vereenvoudigen.

from os import system as var
var("ls")

Bij het gebruiken van modules is het altijd raadzaam om de documentatie goed te lezen. Python is altijd hetzelfde echter een module niet altijd. Een website die in documentatie heeft over modules is pypi.org. Deze is echter wel in het engels.

Email verzenden met Python

In sommige scripts waarbij je informatie wilt delen met anderen is het handig om informatie te versturen via email. Daarom is het erg handig dat email verzenden met python met een eenvoudige script goed te doen is. Email verzenden met python heeft eigenlijk alleen een stukje script wat werkt nodig.

Daarom een stukje script wat prima zou moeten functioneren. Zoals je ziet moet je natuurlijk wel even wat essentiele informatie invoeren om het versturen van mail mogelijk te maken. Dit heeft te maken met de uitgaande mailserver van je email provider. Daarnaast heeft elk mailadres een wachtwoord.

    import email, ssl, smtplib
    onderwerp = "Het onderwerp van je mail"
    emailtekst = "Tekst wat je wilt hebben in de mail zelf"
    ontvanger_email = doel@mailadres.nl
    port = 465   #poort voor de uitgaande mailserver
    smtp_server = "smtp server van de mail provider"
    verstuur_email = "jou@mailadres.nl"
    wachtwoord = "het wachtwoord van de mail account"
    tekst = f'Subject: {onderwerp}\n\n{emailtekst}'

    context = ssl.create_default_context()
    with smtplib.SMTP_SSL(smtp_server, port, context=context) as server:
        server.login(verstuur_email, wachtwoord)
        server.sendmail(verstuur_email, ontvanger_email, tekst)

grep

Een handige commando om wat meer overzicht te creëren om alleen dat wat je nodig hebt zichtbaar te maken. Het grep commando kun je aan vele andere commando’s koppelen, maar ook aan tekst gebasseerde bestanden.

Terminal: cat /var/log/syslog | grep CRON

In dit voorbeeld wordt het tekstuele bestand syslog ingelezen, en wordt iedere regel waarin de tekst CRON staat weergegeven. Op die manier kun je b.v. alle cronjob activiteiten kort een overzichtelijk worden weergegeven.

Terminal: lsusb | grep root

Met deze geeft lsusb alleen de regels aan waar de tekst root in wordt vermeld.

Terminal: cat voorbeeld.txt | grep maandag

Soms is het ook wel handig dat de output direct wordt opgeslagen naar een bestand. Een kleine toevoeging aan de commandline >nieuw.txt aan het einde schrijft de informatie direct weg.

Terminal: cat voorbeeld.txt | grep maandag >maandag.txt

Bash History

Sinds de laatste installatie van Linux op mijn laptop heb ik blijkbaar al 2034 keer iets in de terminal getypt. Komt dan incidenteel wel eens voor dat ik me de vraag stel van ‘wat had ik ook alweer ingetypt?’.

Gelukkig ben ik gaande weg een aantal tips tegen gekomen wat me helpt om snel er achter te komen wat ik allemaal al eens heb gebruikt aan commandlines.

Een snelle manier om dit op te vragen:

Terminal: history

Alles wat je ingevoerd hebt wordt ook textueel vast gelegd in het bestand .bash_history welke je kunt weer vinden in je home directory. Let hierbij wel op dat dit een verborgen bestand is. Dit bestand kun je openen met een tekstverwerker zoals nano, gedit, vi of wat je ook maar handig vind.

Je kunt dit bestand ook eventueel opschonen om b.v. foutieve invoeringen te verwijderen, zodat je invoer geschiedenis wat zuiverder is.

Terminal: nano ~/.bash_history

De ~ verwijst naar je home directory, dus door dit aan te geven weet je zeker dat je meteen het juiste bestand hebt.

Om de history helemaal door kijken kan af en toe ook niet handig zijn, vooral als deze inmiddels al erg opgelopen is. Een handige optie in de terminal is dan om ctrl+R gelijktijdig in te drukken. Als je dan een gedeelte van de commandline nog weet, kun je op deze manier snelzoeken.

Bij CTRL+R zie je dit:

Hier typ ik b.v. in: sudo tar. Dit wordt automatisch aangevuld. Je kunt dan ook meteen op enter drukken om de commandline uit te voeren.

Uiteraard kun je ook gewoon pijltje omhoog en omlaag gebruiken om de laatst ingevoerde commandlines op te zoeken.

Twente Milieu

Tegenwoordig heeft ieder bedrijf wel een app, echter is dit niet altijd handig. Bij de app van Twente Milieu werd ik met enige regelmaat niet goed geinformeerd over wanneer de bakken weer aan straat mocht, en je kijkt uiteraad ook niet altijd in hun app.

Gelukkig kwam ik een mooi script tegen die mij al een hele tijd up-to-date houdt over wanneer de groene, grijze en oud papierbak geleegd wordt.

Via https://jamalipez.nl/twente_milieu/ kun je je postcode invullen en daarop volgens gooit het script een Ical bestand eruit die je weer kunt toevoegen aan je agenda. Deze heb ik succesvol getest en gebruikt met Google Calender en Microsoft Outlook.