Crontab bearbeiten

In jedem UNIX System gibt ein Scheduler, der Aufgaben zeitabhängig startet. Dir Crontab Tabelle legt diese Aufgaben fest mit der entsprechenden Uhrzeit oder einem Intervall.

Die Aufgaben können Shell Scripte, PHP oder auch executables sein. der Befehl crontab -l listet die aktuell eingestellten Aufträge. Mit Hilfe des Befehls crontab -e wird ein Editor gestartet der die Einträge bearbeiten läßt.

Crontab Syntax

Jeder Cronjob hat folgendes Format:

Ein Stern * bedeutet Ausführung wird immer erfolgen, also zu jeder Minute, jeder Stunde, jedem Tag, jedem Monat oder jedem Wochentag. Um die einzelnen Stellen auseinander zu halten, hilft folgendes Diagramm:

Für die ersten fünf Stellen, also die Zeitwerte sind folgende Optionen zusätzlich möglich:
* = Ausführung immer (zu jeder…)
*/n = Ausführung aller n
n,x,y = Ausführung um/am n, x und y

Cronjob Beispiele

Als Beispiel soll jede Nacht um 5 Uhr morgens das Skript, würde man den Cronjob folgendermaßen anlegen:

Cronjob-Ausgabe in Logfile umleiten

0 8,17 * * * /usr/bin/script.sh >>/var/log/cron/send_reminder_mail 2>&1

Cronjob-Ausgabe verwerfen

0 8,17 * * * /usr/bin/script.sh >/dev/null 2>&1

/etc/cron* Verzeichnisse

Eine weitere Möglichkeit Cronjobs anzulegen sind die Verzeichnisse unter /etc/cron*, in denen alle enthaltenen Dateien zum bestimmten Zeitpunkt ausgeführt werden. Die Dateien im Einzelnen

/etc/cron.d/ = Erweiterungen zur /etc/crontab-Datei, gleiche Syntax.
/etc/cron.daily/ = Einmal irgendwann täglich.
/etc/cron.hourly/ = Einmal irgendwann stündlich.
/etc/cron.monthly/ = Einmal irgendwann monatlich.
/etc/cron.weekly/ = Einmal irgendwann wöchentlich.

Die letzten vier werden oft genutzt, wenn ein Job in einem bestimmten Interval erledigt werden muß, der genaue Zeitpunkt hierfür aber unerheblich ist.

Weitere Information

Intervall Beispiele: https://crontab.guru/examples.html

X Wege zum eigenen Mediaserver

Dank vieler Mediatheken diverserer Sender ist der Zugriff auf verpasste Sendungen oder Serien einfach. Seit 4-5 Jahren unterstützten alle neuen TV-Geräte den Zugriff auf diese Medien. Zudem erlauben Zusatzgeräte wie Google Chrome stick, Firestick oder auch Blueray Player auf dieser Zeit den Zugriff.

Mittlerweile gibt es mit der Software MediaView https://mediathekview.de/ die Möglichkeit Inhalte aus den Mediatheken auf die lokale Festplatte herunterzuladen.

Nun gibt mehrere Wege diese filme anzuschauen.

1.) Der USB Stick

Verfügt das TV Gerät über einen USB Eingang, unterstützt er zumeist auch das gängige MP4 Format, so das die Filme einfach kopiert und am Fernseher ausgewählt werden können. Auch Verzeichnisse werden unterstützt.
Die meisten Geräte sortieren die Inhalte nach dem Namen, so das sich bei Serien eine Nummerierung anbietet.

So vorbereitet lassen sich die Folgen leichter wiederfinden.

2.) Der DLNA Server

DLNA steht für Digital Living Network Alliance. Es ist ein Standard um Medien über ein Netzwerk verfügbar zu machen. Er wird von einer ganzen Reihe von Software Lösungen verwendet. Auch einige Router unterstützten ihn.

Hier die wichtigsten:

Der Fritzbox Router

