Benutzer-Werkzeuge

Webseiten-Werkzeuge


Übersetzungen dieser Seite:
de:koarrl_alzlinux

Inhaltsverzeichnis

koarrl: Alzheim-Linux

(last edit: 2018-11-29)

Aktuellen runlevel ermitteln

ps ax | grep "init \[" | cut -d[ -f2 | cut -d] -f1

Alte Netzwerkdevice-Namen für ifconfig

Seit Debian 9 (stretch) liefert ifconfig perverse unanschauliche Nettwerk-Devicenamen. Rückkehr zum alten Zustand a la „eth0“…

edit /etc/default/grub

...
GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"
...

und dann

# update-grub

und dann rebooten. Fertig!

Alte StarOffice-Files öffnen

Seit Libre Office 4.x wird das Importieren von *.sdw und *.sxw nicht mehr unterstützt!
Kein Problem, solange es noch LibreOffice-3.5.4.2 im Debian-Paketsystem gibt.
Neben der hyperaktuellen 4.x-Version (wird aus von http://de.libreoffice.org/download/ heruntergeladenen Paketen unter /opt/libreoffice4.1 installiert) kann man mit dselect die letztständige 3er-Version …

libreoffice-base
libreoffice-l10n-de
openoffice.org-filter-binfilter

… samt Abhängigkeiten installieren (Executable befindet sich in /usr/lib/libreoffice/program/soffice).
Parallelbetrieb der beiden Versionen geht problemlos, und das Paket „openoffice.org-filter-binfilter“ ist für Archäologen wichtig!

Archive öffnen (cmdline)

Nützlich bei Gigabyte-großen Files, die der Midnight Commander nicht mehr in /tmp expandieren kann …

tar -zxvf bigarchive.tgz
tar -jxvf bigarchive.tar.bz2
unzip somearchive.zip

Multipart-Archive (*.rar) .. alle Files im selben Ordner ablegen, das erste angeben genügt!

unrar e firstfile.rar

Batch-renaming

Nicht ganz ungefährlich (behandelt files und dirs)!

Alle nach lowercase:

rename 'y/A-Z/a-z/' *

Alle nach uppercase:

rename 'y/a-z/A-Z/' *

Sanfter und nachvollziehbarer geht's mit „tr“:

 echo "filename" | tr [:lower:] [:upper:]

Arger mit fälsch cödierten Ümläüten? man convmv!

z.B. ISO8859-1 –> UTF-8 (besser zunächst OHNE –notest !)

convmv -f iso8859-1 -t utf8 --notest *.mp3

z.B. CP1250 –> UTF-8, +dive into subdirs (besser zunächst OHNE –notest !)

convmv -f cp1250 -t utf8 -r --notest *

Bluetooth-Devices

Gute Infos hier: https://wiki.archlinux.org/index.php/bluetooth

Bei KDE4-Systemen: einfach das Debian-Paket

bluedevil 

installieren, USB-Bluetooth-Dongle anstecken, als normaler user

bluetooth-wizard

unter KDE aufrufen, dann am Bluetoothgerät die Pairingfunktion anwerfen (beim Minikeyboard: power-ON, dann ESC und K zugleich gedrückt halten),
am KDE-Bildschirm erscheint dann die Aufforderung zur Auswahl des Gerätes und zur Eingabe eines Strings vom Gerät - fertig!

Um das Device nach reboot wieder zu verwenden, braucht man ein File namens /etc/udev/rules.d/10-local.rules:

# Set bluetooth power up
ACTION=="add", KERNEL=="hci0", RUN+="/usr/bin/hciconfig hci0 up"

Nützliches zum Verständnis:

hciconfig --all
sdptool browse

Boot-Errors - was tun...

e2fsck -y /dev/hda1
mount /dev/hda1 / -o remount,rw

Browser-mikroHOWTO

Firefox: *.tar.gz von www.mozilla.org herunterladen.
Damit der Browser mit User_innenrechten auto-upgedatet werden kann, empfiehlt sich, das *.tar.gz in das Homedir des users zu expandieren.
Sofern es andere User_innen gibt, kann root ein symlink in dieser Art anlegen:

ln -s /home/user/firefox /opt/firefox

Dann dürfen alle Desktoplinks aller User_innen auf /opt/firefox/firefox verweisen.

chmod - rekursiv, aber nur für files!

Passiert oft: ein Baum wird von einem anderen Filesystem kopiert, wegen verdrehten Mountoptionen haben alle Files die Rechtebits rwxrwxrwx (chmod 777 *) gesetzt. Abhilfe:

find * -type f -exec chmod 644 {} \;

CUPS-Problem mit okular und HP-Druckern

HP-Laser CP15151n druckt aus allen Anwendungen, aber keine *.pdf aus okular.
Längeres googeln ergibt:

Das Paket cups-bsd muß installiert sein (damit muß lpr entfernt werden)

Und hinterher ein Nasenbär und keiner weiß warum.

cut-Befehl .. das leidige letzte Feld

Wie bekommt man hier das letzte Feld mit GOLD?

 export STRINGMONSTER="gaga:gugu:gogo:GOLD"

Es gibt „rev“ zur zeichenweisen Rückwärts-Ausgabe.

Also:

echo $STRINGMONSTER|rev

bewirkt

  DLOG:ogog:ugug:agag

Lösung als Einzeiler:

echo $STRINGMONSTER|rev|cut -d: -f1|rev

gibt nun das LETZTE Feld aus:

  GOLD

*.epub -> *.pdf

apt-get install calibre
ebook-convert junk.epub junk.pdf

UUID einer Partition ermitteln

# blkid -L /dev/sda1

..gibt tabellarisch aus wie folgt:

device             fs_type       label          mount point                                UUID
--------------------------------------------------------------------------------------------------------------------------------
/dev/sda1          ext3                         /boot                                      d716dea3-19e1-4bcd-89b8-14b45a6e9f91

Es geht auch mit:

blkid -L /dev/sd* 

UUID einer Partition ändern

Das Tool ..

uuid

.. gibt in etwa das aus:

fd23d7b2-c5c9-11e6-a14c-002522aa4e25
  

Ändern einer Partition-UUID auf einen neuen Zufallswert:

tune2fs /dev/sdm1 -U `uuid`

Namen einer Partition ändern

a) extx-Filesysteme: geht auch nachträglich!

