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

Mehr Power im Terminal mit tmux – Teil 3

This entry is part 3 of 3 in the series tmux

Hier nun zum letzten Teil der tmux Serie. Neben der Möglichkeit, mehrere Fenster zu erstellen, zwischen denen man hin- und herwechseln kann, bietet tmux auch die Möglichkeit der sogenannten „panes“ bzw. „Scheiben“.

Wir schließen wir dazu alle Fenster und nutzen dann Ctrl-b %, um das Fenster entlang der vertikalen Achse zu splitten.

Mit Ctrl-b " könnten wir das Fenster entlang der horizontalen Achse splitten.

Diese beiden Befehle können auch kombiniert werden, wie das folgende Bild zeigt.

Zwischen den Fenstern wechselt man mittels Ctrl-b Pfeiltaste, mit Ctrl-b x wird die aktuelle „Scheibe“ geschlossen.

Noch mehr Hinweise zu tmux findet man unter anderem hier:

  • https://tmuxcheatsheet.com
  • „tmux 2: Productive Mouse-Free Development“ von Brian P. Hogan
  • „Getting Started with tmux“ von Victor Quinn J.D.

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

Mehr Power im Terminal mit tmux – Teil 2

This entry is part 2 of 3 in the series tmux

Ausgehend von einer laufenden tmux Session schauen wir uns heute die grundlegende Bedienung an.

Innerhalb meiner tmux Session kann man beispielsweise mittels Ctrl-b c ein neues Fenster erstellen.

Man erkennt es im folgenden Bild daran, dass neben 0:bash- ein 1:bash* steht. Das Sternchen steht dabei für das gerade aktive Fenster.

Zwischen den verschiedenen Fenstern kann man über die folgenden Tastenkombinationen wechseln:

  • Ctrl-b 0 .. 9 um direkt zu einer Shell zu springen
  • Ctrl-b n für das nächste Shell-Fenster
  • Ctrl-b p für das letzte

Mittels Ctrl-b & schließt das aktuelle Shell-Fenster, tmux fragt sicherheitshalber aber noch einmal nach, ob man das Fenster wirklich schließen möchte.

Da viele identische „Bash“ Strings als Bezeichner schnell unübersichtlich sind, kann man mit Ctrl-b , das aktuelle Fenster umbenennen.

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

Mehr Power im Terminal mit tmux – Teil 1

This entry is part 1 of 3 in the series tmux

In den letzten Tagen habe ich mich ein wenig mit tmux beschäftigt, einem Terminal-Multiplexer für Linux und Unix, der aber auch im Windows-Subsystem für Linux funktioniert.

Was ist ein Terminal-Multiplexer? Die englische Wikipedia [1] schreibt dazu folgendes:

„tmux is a terminal multiplexer for Unix-like operating systems. It allows multiple terminal sessions to be accessed simultaneously in a single window. It is useful for running more than one command-line program at the same time. It can also be used to detach processes from their controlling terminals, allowing SSH sessions to remain active without being visible.“

Also:

  • man kann mehrere Terminal-Sessions gleichzeitig in einem Fenster offen haben, bricht die Verbindung ab
  • bricht die SSH-Verbindung ab, so bleibt die Session trotzdem erhalten

Die Installation war recht einfach, per apt install tmux holt man sich das Paket auf die Maschine. Um bei jedem Login tmux sofort zur Verfügung zu haben, habe ich gemäß [2] folgendes der ~/.profile hinzugefügt:

if command -v tmux &> /dev/null && [ -z "$TMUX" ]; then
    tmux attach -t default || tmux new -s default
fi

Startet man jetzt tmux, so erhält man den folgenden Bildschirm:

Im nächsten Teil schauen wir uns dann die grundlegende Bedienung an.

[1] https://en.wikipedia.org/wiki/Tmux
[2] https://www.tecmint.com/tips-for-tmux-terminal-sessions/

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

CUPS auf dem Raspi installieren, mit iOS drucken

Um vom iPhone und iPad drucken zu können, habe ich heute meinen Raspi (der in der Unterversorgung hängt und damit 24/7 läuft) mit CUPS versehen. Ich bin dabei der Anleitung von https://www.elektronik-kompendium.de/sites/raspberry-pi/2007081.htm gefolgt, es lief ohne Probleme.

Als etwas komplizierter hat sich die Duplizierung eines Druckers erwiesen. Ich habe sowohl die entsprechende ppd-Datei als auch den Eintrag in der printers.conf angepasst, jedoch sehen die iOS-Geräte nur den ersten Drucker.

Die Lösung dazu habe ich auf https://www.johnlose.de/2018/02/drucker-airprint-faehig-machen-auf-ubuntu-16-04-airprint-cups-ubuntu-xenial/ gefunden: der avahi-Daemon war noch nicht vollständig konfiguriert, der die Bonjour-Erkennung übernimmt.

Mit wget https://raw.githubusercontent.com/tjfontaine/airprint-generate/master/airprint-generate.py kann man jedoch ein Python-Skript herunterladen, das die Erzeugung der Drucker-Dateien übernimmt, die man dann nach /etc/avahi/services verschiebt. Nach dem Neustart des Dienstes mittels /etc/init.d/avahi-daemon restart findet das iPhone dann auch den Drucker vie Airprint, einmal für einseitig, einmal für zweiseitig.

Update: Aktuell druckt der Drucker nur über den einen nicht-AirPrint-Server, warum weiß ich noch nicht.

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

Schneller Verzeichnisse wechseln mit autojump

Hier ist ein interessanter Artikel zu autojump, das unter Linux cd weitgehend ersetzen kann: https://olivierlacan.com/posts/cd-is-wasting-your-time/. Unter (X)Ubuntu ist die Installation ein wenig anders, da autojump.sh in einem anderen Verzeichnis liegt.