Die meisten Modelle unterstützen die Freigabe von Medien, die auf dem internen Speicher abgelegt werden oder auch auf externen USB Sticks.

Der Universal Media Server (Windows)

Diese freie Softwarelösung https://www.universalmediaserver.com/ stellt Fotos, Filme und Musik im internen Netzwerk zur Verfügung. Zur Konfiguration steht eine Oberfläche zur Verfügung, die ein oder mehrere Verzeichnisse freigibt. Anhand der Dateiendungen werden die Medien dem Kanal zugeordnet.

Bildergebnis für universal media server

Kodi Server (Xmbc) (viele Platformen)

Bildergebnis für media server xbmc config

Wandern rund um Osnabrück

Das Zittertal

Meller Berge

DistanzZeitHöhenunterschiedBewertung
5,3 km1:20 h160 m

Holte

DistanzZeitHöhenunterschiedBewertung
13 km3:00 h309 m

Voxtrup/Eistrup/Rochusberg

DistanzZeitHöhenunterschiedBewertung
13,3 km2:55 h490 m

5 Wanderrouten aus der Noz

Link aus der Noz vom 15.08.2020

Access Couchbase

After I installed the Couchbase server on my Linux machine I wanted to show some date into a web browser using my own application.

I found this page which gave me the intial idea who to start. In teh Eclipse I create a new maven project based on JDK 8. All sources were added and the pom.xml updated. However the code were not able to run and I made several adjustments on it.

public @Bean Bucket bucket() {
    Cluster mycluster;
    // mycluster = CouchbaseCluster.create(hostname);
    mycluster = Cluster.connect(hostname, user, password);


    return mycluster.bucket(bucket);
    // return cluster().openBucket(user, password);
}

The connect to the DB has change with version 3 of the client. Also I add the user name to the application.properties.
The pom.xml has been updated with these entries:


<properties>
    <jackson.version>2.11.2</jackson.version>
</properties>    
<dependency>
        <groupId>io.projectreactor</groupId>
        <artifactId>reactor-core</artifactId>
        <version>3.3.9.RELEASE</version>
    </dependency>
<dependency>
     <groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-logging</artifactId>
	<version>1.3.1.RELEASE</version>
</dependency>

In addtion I deleted some lib from the .m2 couchbase directory before they get installed without error.

Now I created a runtime environment using the Application/Main class and I was able to start the Tomcat.

There are a couple of issues with the client jar of couchbase and dependencies. Also the API has been changed since the web site mention above has been created. Now the cluster is the main entitiy to query the database:

mycluster = Cluster.connect(hostname, user, password);couchbase.Database.setCluster(mycluster);
Bucket bucket = mycluster.bucket(bucket);
String query = "select city,code,country, description from <code>beer-sample</code> where code == '94107' ";
QueryResult result = curCluster.query(query);
return extractResultOrThrow(result);

private static List> extractResultOrThrow(QueryResult result) {    
List<Map<String, Object>> content = new ArrayList<Map<String, Object>>();
    for (JsonObject row : result.rowsAsObject()) {
        content.add(row.toMap());
    }
    return content;
}

Postman request

Post request to product rest api

The couchbase is offering a API which is exposed at 8093 (not 8091 for the DV itself)

Using this statements can be executed using the statement param in the body. Also a basic auth needs to be provided which is the user credentials.

Raspi Images



To extend a given image from a smaller SD card to a larger one is more complicated as I initially thought.

Whenever I copy a older image file to a any card it get always the same size on this card whle the addtional space isn’t used.
When i try to enhance it and reapply the image it is still the same size.

Also using dd doesn’t give a different result.
So I used another image to start the Machine and put the card reader into one usb port.

Here I take a backup using tar and copy it to a network drive. After I use fdisk to drop the second partion and create it again using all space. Now I get back the files from the tar file and replace the SD card.

Now it get boot up showing the addtional size.



Bose Soundbar mit einem Samsung TV