e2label /dev/sdx3 "Seagate #23_partition #3"

b) Win$-artiges: geht zusammen mit der Formatierung

mkdosfs /dev/sdx1 -n "name10char"

Current directory - wo liegt es?

df -hl .

gibt z.B. aus:

josef@maria:~$ df -hl .
Dateisystem    Größe Benutzt Verf. Verw% Eingehängt auf
/dev/sdf1       1,8T    1,5T  238G   87% /media/bible

fsck-Tricks

starte forced fsck mit Progressbar:

e2fsck -C 0 /dev/sdi3

Letzter fsck … war wann? (es gibt auch andere informative Dinge hier zu holen!)

dumpe2fs -h /dev/sda7 | grep "Last checked:"

shared library nicht gefunden

In /etc/ld.so.conf.d stehen einige Files namens *.conf
Diese nach Bedarf editieren|ergänzen und ..

# ldconfig

.. aufrufen - Fertig!

Variante:

# export LD_LIBRARY_PATH="my_lib_path"
# ldconfig

(Die Variable $LD_LIBRARY_PATH ist per default leer und hilft nur ldconfig dabei, den Lib-Cache zu aktualisieren).

Mount einer Partition per UUID

mount UUID=d716dea3-19e1-4bcd-89b8-14b45a6e9f91 /mnt

ist im obigen Beispiel gleichbedeutend mit

mount /dev/sda1 /mnt

GPS-Trackfiles konvertieren

Konverter-Tool: man gpsbabel

Anzeige-Webservices: http://www.bikemap.net , http://www.mopedmap.net

Die brauchen *.gpx-files, aber alle möglichen Waypointfileformate lassen sich mit gpsbabel konvertieren. - Z.B. …

  • Der Output von meinem Mio(Yakumo)-Navi ist ein NMEA-Trackfile:
gpsbabel -i nmea -f "mio-track.log" -o gpx -F "mio-track.gpx"
  • Der primäre Output der app „SpeedView“ ist ein *.log-Trackfile, also ein unbekanntes Format für gpsbabel.

Darum ist ein *.style - File zur Formatbeschreibung erforderlich. Das File „speedview.style“ sieht in diesem Fall so aus:

DESCRIPTION  Android SpeedView
EXTENSION    log
FIELD_DELIMITER PIPE
RECORD_DELIMITER NEWLINE
IFIELD LAT_DECIMAL,"","%f"
IFIELD LON_DECIMAL,"","%f"
IFIELD TIMET_TIME,"","%f"
IFIELD PATH_SPEED,"","%f"
IFIELD ALT_METERS,"","%f"

Und dann kann es losgehen:

gpsbabel -i xcsv,style=speedview.style -f „android-speedview.log“ -o gpx -F „android-speedview.gpx“

Nachträge:

  • Die app „SpeedView“ hat auch eine „Export to SD card“-Option, etwas vergraben im „Advanced Dashboard“.
  • Die app „Maverick“ loggt standardmäßig im *.gpx-Format!

Mikroskop-Kamera etc.

Kernelsupport für v4l, USB-Kameratreiber für eMPIA (ist im Kernel 2.6.31 dabei)

Vergrößerte Anzeige mit mplayer:

mplayer tv:// -tv driver=v4l2:width=640:height=480:device=/dev/video0:input=0:noaudio:outfmt=yuy2:fps=30 -vf dsize=1200:900:0

oder auch

mplayer tv:// -tv driver=v4l2:width=640:height=480:device=/dev/video0:input=0:noaudio:fps=30 -vf dsize=1200:900:0 -vo gl2

- v4l-conf zeigt viele nützliche Infos an. - Mit Cheese läuft fast alles.

xxx.tar.gz aus subdir erzeugen

tar -czvf xxx.tar.gz subdirname