Bei mir klappt es mit der folgenden Zeile:


[ -f /usr/share/autojump/autojump.sh ] && . /usr/share/autojump/autojump.sh

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

Move files automatically after downloading them (under Linux)

A few days ago I read an article by Joachim Schlosser on how to handle downloaded files on the Mac using Hazel.

My first idea was that this could be easily achieved with Linux, last night I found some time to work on it.

It is based on inotify, a tool to watch files and folders for changes (like e.g. adding a new file to a folder).

Googling for the right way to pass the filename of an added file to a script I came across an answer on askubuntu which I then modified to the following (I removed the ‚-r‘ parameter which checks not only the one folder but all subfolders):

inotifywait -m -q --format '%f' -e create  "/home/uwe/Downloads"  | while read FILE
do
  python inotify-handler.py $FILE
done

As I am way more familiar with Python than with BASH, I simply hand over the filename to another Python file, however the whole thing could be implemented in bash, of course.

The Python code is straightforward then as well, see the comments in the code

import sys
import os
 
folder = '/home/uwe/Downloads/'
 
# check if first parameter handed to Python is a file
if len(sys.argv) == 2:
    filename = sys.argv[1]
    if os.path.isfile(folder + filename):
        print(filename)
        # get the file extension
        file, fileext = os.path.splitext(folder + filename)
        # move only PDFs
        if fileext.lower() == '.pdf':
            # move PDFs to subfolder /home/uwe/Downloads/PDF 
            os.rename(folder + filename, folder + 'PDF/' + filename)
        else:
            print('*' + fileext.lower(), 'is not handled by this script')
    else:
        print('Not a valid filename:', folder + filename)
else:
    print('Not 2 parameters:', str(sys.argv))

This was just a basic proof of concept, one could easily extend this script to handle not just the extensions but also specific name patterns. If you use it somewhere, keep me posted!

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

Pi Cluster reloaded

This entry is part 5 of 5 in the series Raspberry Cluster

For months it has been quiet on this front, recently I have started again my efforts to have a working cluster of Raspberry PIs. I purchased a few Pi 3 (Cyberport offered them for 29,95 Euro a piece), a Logitech 8-port hub (from Pollin, around 10 Euro) that works with 5V and therefore should work by USB power. Right now I built the stack of PIs (4 Pi 2, 4 Pi 3) by connecting all of them using M2.5 nylon spacers from Banggood. As power supply I am using an Aukey PA-T8 USB charger with 10 3.0 USB ports that deliver 70W in total.

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

Configuring the Samba server on the Bananapi

This entry is part 4 of 5 in the series Raspberry Cluster

Configuring the samba server and having it use the attached 2,5″ HDD was actually pretty easy.

Step 1: Mounting the harddisk

From http://mein.homelinux.com/wiki/linux/mounten I learnt how to add the attached harddisk to the fstab. blkid gave me the UUID of the disk (which I had previously partioned and formated with gparted), so I just had to a) create a directory /media/storage, b) set the access rights with chmod 777 /media/storage and add the following line to the fstab:

UUID=b06c9eb6-7cc3-429b-9176-44896e712319 /media/storage ext4 auto,defaults 0 2

Step 2: Installing samba

sudo apt-get install samba installed samba, but not smbpasswd. A quick sudo apt-get install samba-common-bin fixed this.

After I had created a „bananapi“ user on the machine I added this account to the list of samba users with the command smbpasswd -a bananapi. I then took the sample configuration for the /etc/samba/smb.conf from https://www.thomas-krenn.com/de/wiki/Einfache_Samba_Freigabe_unter_Debian and rebooted the machine.

From my Windows machine I can connect now to \\bananapiip\public and use it as a samba server. When copying a 1 GB iso image to the \public share I got an avaerage of 35 MB per second.

Remarks 2020-06-06:

[global]
workgroup = smb
security = user
map to guest = Bad Password

[homes]
comment = Home Directories
browsable = no
read only = no
create mode = 0750

[public]
# chmod -R 777 /home/uwe makes it publicly accessible
path = /home/uwe/
public = yes
writable = yes
comment = smb share
printable = no
guest ok = yes

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

Setting up the cluster

This entry is part 3 of 5 in the series Raspberry Cluster

Since the case is pretty much complete now, it is time to take a look at the software. I finally decided to run Raspian on the PIs and Lubuntu on the Banana Pi. While there may be other (maybe even more suitable) OSes available I think is the best starting point for my project. The Banana Pi is equipped with Lubuntu.

After booting the Banana Pi I switched to the German keyboard layout (unfortunately the corresponding GUI is horrible). Afterwards the usual apt-get update and apt-get upgrade took care of software updates.

The next steps are the configuration of a static IP as well as the installation of the SSH demon and samba.

Banana Pi updating

EDIT

I just learnt about Bananian which is based on Debian 7. It does not provide a desktop environment, so a 2 GB SD card is said to be sufficient. Since I just want the Bananapi to act as samba server all the Lubuntu features are pretty irrelevant for me.

It also has a sshd running

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

Building a case for the Raspberry 2 cluster

This entry is part 2 of 5 in the series Raspberry Cluster

Just putting 6 microcontrollers on the table won’t work long (low WAF) so I decided to use the vast amount of my Lego Technic components to build a suitable case. In the future I might switch to a custom-made Acryl case (I could use the Dingfabrik’s laser cutter) but for quick prototyping nothing beats LEGO. For this project I had to buy a few extra components, among them two dozen LEGO 55615 which drove the costs a little.

IMG_7950

IMG_7953

IMG_7963

IMG_7973

IMG_7980

IMG_7983

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