Tipp: CEntOS 8 No URLs in mirrorlist

Kurzer Hinweis

Die Standrad Repositories für Installation und Updates müssen auf andere Quellen geändert werden. Das ist komfortabel automatisiert:

dnf –disablerepo ‚*‘ –enablerepo=extras swap centos-linux-repos centos-stream-repos

dnf distro-sync

Danach funktioniert dnf update und dnf install

Gibt es andere Lösungen? Oder habt ihr die Distribution gewechselt?

Tipp: Linphone abgehend ohne Audio

Kurzer Tipp wenn Linphone bei einem initiierten SIP Anruf kein Audio überträgt:

Ich nutze Linphone ohne Linphone Account. Es wird aber intern im Standard der STUN Server des zwangsweise konfigurierten Linphone-Account genutzt.

Findige Kollegen haben das durch Beobachtung mit Wireshark heraus gefunden:

Auch bei Anruf über den SIP Account, wird der Download-Stream über STUN.linphone.org erwartet. Nimmt man den Anruf temporär in „Hold“ und setzt wieder zurück, ist Audio in beide Richtungen verfügbar. Das Phänomen tritt nicht bei ankommenden Anrufen über den SIP Account auf!

Wenn kein Account auf Linphone.org genutzt wird, hilft der Eintrag in der /etc/hosts:

127.0.0.1        stun.linphone.org
127.0.0.1        sip.linphone.org

und alles läuft einwandfrei.

Bash: Spalte in CSV hinzufügen

Bei der Aggregation von CSV Files, die in EXCEL weiter verarbeitet werden

sollen, ist auf den Zeilenabschluss zu achten.

 

Automatisiertes hinzufügen einer SPALTE mit korrektem Zeilenabschluss:

 

sed ’s/\r/;\r/‘ datei.csv > datei_neu.csv

 

(wenn Original beibehalten werden soll)

oder mit direkter Verarbeitung:

 

sed -i  ’s/\r/;\r/‘ datei.csv

 

bash: wieistmeineip

Der Dienst, mit dem schnell die eigene IP abgelesen werden kann ist mir zu umständlich. Mittlerweile auch hoffnungslos mit Werbung überladen.