tar-Feinheiten =8-(

tar -hczvf backup.tgz folder_with-subfolders-and_symlinks

Das funktioniert, tar -czvfh hingegen nicht!!??

rpm-Pakete installieren/updaten

 rpm -ivh        xxx.rpm -> installieren
 rpm -vhU        xxx.rpm -> update installieren

Paketverwaltung: "NO_PUBKEY ..."

wget -q http://download.virtualbox.org/virtualbox/debian/sun_vbox.asc -O- | sudo apt-key add -
wget -q http://www.debian-multimedia.org/pool/main/d/debian-multimedia-keyring/debian-multimedia-keyring_2008.10.16_all.deb
dpkg -i debian-multimedia-keyring_2008.10.16_all.deb

Regular Expressions

Ein unendlich weitläufiges Thema, didaktisch wohl aufbereitet hier (Javascript muß enabled sein!): http://www.regexr.com/
Dazu nur ein Beispiel aus der C-Programmierpraxis ..
Aufgabe: suche alle Prototypen der verwendeten Testbefehle
Lösung mit grep:

grep -E "void cmd_\w+[(]\w*[)];" *.c

.. ergibt:

...
motor.c:void cmd_left(void);
motor.c:void cmd_right(void);
nvdata.c:void cmd_rnv(void);
nvdata.c:void cmd_wnv(void);
...

Erschwerend ist die für Anfänger unverständliche Mischung aus Metazeichen und Zeichen mit direkter Bedeutung im Commandstring des Befehls „grep -E ..“

Was im Beispiel geschieht:

* durchsuche alle Files vom Typ „*.c“ im current directory
* finde darin alle Zeilen, in denen ein String mit folgenden Eigenschaften vorkommt:
- Teilstring „void cmd_“
- danach zumindest ein (oder beliebig mehr) lesbare(s) Zeichen
- danach eine „(„
- danach null (oder beliebig mehr) lesbare(s) Zeichen
- danach eine “)“, unmittelbar dahinter ein „;“
* gib den Filenamen, ein„:“ als Separator und die Zeile mit dem auf das angegebene Muster passenden String aus

(Burny sei Dank!)

Dinge finden (z.B. ifconfig)

Dokumente zum Suchbegriff

# apropos ifconfig

alle Files, in deren Namen „ifconfig“ vorkommt, finden

# locate ifconfig

Vollen Pfad zum Kommando finden

# whereis ifconfig

Vollen Pfad zum Kommando finden, aber nur, wenn es im Suchpfad liegt

# which ifconfig

Suche installierte Pakete mit „pcsc“ im Paketnamen

# aptitude search pcsc | grep -E "^i "

mc-extension file

(gilt so für mc-4.8.3)
systemweit: /etc/mc/mc.ext
userspezifisch: ~/.config/mc/mc.ext

Hier mein letztständiges mc.ext: mc.ext-koarl-20140814.tgz

ANMERKUNG: unrar-free kann nicht alles dekomprimieren. Die non-free-Version unrar hat andere Commandlineparameter, geht dafür perfekt.

Einträge dann:

View=%view{ascii} unrar lp %f
Open=%cd %p#urar

Die perfekte Lösung des leidigen Problems „schließe mc, aber nicht seinen Childprozeß“:

...
    Open=nohup kwrite %f </dev/null 2>&1 & 
...

minicom & USB-Serial-Konverter

Problem: Mehrere hardwaregleiche Konverter an einem Rechner, die fix je ihrer Aufgabe zugeordnet werden sollen

Lösungen:

a) Konverter verschiedener Hersteller einsetzen, dann: unterscheiden per vendor/productID oder per Drivername
b) FT232-Konverter verwenden, diesen entweder mit dem FTDI-Tool http://rtr.ca/ft232r/ft232r_prog-1.24.tar.gz modifizieren oder die eingebaute unique number abfragen!

In /sys/bus/usb-serial/devices finden sich immer aktuelle symlinks:

lrwxrwxrwx 1 root root 0 24. Apr 10:30 ttyUSB0 -> ../../../devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.4/2-1.4:1.0/ttyUSB0
lrwxrwxrwx 1 root root 0 24. Apr 10:30 ttyUSB1 -> ../../../devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1/2-1.1:1.0/ttyUSB1

Dem Symlink folgen … dort liegt ein Pseudofile namens „uevent“, es enthält z.b. „DRIVER=pl2303“ oder „DRIVER=ftdi_sio“

Beispiel zu Lösung a) (wenn Devicetreiber bekannt)

#!/bin/bash
MYDRIVERNAME=pl2303
MYSERIALPORT="/dev/`ls /sys/bus/usb-serial/drivers/$MYDRIVERNAME | grep ttyUSB`"
echo $MYSERIALPORT

bzw. als Einzeiler:

echo "/dev/`ls /sys/bus/usb-serial/drivers/pl2303 | grep ttyUSB`"

Lösung b) … wenn 2 gleiche USB-SIO-Chips, was tun?

Anzeige aller Eigenschaften eines USB-SIOs (verschiedene Felder je nach Hersteller!!)

udevadm info --query=all --path=/sys/class/tty/ttyUSB1

Anzeige der Short-Serial# eines USB-SIOs (Achtung! Das tolle Feature gibt's nur bei FTDI)

udevadm info --query=property --path=/sys/class/tty/ttyUSB1 | grep ID_SERIAL_SHORT | cut -d= -f2

Oder ganz einfach mit dem Bordwerkzeug:

# ls -l /dev/serial/by-id
insgesamt 0
lrwxrwxrwx 1 root root 13 Okt  3 15:14 usb-FTDI_UM232R_USB__-__Serial_FTB3LVOV-if00-port0 -> ../../ttyUSB0
lrwxrwxrwx 1 root root 13 Okt  3 15:17 usb-FTDI_UM232R_USB__-__Serial_FTE4CVIT-if00-port0 -> ../../ttyUSB1

Schöne einzeilige Lösung zur Auffindung des Devicenamens des FTDI-Moduls namens „Serial_FTE4CVIT“:

# ls -l /dev/serial/by-id|grep "Serial_FTE4CVIT"|rev|cut -d"/" -f1|rev

