Archiv der Kategorie: OSS

Einfaches Skript um mit mdb-tools eine MS Access-Datenbank in SQLite3 umzuwandeln

Hin und wieder stößt man auf Anwendungsfälle in denen Applikationen für Nischenprodukte einen vor merkwürdige Aufgaben stellen. So zum Beispiel ein im deutschen Kanurennsport häufig für die Regattaplanung genutztes Tool namens „GTS Regatta“. Im Grunde eine MS Access-basierte Anwendung mit zahlreichen Formularen und Funktionen rund um das Thema Kanuregatta.

Um die Daten praktisch in PHP-Anwendungen nutzen zu können, kann ein entsprechender ODBC-Treiber genutzt und direkt mit der Access-Datenbank gearbeitet werden. Dies ist, möchte man mit einem Linux-System arbeiten, etwas aufwändig und je nach ODBC-Treiber auch kostspielig.

Eine Alternative stellt die Konvertierung nach SQLite oder einer anderen Datenbank dar. Um dies mit kostenlosen Tools unter Linux möglichst leicht zu gestalten, bietet sich das folgende Skript an:

#!/usr/bin/env bash
# Usage: mdb-export.sh database.mdb/.accdb

fullfilename=$1
filename=$(basename "$fullfilename")
dbname=${filename%.*}

echo "Export schema"
mdb-schema "$fullfilename" sqlite > "$dbname.sql"

IFS=$'\n'
for table in $(mdb-tables -1 "$fullfilename"); do
    echo "Export table $table"
    mdb-export --insert=sqlite "$fullfilename" "$table" >> "$dbname.sql"
done

echo "Convert to sqlite"
sqlite3 "$dbname.sqlite3" < "$dbname.sql"

echo "Delete working data"
rm "$dbname.sql"

nginx-rtmp mit Standby-Bild wenn kein Publisher verbunden ist

Im Beitrag „Lokal von OBS zu OBS streamen mittels nginx-basiertem RTMP-Server“ zeigte ich, wie man zwischen OBS-Instanzen in einem Netzwerk streamen kann. Das ursprüngliche Streaming-Projekt ist längst abgeschlossen, jedoch bin ich retrospektiv nochmal alle Verbesserungsvorschläge und -möglichkeiten durchgegangen.

Hierbei wurde auch klar, dass ein direkter Stream über eine teils instabile Verbindung insbesondere beim Streaming zu YouTube nicht unproblematisch ist. Um beim Streaming zu YouTube zu vermeiden, dass der Stream entgültig und unwiederbringlich beendet wird (beispielsweise passiert das durch Beendigung des Streams in OBS oder bei einem Verbindungsabbruch, wenn der Stream nicht innerhalb kurzer Zeit wieder gestartet wird) empfiehlt es sich, einen Streaming-Proxy zu verwenden.

nginx-rtmp mit Standby-Bild wenn kein Publisher verbunden ist weiterlesen

Details zu Wifi-Netzwerken auf der Konsole: iwlist/iwconfig

Kürzlich hatte ich die Chance einen AC-WLAN Stick von ASUS zu testen. Sehr futuristisches Teil, nur mit den Linux-Treibern gibts noch einige Probleme. Ein manuelles kompilieren (bzw. Setup für DKMS) war notwendig.

Nachdem der Stick installiert war wollte ich natürlich sehen, wie der Empfang zu den umliegenden Netzen war. Von der Konsole aus, versteht sich. Naheliegend war daher der iwlist-Befehl. Auch der iwconfig-Befehl ist recht praktisch (sofern es um ein spezifisches, verbundenes Netz geht).