Einfacher, wenn man sich ein kleines schlankes Script schreibt. Hier (m)ein Beispiel (auch Live) :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/bin/bash
wetter=$(curl -H "Accept-Language: de" http://wttr.in/?0)
ip=$(curl ifconfig.co/ip)
ort=$(curl ifconfig.co/city)
cal=$(cal -w --color=always)
datum=$(date "+%0H Uhr und %0M Minuten")
clear
cat <<EOT
 
Hallo $USER
 
Ext IP:     $ip
Lokation:   $ort
Systemzeit: $datum
 
$cal
 
$wetter
 
EOT

Einfach ausprobieren, anpassen und mir eventuell eigene Ideen zukommen lassen.

Terminal Setting

Historische Farben der Monochrom Terminals

Abhängig vom verwendeten Phosphor in der Röhre (Link)

Bernstein 590-610 nm (mein Favorit rgb(221,133,0))

rgb(255, 183, 0) bis rgb(255, 155, 0)
Hex: #ffb700 bis Hex: #ff9b00

Grün 505-555 nm

rgb(0, 255, 84) bis rgb(179, 255, 0)
Hex: #00ff54 bis Hex: #b3ff00

Blau 430 nm

rgb(61, 0, 255)
Hex: #3d00ff

Rot 717 nm Nixdorf Terminal

rgb(220, 0, 0)
Hex: #dc0000

Weiss (Blau) Der DEC VT100 arbeitete mit der Kombination der Wellenlängen 540 und 410 nm (P4 Phosphor)

Beispiel Live

rgb(206,236,255) bis rgb(194,197,198)

BATCH: Autoconnect SSH / Putty / Plink

Ich habe des Öfteren das Problem, das SSH Verbindungen über WLAN sporadisch abbrechen. Bei Backup’s ärgerlich – ich habe hier einen Tipp geschrieben – aber auch das verlieren von getunnelten RDP Verbindungen nervt. In Microsoft Windows Systemen nutze ich PuTTY für SSH Tunnel – mit Hilfe eines kleinen Batchfiles und dem Programm Plink aus dem PuTTY-Paket lässt sich das Problem elegant beheben.

Die Verbindungsparameter vereinbaren wir bequem im UI des Programms PuTTY und merken uns den Namen des gespeicherten Profils. Jetzt erzeugen wir ein Batchfile (Dateiendung .bat)

1
2
3
4
5
6
@echo off
:while
date /T
time /T
C:\Users\irgendwo\plink.exe -batch -N -load profil 
if %errorlevel% neq 0 ( goto :while )

Die Argumente für Plink sind analog zu PuTTY. Wenn im Profil Username, Zertifikat, Tunnel hinterlegt ist, kann man mit -batch -N die Shell und jede Nachfrage unterdrücken. Das Batchfile zeigt lediglich Datum und Zeit des Connects sowie Reconnect an.

Apache2: SAP webgui und mod_proxy

Das Apache2 Modul mod_proxy zur Anbindung des SAP ITS an die Aussenwelt funktioniert recht problemlos wenn es um WebDynpro’s geht.

Will man darüber hinaus auch die WebGUI Online nutzen, gibt es einen Stolperstein. Im Verbindungsaufbau zum WebGUI wird die Session ID (SSO) als POST in der URL ausgetauscht. Das sprengt die Direktive im Filter „/sap“ des Apache welcher dann das „/sap(“ nicht erkennt. Der Prozess bleibt für den User scheinbar stehen.

So funktioniert Verbindungsaufbau und Nutzung einwandfrei. Keine schöne Lösung – ich würde das nur für WebDynpro’s nutzen.

C: RND mit Millisekunden Seed

Das generieren von Zufallszahlen kann schwierig sein, wenn der Zyklus der Generierung mehrmals in einer Sekunde aufgerufen wird. Die Zufallszahl wird innerhalb der Sekunde gleich sein, benutzt man als rnd seed die Unixzeit.

Die Unixzeit ist eine 32Bit Zahl mit Vorzeichen und repräsentiert die Anzahl Sekunden seit 1.1.1970 00:00:00 Uhr. Im Klartext: 32Bit -1 Bit Vorzeichen = 31Bit. 2**31 = 2147483648 -1 (wir rechnen von 0 an) = 2147483647 als maximale Integer Zahl. Die Standardfunktionen srand und rand sind ebenfalls Funktionen welche eine 32Bit Zahl zurück geben. 32Bit Integer als rnd-seed ist die Unixtime, welche erst mit der Sekunde wechselt, weshalb die Vorgehensweise in dem Fall nicht empfehlenswert ist.

In der C Library stdlib.h existieren u.a. die Funktionen srand48 und lrand48. Für die Programmierung macht das keinen Unterschied: Das Seed bleibt 32Bit, genau so der Rückgabewert der Funktionen. Innerhalb der Funktion wird dem 32Bit Wert, 16Bit hinzu gefügt. Das Seed entspricht dann intern einem 13 stelligem Integer (mit Vorzeichen) – die drei zusätzlichen Stellen entsprechen den Millisekunden zur Unixzeit. Funktionsbeispiel:

1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>
 
int zufall(void)
{
  char zu;
  srand48((long int)time(NULL));
  zu = (lrand48()/rand()) %3 + 1;
  return zu;
}

So erhalte ich sehr schnell eine einstellige Zufallszahl zwischen 1 und 3.

Hat jemand eine andere Idee?

Nextcloud: Chat Bot Python

Meldungen automatisieren direkt in eine Talk Gruppe mit Python.

Unser Nextcloud Dienst wird produktiv genutzt und Gruppen tauschen sich über Gruppenchats in Talk aus. Über die API von Nextcloud läßt sich sehr einfach maschinell und automatisiert Nachrichten versenden. Servernachrichten, neue Tickets vom Kunden oder das Papier im Drucker muss nachgefüllt werden – alles ist denkbar.

Es empfiehlt sich einen eigenen Bot User einzurichten. In den Gruppen, in die Nachrichten gesendet werden sollen, muss dieser User hinzu gefügt werden. Hier ein Beispiel in Python:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import os
# Minimal lt Nextcloud API Beschreibung
server = "https://deinServer.de/nextcloud/"
username = "bot"
password = "meinPW"
 
def NextcloudTalkSendMessage(channelId, message):
    data = {
        "token": channelId,
        "message": message,
        "actorDisplayName": "Nachricht",
        "actorType": "",
        "actorId": "",
        "timestamp": 0,
        "messageParameters": []
    }
 
    url = "{}/ocs/v2.php/apps/spreed/api/v1/chat/{}".format(server, channelId)
    payload = json.dumps(data);
    headers = {'content-type': 'application/json', 'OCS-APIRequest': 'true'}
    resp = requests.post(url, data=payload, headers=headers, auth=(username, password))
    print(resp)
 
# Die Gruppe bekommt Test Meldung
output = 'Test'
NextcloudTalkSendMessage('ien9wbax', output)
# Diese Gruppe sieht die Uptime der Maschine
output = os.popen("uptime").read()
NextcloudTalkSendMessage('ien9wbrk', output)

Auf die Reaktion der Anwender bin ich gespannt, wie nützlich das ist. Welche Erfahrung habt ihr?

BASH: Wer hat was gemacht

Viele User die am System arbeiten: Nachher will es keiner gewesen sein, wenn das System Fehler produziert.

Eine Log-Datei, die den User und alle abgesetzten Befehle mit PID und Return-Value aufzeichnet, schafft Transparenz. Editieren wir zuerst die /etc/bash.bashrc und fügen

1
export PROMPT_COMMAND='RETRN_VAL=$?;logger -p local6.debug "$(whoami) [$$]: $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//" ) [$RETRN_VAL]"'

hinzu. Damit weisen wir an, alle eingeben Befehle dem „logger“ zu übergeben, an den rsyslog Channel „local6“ mit Username und Rückgabewert zu übergeben. sed beschneidet lediglich die lfd. Nummer aus der Historie. Jetzt leiten wir local6 in eine Datei um. Dazu editieren wir /etc/rsyslog.conf und fügen hinzu:

1
local6.*    /var/log/historie

Auch wenn der User innerhalb der Session wechselt, ist das jetzt nachvollziehbar. Wenn jemand andere Lösungen kennt, bitte mailen oder anrufen.