Unbedingt nötig sind erst mal ein paar Minimal-Setupfiles nach Bedarf.
Diese Files enthalten nämlich die paar Settings, die nicht über die commandline einstellbar sind. Würg.

/etc/minicom/minirc.8n1+le (kein HW-Handshake, local echo ON):

pu bits             8
pu parity           N
pu stopbits         1
pu hasdcd           No
pu rtscts           No
pu localecho        Yes
pu addlinefeed      No

/etc/minicom/minirc.8n1-le (kein HW-Handshake, local echo OFF - wie z.B. für halbduplex-Debug-SIO):

pu bits             8
pu parity           N
pu stopbits         1
pu hasdcd           No
pu rtscts           No
pu localecho        No
pu addlinefeed      No

Und dann: Beispiel für ein KDE-Desktop-Linkfile, das minicom-2.6.1 für das FTDI-Modul mit „Serial_FTB3“ im Namen anwirft:

[Desktop Entry]
Comment[de]=
Comment=
Encoding=UTF-8
Exec=xterm -geometry 118x82 -fg white -bg black -fn 7x13 +sb -T 'minicom FTDI_B3_38400' -e minicom -c on 8n1+le -b 38400 -D "/dev/"`ls -l /dev/serial/by-id|grep "Serial_FTB3"|rev|cut -d"/" -f1|rev`
GenericName[de]=
GenericName=
Icon=terminal
MimeType=
Name[de]=USB0_38400
Name=USB0_38400
Path=
ServiceTypes=
StartupNotify=false
SwallowExec=
SwallowTitle=
Terminal=false
TerminalOptions=
Type=Application
X-DBUS-ServiceName=
X-DBUS-StartupType=none
X-DCOP-ServiceType=
X-KDE-SubstituteUID=false
X-KDE-Username=

Eigentlich sollte das ja mit udev funktionieren:

in /etc/udev/rules.d ein file wie z.B. „99-persistent-usbserial.rules“ anlegen. Das ist eine Liste verschiedener Device-Individuen, die sich in einer Eigenschaft unterscheiden lassen. Hier: die Seriennummer des zuletzt angesteckten devices. Diese läßt sich herausfinden mit

# dmesg|tail

Nun ein File wie z.B. „/etc/udev/rules.d/99-persistent-usbserial.rules“ anlegen:

SUBSYSTEM=="tty", ATTRS{idVendor}=="04d8", ATTRS{idProduct}=="00df", ATTRS{serial}=="0000987654", SYMLINK+="mcusbser_1"

Neu-Einlesen der Rules-Tabellen:

# udevadm control --reload

Nun wird immer nach Anstecken in /dev ein Symlink namens „mcusbser_1“ angelegt. \ Die Erkennung des Ansteckens kann aber ca. 20sec dauern.

minicom & Arduino

Problem 1: Der Arduino erwartet sich serielle Befehle, die mit LF beendet werden.
Lösung: eine Übersetzungstabelle namens „table.ardu“ mit minicom im Untermenü anlegen:
„Ctrl-A“ „O“ –> Menü „Bildschirm und Tastatur“ –> dann „O“ für Zeichenkonvertierung
Bei ENTER-Drücken muß statt 0x0d ein 0x0a gesendet werden!

Nachteil: „local echo on“ bewirkt dann, daß die Antwortzeile nicht bei Spalte 0 anfängt.
Krücke: im Minicom-Fenster „Ctrl-A“ „U“ eingeben.

Problem 2: wie kann man das im ~/.minirc.ardu formulieren?

pu port         /dev/ttyS0
pu baudrate     38400
pu rtscts       No
pu convf        table.ardu
pu localecho    Yes

Aufruf gelingt dann mit:

minicom -c on ardu

minicom & Timestamps

Es gibt das gut versteckte Feature, einer jeden neu empfangenen Zeile eine Timestamp voranzustellen. „Ctrl-A N“ –> 4 Varianten:

  • nichts
  • [hh.mm.ss.xyz]
  • [yy-mm-dd hh:mm:ss]
  • [yy-mm-dd hh:mm:ss.xyz]

PGP mit GnuPG - Einzeiler

Hier befindet sich alles, was dazugehört:

cd /home/.gnupg

Importiere alle public keys hier:

gpg --import *.asc

Zeige alle keys aus pubring.gpg an:

gpg --list-keys

Die Ausgabe davon sieht z.B. so aus:

/home/franz/.gnupg/pubring.gpg
------------------------------
pub   1024D/021FBAB1 2001-04-18
uid                  Fritz Maier <f.maier@kafka.com>
sub   4096g/637542F9 2001-04-18

pub   1024D/363AD90D 2005-11-15
uid                  Franz Moser <f.moser@kafka.com>
sub   1024g/80FAC3DB 2005-11-15

Exportiere Franz Mosers key (siehe oben!) in ASCII-lesbarer Form:

gpg --export -a 363AD90D | tee Franz_Moser_pub.asc

Schlüsselpaar erzeugen (geht interaktiv):

gpg --gen-key

Fritz Maier entschlüsselt Franz Mosers Geheim-File (erfordert interaktive Eingabe der Passphrase):

gpg -d Geheimfile.pgp > Geheimfile.plain

Harddisk kopieren

Achtung! geht so nur bei physikalisch gleichen devices.

dd bs=512k if=/dev/hda of=/dev/hdd

Warum ist mein /dev/dsp busy?

lsof /dev/dsp