host:~/git/rtl8812AU_8821AU_linux$ iwlist wlan6 scan
wlan6 Scan completed :
 Cell 01 - Address: 00:1F:F3:xx:xx:xx
 ESSID:"TESTWLAN"
 Protocol:IEEE 802.11bgn
 Mode:Master
 Frequency:2.437 GHz (Channel 6)
 Encryption key:on
 Bit Rates:130 Mb/s
 Extra:rsn_ie=30140100000fac040100000fac040100000fac020000
 IE: IEEE 802.11i/WPA2 Version 1
 Group Cipher : CCMP
 Pairwise Ciphers (1) : CCMP
 Authentication Suites (1) : PSK
 Quality=100/100 Signal level=46/100 
 Cell 02 - Address: 06:75:0E:xx:xx:xx
 ESSID:""
 Protocol:IEEE 802.11bgn
 Mode:Master
 Frequency:2.462 GHz (Channel 11)
 Encryption key:on
 Bit Rates:144 Mb/s
 Extra:rsn_ie=30140100000fac040100000fac040100000fac010100
 IE: IEEE 802.11i/WPA2 Version 1
 Group Cipher : CCMP
 Pairwise Ciphers (1) : CCMP
 Authentication Suites (1) : 802.1x
 Preauthentication Supported
 Quality=0/100 Signal level=44/100 
 Cell 03 - Address: B4:75:0E:xx:xx:xx
 ESSID:"OTHERNET"
 Protocol:IEEE 802.11AC
 Mode:Master
 Frequency:5.18 GHz (Channel 36)
 Encryption key:on
 Bit Rates:867 Mb/s
 Extra:rsn_ie=30140100000fac040100000fac040100000fac020100
 IE: IEEE 802.11i/WPA2 Version 1
 Group Cipher : CCMP
 Pairwise Ciphers (1) : CCMP
 Authentication Suites (1) : PSK
 Preauthentication Supported
 Quality=0/100 Signal level=60/100 


host:~/git/rtl8812AU_8821AU_linux$ watch -n1 | iwconfig
vboxnet0 no wireless extensions.

wlan6 IEEE 802.11bgn ESSID:"TESTWLAN" Nickname:"<WIFI@REALTEK>"
 Mode:Managed Frequency:2.437 GHz Access Point: 00:1F:F3:xx:xx:xx 
 Bit Rate:130 Mb/s Sensitivity:0/0 
 Retry:off RTS thr:off Fragment thr:off
 Power Management:off
 Link Quality=100/100 Signal level=47/100 Noise level=0/100
 Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
 Tx excessive retries:0 Invalid misc:0 Missed beacon:0

 

 

Brother DCP-T500W Netzwerk-Scanner unter Fedora 27

Um mithilfe des oben genannten Gerätes und Fedora, in meinem Fall in Version 27, über das Netzwerk zu scannen, bedarf es des „brscan“-Tools von Brother, mit dem der Netzwerk-Scanner zum System hinzugefügt wird.

Mit den folgenden drei Schritten lässt sich so der Scanner einfach konfigurieren und wird dann von Scanning-Applikationen wie xsane als „scanner:net1;dev0“ (oder ähnlich) erkannt.

Download:

wget http://download.brother.com/welcome/dlf006648/brscan4-0.4.4-4.x86_64.rpm

Installation:

sudo dnf install brscan4-0.4.4-4.x86_64.rpm

Scanner hinzufügen:

brsaneconfig4 -a name=scanner model="DCP-T500W" ip=192.168.000.192

Optional – am System existierende Drucker anzeigen:

scanimage -L

Seither habe ich bereits einige Dutzend Seiten gescannt. Soweit ist dies ein Musterbeispiel für Linux-Unterstützung von Peripherie. Wenn nun noch der Quelltext des brscan-Tools verfügbar wäre …

Images and Exif „orientation“ vs native „rotation“

The Exif orientation-setting and applications which are unable to interpret it, are annoying. The following two steps show how to remove the orientation-setting and rotate the specified images natively.

Remove Exif orientation (originals are kept):

exiftool -Orientation= /path/to/images/*.jpg

Rotate the images by 90 degrees (originals are kept):

for file in /path/to/images/*.jpg; do convert "$file" -rotate 90 "${file%.JPG}"_rotated.JPG; done

Dovecot „FETCH BODY[] for mailbox INBOX UID 1 got too little data“

Es kann passieren, dass man in Dovecot zwar zlib glaubt zu aktivieren, dies aber nicht im Bereich „protocol imap“ und nicht mit der „imap_zlib“-Einstellung tut, was dann dazu führt, dass mit der folgenden Fehlermeldung Mailboxen nicht abgerufen werden können:

Oct 13 16:16:08 hostname dovecot: imap(user): Error: read(/data/vmail/user/mdbox/storage/m.339): FETCH BODY[] for mailbox INBOX UID 505 got too little data: 2864 vs 6789

Mutmaßlich deshalb, weil der Server die Nachricht verschlüsselt schickt, dies aber nicht entsprechend announciert. Es muss, zur Lösung des Problems, das Plugin im Bereich „protocol imap {}“, bevorzugt in der Datei 20-imap.conf, wie folgt angegeben werden:

protocol imap {
 mail_plugins = $mail_plugins imap_zlib
}

So, wie hier beschrieben.