Im Dezember 2017 hab eich eine Bose Soundbar 300 angeschafft um den Klang des Samsung TV zu verbessern. Zuvor hatte ich eine Haman Kardon 5.1 Anlage angeschlossen, die aber wegen der vielen Kabel nicht mehr um Einsatz kommen sollte.

Die Installation der Soundbar war einfach um lief problemlos. Nachdem einige Funktionen ausprobiert hatte, war das Gerät nicht mehr zu bewegen das TV  Audiosignal auszugeben. Alle Versuche, wie das komplette Ausschalten, die Neuverbindung oder das Aufspielen eines Updates, schlugen fehl.

Recherchen im Internet deuten darauf hin das es zwischen Geräten einiger Hersteller und der Soundbar Kommunikationsprobleme gibt. Es wurde darauf hingewiesen das das hier benutzte ARC Verfahren zur Steuerung noch nicht hinreichend entwickelt und abgestimmt ist. In meinem Fall scheint der Fernseher die Informationen der letzten Verbindung zwischen zu speichern was eine erneute Verbindung verhindert. Erst als der TV über Nacht stromlos gelassen wurde (Im Netz war von 3 Stunden die Rede) wurde das Gerät wieder erkannt. Hierbei sollen die letzten Verbindungsinformationen gelöscht werden.

Auch das Drücken des Netzschalters soll die gleiche Wirkung haben. Bei meinem Gerät gibt es eine Art Joystick auf der Rückseite, den ich aber nicht dazu bewegen konnte das Gerät neu zu starten.

Oracle 11 client connecting to Oracle 12

After installing the Oracle 11 client version 11.2 and lower the access to a Oracle 12 database is denied.

First error is ORA-28040: No matching authentication protocol error which can fixed by adding the parameter

SQLNET.ALLOWED_LOGON_VERSION_SERVER = 10 in the sqlnet.org of the admin/network directory of the client. (Oracle doc )

But even after adding this the login to the database is denied and the error user access denied is returned. The reason behind is the field password_versiosn of the view dba_users. In order to change it to version 10 the sstem has to be changed to non case sensitive password and the user needs to be altered to update the password field. After the password_versions is showing 10 in addtion to the other ones.

Detailled instruction are here: Change intructions

Unix/Linux Befehle

Find command

Dieser Befehl hilft sowohl dem Administrator als auch dem Programmierer um Dateien im Dateisystem zu suchen. Der einfachste Syntax ist:
find . -name <Suchbegriff>
Als Beispiel:
find . -name *.conf

Dabei werden alle Verzeichnisse inklusive Unterverzeichnisse durchsucht.
Eine sehr nützliche Erweiterung ist der -exec Parameter. Er erlaubt zusätzliche Kommandos oder Tools auszuführen.

Häufig benutzt wird hier der grep Befehl um in allen gefundenen Dateien nach einem Text zu suchen:
find . -name *.conf -exec grep -i apache {} +
Das Pluszeichen am Ende bedeutet das alle Dateien in einem Aufruf des grep Kommandos angehängt werden. Ein ; am Ende führt für jede Datei ein separates grep aus.

Zeige die aktuellste Datei in einem Verzeichnis

Um in einem Verzeichnis alle Dateien in aufsteigender Reihenfolge nach Datum anzuzeigen reicht ls -ltr. Dieser Befehl zeigt eine ausführliche Liste an.

Für diesen Zweck wird jedoch nur der Dateiname benötigt, der mit Hilfe
ls -t1
ermittelt wird. Um nun die aktuellste Datei zu finden muss das Ergebnis rekursiv ermittelt werden: ls- t1r
in einem Skript kann mit diesen Befehl verwendet werden.
DATEI=`ls -t1r urlaub*`
less $urlaub

 

AWK

https://likegeeks.com/awk-command/

Disk usage

In order to calculate the files usage of a directory the du command is quite useful. 
Eg. Du without any parameter it shows all subdirectorie and their size