Bildschirm periodisch updaten

z.B. beim Kopieren anwachsende Files in Kilobyte-Stufen beobachten:

watch -n1 ls -lk

Textfiles mit sed konvertieren

<cr><lf> … DOS/Windoof

<cr> ……. Mac

<lf> ……. Linux

von <cr><lf> nach <lf>:

sed -r s/"\r"// infile > outfile

DOS –> Linux:

sed s/.$// infile > outfile

Mac –> Linux:

sed s/\r/\n/ infile > outfile 

Linux –> DOS:

sed s/$/\r/ infile > outfile

Linux –> Mac:

sed s/\n/\r/ infile > outfile

DOS –> Mac:

sed s/\r// infile > outfile

Mac –> DOS:

sed s/\n/\r\n/ infile > outfile

Text in einzelne Wörter pro Zeile zerlegen und sortieren: (sehr lustig bei Patenten… ;-)

sed s/' '/'\n'/g patent.txt|sort

Geisterzeichen aus Textfiles entfernen

Das Tool tr kann das: Angabe der zu löschenden Zeichen muß leider oktal erfolgen. Nachfolgendes Beispiel löscht alle Zeichen < 0x20 außer CR (015 oct) und LF (012 oct), und alle über 0x7f. Vielleicht gibt es eine kürzere Formulierung …?

cat ghostchars.txt | tr -d '\000-\011,\013-\014,\016-\037,\200-\377' > clean.txt

Intel-Hex-Files mit sed umbauen

Wirkt nur bei mit „:“ getrennten Zeilen, fügt CR-LF ein

sed s/:/\\r\\n:/g in.hex > out.hex

Format-Logik beim date-Befehl

Das Datum

17.Okt.2003, 10:23:19

wird umgestellt zu

10 (Oktober), der 17., 10 Uhr, 23 min, 2003 (Jahr!), Sekunden

und sodann intuitiv eingegeben:

date 101710232003.19

Hualp! *)

*) siehe http://www.bruhaha.de/detebe/hualp.html

rdate: Zeitabgleich, billig!

/usr/bin/rdate -s timeserver
/sbin/hwclock -wu

unique filename erzeugen

Beispiel mit Klartext-Datum, minutengenau

FILENAME=franz`date +'%Y_%m_%d_%H_%M'.tar.gz`

Filenamen mit kranken Sonderzeichen konvertieren

Z.B. Ümläutä von iso-8859-15 auf UTF-8

convmv --notest -r -f iso-8859-15 -t utf8 *

Besser als pstree

ps axf

NIE WIEDER! selinux & so

Sollte jemand jemals aus Neugier oder planlos dazugehörige Pakete installieren, wirds schlimm.
Die Homepartition wird nicht mehr gemountet, der mount-Befehl verkackt, graphischer login wird verweigert etc.
A pain in the ass, wie der Engländer sagt.

Nicht wirkt jedenfalls: /etc/selinux/config editieren und ..

  SELINUX = disabled

.. einfügen und rebooten.

Was (bei grub2-Verwendern) hilft: /etc/default/grub editieren und ..

  GRUB_CMDLINE_LINUX="selinux=0"

.. einfügen, ..

update-grub

.. als root eingeben und rebooten. Bzw. beim Booten die appendline händisch übergeben.

Und danach zur spurlosen Entsorgung:

dpkg --purge selinux-policy-default selinux-basics libsetools-tcl python-semanage libsemanage1 \\
             libqpol1 selinux-utils libsemanage-common libustr-1.0-1 policycoreutils python-selinux \\
             checkpolicy setools bwidget python-magic python-sepolgen

Rebooten und die Welt ist wieder in Ordnung!

Swap-Partition aktivieren

mkswap /dev/hdxx
swapon -a

Gzip-Viewer

zcat file.gz

Freier Platz auf lokalen Festplatten, wieviel?

df -hlTx tmpfs

Subdir-Platzverbrauch

du -h dirname (-h: in MB, -k: in kB, -b: in Bytes)

Größte Files in $PWD lokalisieren

du -h *|sort -nr|tee dulist.txt

basename

echo $PWD --> /home/franz/privat
basename $PWD --> privat

Substrings ausschnipseln mit bash

