Archive for the ‘Linux, Windows & Co.’ Category.

Windows Daten mit Linux Borg sichern

Ich nutze auf meiner Windows-Maschine das Windows Subsystem for Linux (WSL) und habe mal ausprobiert, wie ich Windows Daten mit WSL-Hilfe auf ein NAS sichern kann.

Nach der Installation von borg-backup und den cifs Utilities kann ich das NAS unter Linux mounten:

sudo mount -t cifs -o vers=3.0,user=uwe,password=xxxxxxxxx //192.168.0.40/Datengrab /mnt/borg/

Dann kann ich unter WSL z.B. in den User-Desktop von Windows wechseln und das Backup anschupsen:

uwe@DESKTOP-RH75H57:/mnt/c/Users/Uwe/Desktop$ pwd
/mnt/c/Users/Uwe/Desktop

sudo borg create -v /mnt/borg/borgtarget/::'{now:%Y-%m-%d_%H-%M}' .

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Schnell in den Energiesparmodus wechseln unter Windows

Über eine Verknüpfung auf die Rundll32.exe kann man flink in den Energiesparmodus von Windows wechseln.

In irgendeinem Ordner (z.B. auf dem Desktop) rechte Maustaste => neu => Verknüpfung. Als Speicherort des Elements dann folgendes eingeben:


C:\Windows\System32\rundll32.exe powrprof.dll,SetSuspendState

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Verbinden und Trennen von Netzlaufwerken unter Windows

Mit dem folgenden Befehl kann man in Windows Netzlaufwerke (z.B. Freigaben auf einem Synology NAS) mounten

net use s: \\Diskstation4\Bilder /user:uwe passwort

Mittels net use * /delete lassen sich alle verbundenen Freigaben beenden.

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Virtuelle Desktops in Windows 10

Nachdem ich mich vor einigen durch das unbeabsichtige Öffnen eines neuen virtuellen Desktops selbst behindert habe, wurde es Zeit diesem Windows Feature mal einen kurzen Artikel zu widmen

Virtuelle Desktops verhalten sich wie normale Oberflächen (Windows Desktops), zwischen denen man mittels Tastenkombination wechseln kann. Was früher unter Windows nur mit Zusatzsoftware erreicht werden konnte — in der UNIX / Linux Welt gibt es diese Funktionalität schon seit Jahrzehnten — ist in Windows 10 eingebaut.

Zur Erstellung einen neuen Virtuellen Desktops gibt es unterschiedliche Möglichkeiten:

Möglichkeit A:

  • Man drückt auf den Button „Aktive Anwendungen“ und erstellt dann links oben über den „+ Neuer Desktop“ einen neuen virtuellen Desktop. Hinweis: Wenn der „Aktive Anwendungen“ Button nicht da ist, rechte Maustaste auf die Taskleiste und „Taskansicht-Schaltfläche anzeigen“ anklicken
  • Alternativ drückt man <Windows><TAB>, um in die Taskansicht zu kommen
  • In dieser Taskansicht kann man auch per Maus zwischen den Desktops umschalten
  • In dieser Taskansicht kann man auch einzelne Anwendungen zwischen den Desktops hin und her schubsen oder an alle Desktops verteilen (via Kontextmenü)

Möglichkeit B:

  • <Windows><CTRL><D> um einen neuen Desktop zu erstellen und zu ihm zu wechseln
  • <Windows><CTRL><F4> um den aktuellen Desktop zu schließen
  • <Windows><CTRL><links/rechts> um zwischen den Desktops hin und her zu wechseln

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Linux-Software installieren mit Ansible

Ich habe deutlich mehr als nur ein oder zwei Linux-Rechner, die ich alle gern auf dem aktuellen Software-Stand halte. Da manuelle apt Kommandos auf Dauer lästig werden, habe ich mir jetzt Ansible-Skripte geschrieben, die sehr bald nach dem Aufsetzen eines Linux-Rechners die restliche Arbeit übernehmen. „Sehr bald“ heißt in dem Zusammenhang, nach der grundlegenden Installation und dem Installieren von Ansible selbst mittels apt install ansible. Ansible ist zwar eigentlich dafür gemacht, dutzende, hunderte oder gar tausende Server zu administrieren, aber für die Arbeiten am localhost bietet es auch Vorteile.

Ich nutze dabei zwei Skripte, sogenannte „Playbooks“, eines für die Kombination aus apt update/upgrade und ein Skript für die grundlegende Paketinstallation.