Using du -max-depth=1 shows only the subdirectories, but not the ones underneath.

 

Scripts

LOGFILE=/var/log/mylog.log
CURRDATE=`date +"%Y.%m.%d %H:%M:%S"`

if [ ! -f $LOGFILE ] ; then
touch $LOGFILE
fi

Raspberry Pi – Kurzeinführung

Die Idee dahinter

Anfang 2012 haben einige Lehrer eines College in Cambridge einen Einplatinenrechner herausgebracht, der Studenten und Schüler es ermöglichen sollte am Rechner zu programmieren ohne dazu den Familiencomputer zu nutzen. Der Rechner sollte erschwinglich sein, aber auch Netzwerk tauglich und er sollte an vorhandenen Bildschirmen laufen.

Ein kleiner Computer mit vielen Fähigkeiten

Als Ergebnis ist ein kleiner Einplatinencomputer entstanden, der vielfältige Schnittstellen besitzt:

  • Netzwerk
  • HDMI – für die Bildschirmausgabe
  • SD Kartenslot – für eine SD Karte die auch das Betriebssystem enthält
  • Stromanschluss
  • USB – Anschlüsse

Raspberry_Pi_2_Model_B_v1.1

Als Betriebssystem dient eine spezielle Version des Linux Derivats Debian mit dem Namen Raspian. Es läßt sich ganz einfach mit Hilfe eines Windows PCs und eines SD Kartenlesers installieren. Außerdem kann auch eine grafische Oberfläche gestartet werden basierend auf einem XServer.

Raspbian-Desktop_Version_2015-09-25

 

IPhone wird nicht erkannt

Beschreibung

Wenn das IPhone mit der der USB Buchse verbunden wir ertönt ein Ton, jedoch wird das Gerät nicht von ITunes erkannt.

Lösung

In einigen Fällen hat die Installation einer neuen Version von Itunes oder anderen Komponenten dazu geführt das die USB Treiber nicht richtig funktionieren.
Um sie neu zu installieren muss man die INF Datei in dem Treiberverzeichnis als Administrator neu ausführen.

Schritt 1:
Entfernen des IPhone vom Computer.

Schritt 2:
Wechseln in das Verzeichnis C:\Programme\Common Files\Apple\Mobile Device Support\Drivers

Schritt 3:
Ausführen der Datei usbaapl64.inf (doppelter Click)
PC neu starten und Iphone verbinden

Nun sollte das Gerät wieder erkannt werden.

Der Treiber ist nicht vorhanden

Mit der letzten Version des iTunes ist der oben beschriebene Treiber nicht mehr vorhanden. Wird das iPhone eingesteckt erschient bei offenem iTunes eine Meldung, die angibt den Treiber zu installieren. Trotz mehrmaliger Versuche gelingt dies nicht. En Hinweis im Internet empfahl die Neuinstallation von iTunes, Bonjour und den Apple Application Support.

Nach der Neuinstallation wurde das iPhone wieder erkannt, die Medienbibliothek ist erhalten geblieben.

Iphone wird nicht als Wechseldatenträger erkannt

Beschreibung:

Das IPhone wird nach dem Anschluss an den Computer nicht erkannt.

Lösung:

Wird das IPhone nicht als Datenträger erkannt kann es helfen wenn alle physikalischen Ursachen ausgeschlossen sind den Treiber neu zu installieren.

Dazu muss das  Iphone zunächst vom Computer getrennt werden. Anschließend an Geräte Manager aufrufen. Dazu einfach Geräte in die Cortina Suchleiste eingeben. In dem Fenster ganz unten den Geräte-Manager auswählen.

geraete_manager_iphone_1

In der Liste der USB Geräte aufklappen und nach dem Apple Treiber suchen. Mit der recht Maustaste klicken und „Treibersoftware aktualisieren“ anwählen.

geraete_manager_iphone_2

Nach erfolgter Installation das IPhone wieder anschließen und eine Aktion auswählen. Zum Beispiel: Fotos importieren.