LONGPATH=`pwd`
echo $LONGPATH --> /home/franz/privat/pfui/olga/stöckelschuh
SHORTPATH=${LONGPATH/*pfui/pfui}
echo $SHORTPATH --> pfui/olga/stöckelschuh

Variante:

SHORTPATH=${LONGPATH/*pfui//pfui}
echo $SHORTPATH --> /pfui/olga/stöckelschuh

Slashes umbauen auf Backslashes

PENGUIN=/home/franz/homeworks
DOSPATH=`echo $PENGUIN | sed 's/\//\\/ g'`
echo $DOSPATH  --> \home\franz\homeworks

Weg mit dem console-screensaver!

auf der commandline:

setterm -blank 0

bzw. in /etc/console-tools/config:

..
BLANK_TIME=...
..

Console-Keyboard ist krank belegt

dpkg-reconfigure console-data

bzw. denken an /etc/console/boottime.kmap.gz

su wirkt nicht?

Ist das SUID-Bit des su-Befehls verlorengegangen? Kommt vor.

chmod 4755 /bin/su

SUID-files im System finden

find / -perm -4000 -o -perm -2000 -exec ls -ldb {} \;» suidfiles.txt

Loop Device

# losetup /dev/loop0 file  ..... file erscheint auf /dev/loop0
# mount /dev/loop0 /mnt ........ mounten
# umount /mnt .................. bzw. unmounten
# losetup -d /dev/loop0 ........ detach (weg damit)

Loop Device für Partitions

# losetup -P /dev/loop0 disk.img
# fdisk -l /dev/loop0 .......... Partitionstabelle anzeigen (wie gewohnt)

Die gesamte Disk erscheint also auf /dev/loop0, wobei:
Partition 1 entspricht /dev/loop0p1
Partition 2 entspricht /dev/loop0p2
etc.

Leeres File erzeugen

z.B. 2 MBytes voll 00 00 00 … :-)

dd if=/dev/zero of=nix bs=1k count=2000

k3b unter wheezy

Nach erstmaligem Aufruf gibt es ein Rechteproblem,
der Assistent („Einstellungen“-„System-Berechtigungen einrichten“ fordert zunächst die Einrichtung einer Gruppe „burning“.
(als root):

# addgroup burning

Dann in /etc/group gewünschte User zu „burning“ hinzufügen, neu einloggen.
Beim nächsten k3b-Aufruf will der Assistent nun die Tools …

/usr/bin/cdrdao
/usr/bin/wodim
/usr/bin/growisofs

suid-root setzen, wobei sgid-root richtig wäre. Also händisch als root ändern:

# cd /usr/bin
# chmod 2710 cdrdao wodim growisofs

k3b neu starten, alles funktioniert!

k9copy unter wheezy

Die Weiterentwicklung von k9copy wurde leider eingestellt, und die letztständigen Sourcen http://sourceforge.net/projects/k9copy/files/k9copy-kde4/2.3.8/k9copy-2.3.8-Source.tar.gz lassen sich nicht fehlerfrei copmpilieren.
Zum Glück kann man das letzte stabile Paket auch unter wheezy installieren. - Zunächst die Abhängigkeiten auflösen:

apt-get install dvdauthor libavutil50 libfame-0.9-1 libgraphicsmagick3 liblavfile-2.0-0 liblavjpeg-2.0-0 liblavplay-2.0-0 libmjpegutils-2.0-0 libmpeg2encpp-2.0-0 libmplex2-2.0-0 libquicktime2 libswscale0 libxine1 libxine1-bin libxine1-ffmpeg libxine1-misc-plugins libxine1-plugins libxine1-x mjpegtools

Und dann das passende *.deb von hier holen:

http://www.deb-multimedia.org/pool/main/k/k9copy/k9copy_2.3.6-0.0_i386.deb bzw. http://www.deb-multimedia.org/pool/main/k/k9copy/k9copy_2.3.6-0.0_amd64.deb

und auch dieses Paket dazuinstallieren - FERTIG!

k9copy-mikroHOWTO

Double-Layer-DVD kopieren mit k9copy:

Daten-Backup in Ordner erstellen
Einlegen in DVD-ROM(/dev/sr0, liest schneller als Brenner)
warten auf Infobox .. "kopieren mit k9copy (Wizard)"
Quelle: /dev/sr0
Ziel: DVD-Backup als Ordner /home/franz/k9copy (Unterordner sicherheitskopie wird autom. angelegt)
Verkleinerungsfaktor > 4,4GB
weiter, weiter, ... fertigstellen!

ODER (manchmal kommt die Infobox nicht)

k9copy starten, Assistent anwerfen, dann wie oben

Keyboard-Scancodes anzeigen

showkey (geht nur auf Textkonsole!)

ssh-Feinheiten

Secure Copy (auf der commandline)

scp ./file user@hostname://home/user

sftp-Übertragung (z.B. mit konqueror)

sftp://user@hostname

Wenn es dann Probleme mit Meldungen wie dieser gibt:

The host key for this server was not found, but another type of key exists.
An attacker might change the default server key to confuse your client into thinking the key does not exist.
Please contact your system administrator.
$ rm ~/.ssh/known_hosts

.. und danach Verbinden mit dolphin/sftp und das Dialogfenster „username/password“ beantworten.

(angeblich hilft dagegen auch:)

$ ssh-keygen -R <hostname>

USB-Device für user franz: R/W-Berechtigung über neue Gruppe vergeben

# groupadd -g 200 microchip
# adduser franz microchip

Neues udev-Rule-File anlegen:

/etc/udev/rules.d/25-microchip.rules :

  # R/W access to Microchip USB devices
  ATTR{idVendor}=="04d8", OWNER:="root", GROUP:="microchip", MODE:="0660"

Geändertes Rules-Fle speichern, dann:

# udevadm control --reload-rules

und das USB-Device einmal ab- und wieder anstecken, dann gilt's!

USB-Stick mit vfat & ext3-image

losetup -f /media/loc/sdb1/file
mount /dev/loop0 /mnt

bzw.

losetup /dev/loop0
/dev/loop0: [0811]:431 (/media/loc/sdb1/file)

bzw.

mount /dev/loop0 /mnt -t loop

umount /mnt
losetup -d /dev/loop0

USB-Kartenleser

Medium erscheint in /sys/block/sd* Kernelconfig muß ……….? unterstützen.

Erstellungsdatum eines Digitalfotos aus EXIF-Daten wiederherstellen

exif -i dscf8039.jpg|grep 0x9003|cut -d"|" -f2

…ergibt:

2006:01:15 14:48:42

bzw. …

exif -i dscf8039.jpg|grep 0x9003|cut -d"|" -f2|sed s/://g|sed s/" "//

… ergibt:

20060115144842

und dann:

touch -t "200601151448.42" dscf8039.jpg

get my own IP (assigned to eth0)

/sbin/ifconfig|grep -C1 "eth0"|grep "inet addr"|cut -d ":" -f2|cut -d " " -f1

Systemsprache per user einstellen

als user:

set-language-env 

bzw.

export LANG=de_AT@euro

Umlaute-Textkonsole

in /etc/inputrc:

set input-meta on
set output-meta on
set convert-meta off (Kommentar daneben ist falsch herum!)

Bashrc und so

a) Global gültig: /etc/bash.bashrc

b) Lokal (im homedir):

.bash_profile (wird für login shells ausgeführt, inkludiert ~/.bashrc, sonst nix)

.bashrc - PATH kann für user erweitert werden - export HISTCONTROL=ignoreboth (!!) - Tab-completion besser global setzen

X-Server-Start (simpel)

Starten als user (aus der login-shell):

X

bzw. (suid-root gesetzt!)

/usr/bin/X11/X & 

Beenden (als root) mit:

kill `pidof "X"`

X-Server ohne Maus (Pointer bleibt, aber Server fährt hoch)

        Section "InputDevice"
          Identifier "Void1"
          Driver "void"
        EndSection

        Section "ServerLayout"
          Identifier "Simple Layout"
          Screen "Screen 1"
          InputDevice "Void1" "CorePointer"
          InputDevice "Keyboard1" "CoreKeyboard"
        EndSection

X-Fonts im System finden

xlsfonts

X-Bildschirmauflösung per cmdline on the fly ändern

xrandr

xconsole: Logfile am X-Server-Bildschirm

mknod logpipe p
xconsole -file logpipe &
echo "all-log-text" > txpipe

Fenster: wie schließen außer durch kill? Fenster-Resize: wie?

console-tv

fbtv -q

(braucht Framebuffer-Treiber!)

Kernel-Appendlines für Framebuffer-Treiber

my_kernel vga=0x…

        Colours | 640x480 800x600 1024x768 1280x1024 1600x1200
        --------+---------------------------------------------
        256     |  0301    0303     0305     0307      031C
        32,768  |  0310    0313     0316     0319      031D
        65,536  |  0311    0314     0317     031A      031E
        16.8M   |  0312    0315     0318     031B      031F

CIFS-Shares mounten, Samba-Password & so Kram

(a) clientseitig

Achtung, das Paket cifs-utils muß installiert sein! (wegen /sbin/mount.cifs)

/etc/fstab ergänzen:

//Winserver/Winfolder /mnt/Winfolder cifs credentials=/root/.credentials,iocharset=utf8,codepage=cp850,uid=franz,gid=users,file_mode=0644,dir_mode=0755,domain=dahoam

UND ein file namens /root/.credentials:

username=fraunz
password=raiffeisen
domain=hoamatland

Die direkte Angabe username,password in /etc/fstab geht nicht mehr so wie früher bei smbfs!

Clientseitige Änderung des Passworts durch den user:

smbpasswd -r sambaservername -U username

(b) serverseitig - in smb.conf:

[global]
workgroup = dahoam
SO_RCVBUF=8192 SO_SNDBUF=8192
socket options = TCP_NODELAY
follow symlinks = yes
wide symlinks = yes
unix extensions = no
characterset = ISO8859-15
client code page = 850

[homes]
comment = Zugang für WinDOOF-User
read only = no
valid users = smb1
invalid users = root

VCD-Manipulationen

Benötigte Software: vcdimager, cdrdao

VCD auslesen:

vcdrip --cdrom-device=/dev/scd0 --rip

–> *.mpg datei liegt jetzt im aktuellen Verzeichnis!

(S)VCD-Image aus *.mpg - Datei erzeugen:

vcdimager --type=svcd --cue-file=videocd.cue --bin-file=videocd.bin --iso-volume-label=VideoCD MPGDatei.mpg

–> videocd.bin und videocd.cue liegen jetzt im aktuellen Verzeichnis!

Brennen der SVCD mit cdrdao:

cdrdao write --device 0,1,0 --driver generic-mmc --speed 16 videocd.cue

Remotecontrol-Signale betrachten

cat /dev/input/event0|hexdump

oder:

xxd /dev/input/event0

oder (Rohdaten):

mode2

oder (wenn lircd schon gestartet):

irw

MAC-Adresse ändern

ifconfig eth0 down; ifconfig eth0 up hw ether aa:bb:cc:dd:ee:ff

CUPS-Webinterface-URL

Malformed Header from Script

All CGI applications must output a valid HTTP header, followed by a blank line, before any other data.
In other words, * two * newline characters have to be output after the „Content-type: …“ header.
Here is how the output should look:

Content-type: text/html
<HTML>
<HEAD><TITLE>Output from CGI Script</TITLE></HEAD>
<BODY>

.................

</BODY>
</HTML>

Google automatisiert abfragen (Einzeiler!)

Das geht nicht ganz einfach mit wget, weil google keine robots mag. Eine längere commandline hilft dann aber weiter.
Z.B. die Suche der Antwort auf die Frage, wie oft das Wort „Kuhfladen“ auf google gefunden wird (diese commandline läßt sich noch reduzieren!):

wget --user-agent="Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.2.9) Gecko/20100824 Firefox/3.6.9" --header="Accept:text/html" http://www.google.at/search?q=Kuhfladen

Die Anzahl der hits findet sich in dem einzeiligen(!) Antwortfile mit dem Namen „search?q=Kuhfladen“ …

… von google.at:

 ~~~blabla~~~<div id="resultStats">Ungefähr 151.000 Ergebnisse<~~~blabla~~~

… oder von google.com:

 ~~~blabla~~~<div id=resultStats>About 151,000 results<~~~blabla~~~

Das Antwortfile kann mit diesem selbsterklärenden bash-Einzeiler universell auf seine Essenz reduziert werden:

grep -o -E "<div id=[\"]?resultStats[\"]?>[[:print:]]{32}" | cut -d">" -f2 | cut -d "<" -f1

(würg-Problem wegen „ä“…alles ist UTF8-codiert, das „ä“ aber nicht … sed-Filter nötig!)

und liefert somit den output:

Ungefähr 151.000 Ergebnisse

bzw.

About 151,000 results

Outputfiltering geht auch so (quick & dirty):

grep -oE "hr [0-9.]+ Ergebnisse" | cut -d" " -f2

Als kürzestmöglicher Einzeiler sieht das dann so aus:

wget -qO- --user-agent="" http://www.google.at/search?q=Kuhfladen | grep -oE "hr [0-9.]+ Ergebnisse" | cut -d" " -f2

Oder mit der lustigen Google-Verarschung:

wget -qO- --user-agent="James Bond (build version 007, with license to kill)" http://www.google.at/search?q=Kuhfladen | grep -oE "hr [0-9.]+ Ergebnisse" | cut -d" " -f2

telnet meldet "...blah" und verweigert

# telnetd: getnameinfo.
# Connection closed by foreign host.

→ Namensauflösung beim Zielrechner funktioniert nicht! Zuallermindest muß in /etc/hosts die IP des Hostrechners mit irgendeinem Namen eingetragen sein.

SpamAssassin nachlernen lassen

      sa-learn --spam --dir /home/tux/Mail/SPAM_MISSED/cur/*

SpamAssassin learn will nicht mehr

Nach Update von perl passiert das:

"Cannot open bayes databases /home/rich/.spamassassin/bayes_* R/W: tie failed:
Inappropriate ioctl for deviceCannot open bayes databases"

Running sa-learn with „–import“ option resolves the problem.

NTFS r/w-mounten (SICHER)

Vorerst mal: * ntfs-3g (Userspace-Tool) installieren * kpartx (Devicemapper-Tool für raw images) installieren Und den Kernel-Devicemapper-Driver muß man auch haben. * Kerneloption CONFIG_FUSE_FS gesetzt? Evtl. neu compilieren!

Jetzt gehts los mit …

# kpartx -l rawdisk.img

- patzt beim ersten Gebrauch das /dev/loop0 mit dem Raw-Image an. Gut so. - und zeigt nicht sehr klartextmäßig:

loop0p1 : 0 97675137 /dev/loop0 63
loop0p2 : 0 156264255 /dev/loop0 97675200
loop0p3 : 0 3919860 /dev/loop0 253939455
loop0p4 : 0 54717390 /dev/loop0 257859315

Deutlicher sieht man die Partitions per …

# fdisk -l /dev/loop0
Disk /dev/loop0: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00066d5a

      Device Boot      Start         End      Blocks   Id  System
/dev/loop0p1   *           1        6080    48837568+   7  HPFS/NTFS
/dev/loop0p2            6081       15807    78132127+   b  W95 FAT32
/dev/loop0p3           15808       16051     1959930   82  Linux swap /Solaris
/dev/loop0p4           16052       19457    27358695   83  Linux

Damit wurden sozusagen „virtuelle partitions“ namens „loop0px“ erzeugt.

# kpartx -a -v rawdisk.img

- das gibt etwa so etwas aus:

add map loop0p1 (253:0): 0 97675137 linear /dev/loop0 63
add map loop0p2 (253:1): 0 156264255 linear /dev/loop0 97675200
add map loop0p3 (253:2): 0 3919860 linear /dev/loop0 253939455
add map loop0p4 (253:3): 0 54717390 linear /dev/loop0 257859315
...

Und nun endlich:

# mount -t ntfs-3g /dev/mapper/loop0p1 /mnt

KURZFASSUNG:

# mount -t ntfs-3g /dev/sdx1 /mnt

bzw.

# mount -t ntfs-3g -o force /dev/sdx1 /mnt

Lantronix: Serielle über IP

Zuerst socat und minicom installieren!

Lantronix konfigurieren: mit telnet (Default=DHCP, Serviceport=9999, Datenport=10001)

Seriell-Device anlegen:

socat PTY,link=/dev/socat TCP:192.168.3.193:10001 &
SOCATDEV=`ls -l /dev/socat|cut -d">" -f2`
chown root:dialout $SOCATDEV
chmod 660 $SOCATDEV

Kontrolle:

ls -lL /dev/socat

minicom konfigurieren ( link /etc/minicom/minirc.socat anlegen) Und starten:

minicom --color=on socat

Youtube-Downloading

Ganzes Video (als *.mp4):

youtube-dl https://www.youtube.com/watch?v=F69PBQ4ZyNw

Nur als *.mp3:

youtube-dl --extract-audio --audio-format mp3 https://www.youtube.com/watch?v=F69PBQ4ZyNw
de/koarrl_alzlinux.txt · Zuletzt geändert: 2019/01/30 10:57 von koarrl