Hier das erste (Quelle: https://www.cyberciti.biz/faq/ansible-apt-update-all-packages-on-ubuntu-debian-linux/):


- hosts: all
become: true
become_user: root
tasks:
- name: Update apt repo and cache on all Debian/Ubuntu boxes
apt: update_cache=yes force_apt_get=yes cache_valid_time=3600

- name: Upgrade all packages on servers
apt: upgrade=dist force_apt_get=yes

Und hier das zweite Playbook für die Installation der grundlegenden Software (lieber aus dem github ziehen, WordPress verändert den Code):


- hosts: all
become: true
become_user: root
tasks:
- name: Install git
apt:
name: git
state: present
update_cache: yes

- name: Install gparted
apt:
name: gparted
state: present
update_cache: yes

- name: Install subversion
apt:
name: subversion
state: present
update_cache: yes

- name: Install emacs
apt:
name: emacs
state: present
update_cache: yes

- name: Install geany
apt:
name: geany
state: present
update_cache: yes

- name: Install vlc
apt:
name: vlc
state: present
update_cache: yes

- name: Install ssh
apt:
name: ssh
state: present
update_cache: yes

- name: Install VSC via snap
snap:
name: code
classic: yes

Ausgeführt werden die Skripte dann mittels


ansible-playbook --connection=local --inventory 127.0.0.1, playbookname.yml

Ansible kann noch unendlich viel mehr, dazu vielleicht in weiteren Beiträgen.

Nachtrag 04.10.2020: Die YAML-Skripte liegen jetzt im Github unter https://github.com/UweZiegenhagen/ansible.

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Fortnite zeitweise blockieren

This entry is part 1 of 2 in the series Pi-Hole

Ich wurde von Freunden gebeten, eine Lösung für das temporäre Blockieren von Fortnite zu geben, um ihren Kindern a) die Möglichkeit zum Spielen zu geben, aber b) auch eine zeitliche Vorgabe wirksam umsetzen zu können.

Hier möchte ich kurz beschreiben, wie ich das umgesetzt habe. Hinweis: Leider eignet sich das Skript (noch) nicht dazu, eine Spielbeschränkung hart durchzusetzen. Das Betriebssystem cached DNS-Lookups, so dass auch nach dem Ende der Spielzeit, wenn die URL wieder auf der Blacklist steht, keine Spielunterbrechung stattfindet.

Schritt 1: Ein Pi-Hole auf einem Raspberry Pi 4 wird als DNS Server im Netzwerk eingerichtet. Der Raspi 4 war bereits vorhanden, alternativ hätte es auch ein älteres Modell getan.

Zur Installation von Pi-Hole siehe beispielsweise https://www.youtube.com/watch?v=ubzd2H1wZxE oder https://www.heise.de/tipps-tricks/Pi-Hole-auf-dem-Raspberry-Pi-einrichten-so-geht-s-4358553.html.

Schritt 2: Eine Web-Anwendung mit Flask bauen. Flask ist ein Python-Framework für Web-Applikationen, mit dem man recht schnell zu guten Ergebnissen kommt. Wir legen die folgende Datei server.py an:

import os
from flask import Flask
 
app = Flask(__name__)
 
@app.route('/')
def index():
    return('<h1>Use /on and /off to enable/disable blocking</h1>')
 
@app.route('/<status>')
def setter(status):
    if status=='off':
        os.system("/usr/local/bin/pihole regex '.*\.epicgames.com' > /home/pi/epic.log")
        return '<h1>Turning off Fortnite</h1>'
    elif status=='on':
        os.system("/usr/local/bin/pihole regex -d '.*\.epicgames.com' >/home/pi/epic.log")
        return '<h1>Turning on Fortnite</h1>'

Je nachdem, ob diese server.py mit dem Parameter /on oder /off aufgerufen wird, wird epicgames geblockt oder nicht. Den entsprechenden Aufruf von pihole habe ich unter https://www.reddit.com/r/pihole/comments/a51wjr/blocking_fortnite_monday_to_friday/ gefunden.

Schritt 3: Setzen der Umgebungsvariablen für die Flask-App mittels export FLASK_APP=server.py. Optional kann man noch export FLASK_DEBUG=1 für das Debugging nutzen.

Schritt 4: Starten der Server.py mittels nohup flask run --host=192.168.0.91 & Dieser Aufruf sorgt dafür, dass auch nach dem Beenden der Shell das Programm weiterläuft. Als host muss man natürlich die IP-Adresse des Raspi nutzen.

Unter 192.168.0.91/on bzw. 192.168.0.91/off kann man jetzt die Blockierung an- bzw. ausschalten, diese URLs lassen sich auch gut auf dem Mobiltelefon wie eine App ablegen.

Verbesserungspotential besteht noch:

  • Nach dem Neustart des Raspi muss auch das Skript neu gestartet werden, das sollte man automatisieren. (Hinweis: Ich habe versucht, https://blog.miguelgrinberg.com/post/running-a-flask-application-as-a-service-with-systemd zu folgen, klappt aber noch nicht.)
  • Es kann sein, dass Pi-Hole auch ein Caching vornimmt und das Blockieren nicht sofort greift.
  • Flask läuft hier in einem DEV-Modus, für „Produktionsumgebungen“ empfiehlt sich ein WSGI-Server
  • Ein Aktivieren für einen bestimmten Zeitraum mit folgender automatischer Blockierung ist noch nicht implementiert, mit atd und cron sollte das aber möglich sein.

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Raspi 4, Libreelec und das Argon One Gehäuse

Für einen meiner Raspberry Pi 4, den ich vor allem als Mediacenter mit Kodi nutzen möchte, habe ich mir ein Argon One Gehäuse bestellt.

Die Installation des Pi im Gehäuse war leicht, die Passform ist gut. Die Installation der Software war aber ein wenig hakelig, daher möchte ich sie hier kurz beschreiben.

Für die folgenden Dinge aktiviert man in Libreelec den SSH-Zugang, mittels User „root“ und Passwort „libreelec“ kommt man dann z.B. via Putty auf den Pi. Da man als root unterwegs ist, entfallen sudo Befehle.

Als erstes installiert man folgende Addons aus dem Libreelec Repo: „Raspberry Pi Tools“ und „System Tools“

Die Argon-Software für Libreelec erhält und führt man aus mittels

curl https://download.argon40.com/argonone-setup-libreelec.sh | bash

Das normale Skript für Raspian (https://download.argon40.com/argon1.sh) funktioniert hier m.E. nicht, es muss die Version für Libreelec sein.

Das Skript für die Konfiguration kann man dann mittels ./argonone-config ausführen. Standardmäßig ist der Lüfter so eingestellt, dass er bei 90° C auf 100% springt. Möchte man das anpassen, kann man mittels nano argononed.conf die Konfiguration anpassen.

LibreELEC:~ # nano argononed.conf
#
# Argon One Fan Speed Configuration
#
# Min Temp=Fan Speed

45=25
65=50
90=100

Mittels reboot oder systemctl restart argononed.service kann man den Dienst (neu) starten.
Die aktuelle Temperatur erhält man übrigens mittels vcgencmd measure_temp.

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Git / Github Cheat Sheet

Da ich sie immer wieder vergesse, hier die (für mich) wichtigsten git Befehle.

Befehl Erläuterung
git config –global user.name „Max Mustermann“ Setze Usernamen
git config –global user.email „Max@Mustermann.de“ Setze User E-Mail-Adresse
git clone „githublink“ clone ein Repo von Github
git status Status des Repositories
git add „Datei“ Füge Datei zur Staging-Umgebung hinzu, git add . für alle Dateien im aktuellen Verzeichnis
git reset HEAD „Datei“ unstage Datei
git commit -m „Kommentar“ commit in das lokale Repository
git push origin master pushe Änderungen zurück nach github
git mv „datei1“ „datei2“ benennt Datei um
git rm „datei1“ löscht Datei
git init „Projektname“ legt lokal ein neues Repository an
git ls-files zeigt alle Dateien im Repo rekursiv

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

PS/2 Mäuse und Tastaturen unter Windows 10 nutzen

Ich habe noch einige alte PS/2 Mäuse und Tastaturen, unter ihnen ein Logitech TrackMan Marble FX. Mein Mainboard hat noch entsprechende Anschlüsse, nach dem Anschließen (und Neustart, da kein Plug&Play) tat sich jedoch nichts. Die Lösung fand sich dann bei https://www.wilflingseder.work/de/2018/05/14/how-to-use-a-ps2-keyboard-or-mouse-in-windows-8-and-10/.

Es reicht, mittels regedit im Schlüssel HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > Services > i8042prt den Wert „Start“ von 3 auf 1 zu ändern.

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Zugriff aus dem lokalen Netz auf die Nordwind-DB

Um aus dem lokalen Netz Zugriff auf die Nordwind-DB zu erhalten, muss man folgendes tun:

  • die Datei 50-server.cnf in /etc/mysql/mariadb.conf.d bearbeiten. Hier statt 127.0.0.1 die IP-Adresse des Servers eingeben. An dieses Interface wird MariaDB gebunden.
  • einen neuen Nutzer anlegen:

    CREATE USER 'nwread' IDENTIFIED BY 'northwind';

  • Zugriff aus dem Netz für diesen User erteilen:

    GRANT USAGE ON *.* TO 'nwread'@'%' IDENTIFIED BY 'northwind';

    Kann sein, dass dieses Statement schon ausreichend ist, das werde ich noch überprüfen. Ich habe aber zusätzlich noch ausgeführt:

  • Zugriff auf die Datenbank geben:

    GRANT ALL privileges ON `northwind`.* TO 'nwread'@'%';

Nach dem Neustarts des MariaDB-Servers klappt der Zugriff, beispielsweise über HeidiSQL, das ich sehr empfehlen kann.

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website