BlogBlog ÜbersichtjailscriptportsoptFreeBSDLinksThermoskanne

Shellzugriff mit Hilfe eines Browsers

Mit Hilfe von Shell In A Box kann mit einem Browser auf eine Shell zugegriffen werden. Die Verbindung wird dabei über HTTPS hergestellt. Im FreeBSD-Portbaum findet man Shell In A Box unter www/shellinabox:

# cd /usr/ports/www/shellinabox && make install clean

Nach der Installation muss Shell In A Box in der /etc/rc.conf eingetragen und der Daemon gestartet werden:

# echo 'shellinaboxd_enable="YES"' >> /etc/rc.conf
# /usr/local/etc/rc.d/shellinaboxd start

Danach kann mit einem Browser auf TCP-Port 4200 zugegriffen werden, worauf man sich mit einem Benutzernamen und Passwort anmelden kann. Möchte man einen anderen TCP-Port verwenden, so kann dies durch das Setzen der shellinaboxd_port-Variable in der /etc/rc.conf gemacht werden. Mehr Informationen zu Shell In A Box findet man in der Manpage shellinaboxd(1).

 Permalink

Geladene Kernelmodule anzeigen

Möchte man auf FreeBSD herausfinden, welche Kernelmodule zurzeit geladen sind, kann das mit kldstat angezeigt werden:

# kldstat 
Id Refs Address            Size     Name
 1   24 0xffffffff80100000 de7058   kernel
 2    1 0xffffffff80ee8000 212b0    geom_mirror.ko
 3    1 0xffffffff81012000 a0c      pflog.ko
 4    1 0xffffffff81013000 2bcfd    pf.ko
 5    1 0xffffffff8103f000 7e3      accf_http.ko
 6    1 0xffffffff81040000 1db      accf_data.ko
 7    1 0xffffffff81041000 1ffe     nullfs.ko
 8    1 0xffffffff81043000 4030     linprocfs.ko
 9    1 0xffffffff81048000 1cd4b    linux.ko

Mit der -v Option werden zusätzliche Informationen zu den Kernelmodulen angezeigt. Ausserdem sind alle Module aufgelistet, welche schon in den Kernel kompiliert sind:

# kldstat -v
Id Refs Address            Size     Name
 1   24 0xffffffff80100000 de7058   kernel (/boot/kernel/kernel)
        Contains modules:
                Id Name
                89 ataraid
                351 newreno
                340 if_lo
                328 elf64
                329 shell
                398 elf32
                315 pseudofs
                352 mld
                350 igmp
                342 if_vlan
                337 if_faith
                281 uether
                341 if_tun
[...]
                399 x86bios
 2    1 0xffffffff80ee8000 212b0    geom_mirror.ko (/boot/kernel/geom_mirror.ko)
        Contains modules:
                Id Name
                 1 g_mirror
 3    1 0xffffffff81012000 a0c      pflog.ko (/boot/kernel/pflog.ko)
        Contains modules:
                Id Name
                420 pflog
 4    1 0xffffffff81013000 2bcfd    pf.ko (/boot/kernel/pf.ko)
        Contains modules:
                Id Name
                419 pf
 5    1 0xffffffff8103f000 7e3      accf_http.ko (/boot/kernel/accf_http.ko)
        Contains modules:
                Id Name
                421 accf_http
 6    1 0xffffffff81040000 1db      accf_data.ko (/boot/kernel/accf_data.ko)
        Contains modules:
                Id Name
                422 accf_data
 7    1 0xffffffff81041000 1ffe     nullfs.ko (/boot/kernel/nullfs.ko)
        Contains modules:
                Id Name
                423 nullfs
 8    1 0xffffffff81043000 4030     linprocfs.ko (/boot/kernel/linprocfs.ko)
        Contains modules:
                Id Name
                425 linprocfs
 9    1 0xffffffff81048000 1cd4b    linux.ko (/boot/kernel/linux.ko)
        Contains modules:
                Id Name
                424 linuxelf

Mehr Informationen zu kldstat findet man in der Manpage kldstat(8).

 Permalink

Lesemethode von gmirror ändern

Hat man ein RAID1 mit gmirror erstellt, so kann mit gmirror list Information zum Spiegel ausgelesen werden. Unter anderem sieht man bei Balance nach welcher Methode Daten gelesen werden. Im folgenden Beispiel wird der Round-Robin-Algorithmus zum Lesen von Daten verwendet:

# gmirror list
Geom name: gm0
State: COMPLETE
Components: 2
Balance: round-robin
Slice: 4096
Flags: NONE
GenID: 0
SyncID: 1
ID: 3712141307
Providers:
1. Name: mirror/gm0
   Mediasize: 750156373504 (699G)
   Sectorsize: 512
   Mode: r2w2e5
Consumers:
1. Name: ad4
   Mediasize: 750156374016 (699G)
   Sectorsize: 512
   Mode: r1w1e1
   State: ACTIVE
   Priority: 0
   Flags: DIRTY
   GenID: 0
   SyncID: 1
   ID: 2039007148
2. Name: ad6
   Mediasize: 750156374016 (699G)
   Sectorsize: 512
   Mode: r1w1e1
   State: ACTIVE
   Priority: 0
   Flags: DIRTY
   GenID: 0
   SyncID: 1
   ID: 2802723338

Falls gewünscht kann nun die Lesemethode zur Laufzeit geändert werden. Im folgenden Beispiel wird die Lesemethode so geändert, dass Daten immer von der Platte gelesen werden, welche am wenigsten unter Last steht:

# gmirror configure -b load gm0
# gmirror list
Geom name: gm0
State: COMPLETE
Components: 2
Balance: load
Slice: 4096
Flags: NONE
GenID: 0
SyncID: 1
ID: 3712141307
Providers:
1. Name: mirror/gm0
   Mediasize: 750156373504 (699G)
   Sectorsize: 512
   Mode: r2w2e5
Consumers:
1. Name: ad4
   Mediasize: 750156374016 (699G)
   Sectorsize: 512
   Mode: r1w1e1
   State: ACTIVE
   Priority: 0
   Flags: DIRTY
   GenID: 0
   SyncID: 1
   ID: 2039007148
2. Name: ad6
   Mediasize: 750156374016 (699G)
   Sectorsize: 512
   Mode: r1w1e1
   State: ACTIVE
   Priority: 0
   Flags: DIRTY
   GenID: 0
   SyncID: 1
   ID: 2802723338

Alle verfügbaren Lesemethoden und mehr Informationen zu gmirror findet man in der Manpage gmirror(8).

 Permalink

Fotogalerie auf der Kommandozeile erstellen

Mit Hilfe von swiggle lassen sich Fotogalerien für das Web auf der Kommandozeile erstellen. Im FreeBSD -Portbaum findet man swiggle unter www/swiggle:

# cd /usr/ports/www/swiggle && make install clean

Die Fotogalerie wird nun in einem bestehenden Verzeichnisbaum erstellt und dabei werden die Alben durch Verzeichnisse gruppiert:

# find ~/gallery
~/gallery
~/gallery/album1
~/gallery/album1/Bild1.JPG
~/gallery/album1/Bild2.JPG
~/gallery/album1/Bild3.JPG
[...]
~/gallery/album2
~/gallery/album2/Bild1.JPG
~/gallery/album2/Bild2.JPG
~/gallery/album2/Bild3.JPG
[...]

Nun kann der Verzeichnisbaum mit den Alben und den Bilden an swiggle übergeben werden, damit die Fotogalerie erstellt wird:

# swiggle ~/gallery
Directory ~/gallery/album1
Image ~/gallery/album1/Bild1.JPG
Image ~/gallery/album1/Bild2.JPG
Image ~/gallery/album1/Bild3.JPG
[...]
10 thumbnail index pages created.
148 images processed in album '~gallery/album1'.
Directory ~/gallery/album2
Image ~/gallery/album2/Bild1.JPG
Image ~/gallery/album2/Bild2.JPG
Image ~/gallery/album2/Bild3.JPG
[...]
11 thumbnail index pages created.
156 images processed in album '~/gallery/album2'.
5 albums processed.

Die generierten HTML-Dateien und die Thumbnails wurden nun im bestehenden Verzeichnisbaum erstellt und dieser kann danach auf einen Webserver geladen werden:

# find ~/gallery
~/gallery
~/gallery/album1
~/gallery/album1/Bild1.JPG
[...]
~/gallery/album1/.scaled
~/gallery/album1/.scaled/Bild1.JPG
[...]
~/gallery/album1/.thumbs
~/gallery/album1/.thumbs/Bild1.JPG
[...]
~/gallery/album1/Bild1.JPG.html
[...]
~/gallery/album1/index.html
~/gallery/album1/index2.html
[...]
~/gallery/index.html

Mehr Informationen und alle Optionen von swiggle erhält man, wenn man swiggle ohne Optionen aufruft.

 Permalink

Zeilen einer Datei in zufälliger Reihenfolge ausgeben

Mit Hilfe von rl lassen sich die Zeilen einer Datei in zufälliger Reihenfolge wiedergeben. Im FreeBSD-Portbaum findet man rl unter textproc/rl:

# cd /usr/ports/textproc/rl && make install clean

Nun kann der Inhalt einer Datei verwürfelt dargestellt werden:

# cat datei 
1
2
3
4
5
# rl datei
2
1
5
3
4

Mit der -c Option kann angegeben werden wieviele Zeilen ausgegeben werden sollten. Im folgenden Beispiel wird zufällig eine MP3 Datei aus der Musiksammlung angezeigt:

# find ~/Music -name "*mp3" | rl -c 1

Mehr Informationen zu rl findet man in der Manpage rl(1).

 Permalink

SSH Public-Key auf einen anderen Rechner kopieren

Möchte man einen SSH Public-Key auf einen anderen Rechner kopieren so dass man sich danach mit Public Key Authentifizierung anmelden kann, kann dazu ssh-copy-id verwendet werden. Im FreeBSD-Portbaum findet man ssh-copy-id unter security/ssh-copy-id:

# cd /usr/ports/security/ssh-copy-id && make install clean

Damit der Schlüssel kopiert werden kann, muss man sich mit einem Password auf dem anderen Rechner anmelden können. Standardmässig wird der ~/.ssh/id_rsa.pub Schlüssel kopiert. Möchte man einen anderen Schlüssel kopieren, kann dieser mit der -i Option angegeben werden:

# ssh-copy-id test@test.chruetertee.ch
Password:
Now try logging into the machine, with "ssh 'test@test.chruetertee.ch'", and check in:

  ~/.ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

Existiert schon eine ~/.ssh/authorized_keys Datei, so wird der neue Schlüssel an die existierende Datei angehängt. Mehr Informationen zu ssh-copy-id findet man in der Manpage ssh-copy-id(1).

 Permalink

Prozess und dessen Kind-Prozesse beenden

Mit Hilfe von pslist können alle Kind-Prozesse eines Prozesses angezeigt werden und allenfalls ein Signal an alle diese Prozesse gesendet werden. Im FreeBSD-Portbaum findet manpslist unter sysutils/pslist:

# cd /usr/ports/sysutils/pslist && make install clean

Übergibt man eine Prozess-ID an pslist, so werden die Prozess-IDs aller Kind-Prozesse angezeigt:

# pslist 4816
4816 sh 4817 4818 4819
# pstree -p 4816
-+= 00001 root /sbin/init --
 \-+- 02761 root /usr/local/bin/xdm -nodaemon ttyv8
   \-+= 02817 root xdm: :0 (xdm)
     \-+= 02829 beat fluxbox
       \-+= 03854 beat /bin/csh -c xterm
         \-+- 03861 beat xterm
           \-+= 03863 beat csh
             \-+= 04816 beat /bin/sh ./test
               \-+- 04817 beat /bin/sh ./test
                 \-+- 04818 beat /bin/sh ./test
                   \--- 04819 beat sleep 60

Sendet man nun ein SIGTERM-Signal an den Prozess welcher die Kind-Prozesse gestartet hat, so laufen die Kind-Prozesse weiter, werden jedoch Kind-Prozesse des init Prozesses:

# kill 4816
# pstree
-+= 00001 root /sbin/init --
[...]
 \-+- 04817 beat /bin/sh ./test
   \-+- 04818 beat /bin/sh ./test
     \--- 04819 beat sleep 60

Soll das SIGTERM-Signal an einen Prozess und allen seinen Kind-Prozessen  gesendet werden kann rkill verwendet werden:

# rkill 4816

Möchte man ein anderes Signal als das SIGTERM-Signal verwenden, so kann auch dies an rkill übergeben werden. Im folgenden Beispiel wid das SIGKILL-Signal an alle Prozesse gesendet:

# rkill -9 4816

Mehr Informationen zu pslist und rkill findet man in der Manpage pslist(1).

 Permalink

Zeitzonen-Einstellung änden

Möchte man die aktuelle Zeitzone seines Rechners ändern, so kann dies mit tzsetup gemacht werden. Die angegebene Zeitzone muss dabei unter /usr/share/zoneinfo existieren:

# date
Sa  1 Jan 2011 18:39:15 CET
# tzsetup Australia/Sydney
# date
So  2 Jan 2011 04:39:24 EST

Auf FreeBSD ist tzsetup standardmässig im Basissystem vorhanden. Mehr Informationen zu tzsetup findet man in der Manpage tzsetup(8).

 Permalink

Terminal zurücksetzen

Gibt man versehentlich binäre Daten in einem Terminal aus, kann es vorkommen das die Terminaleinstellungen verändert werden, so dass die Schrift nicht mehr lesbar ist oder das Terminal mit clear nicht mehr geleert werden kann. In diesem Falle können die Terminaleinstellungen wie folgt zurückgesetzt werden:

# tput init 
# clear
Comments (1)  Permalink

Lock-Datei erstellen während ein Befehl ausgeführt wird

Mit Hilfe von lockf kann eine Lock-Datei erstellt werden während ein Befehl ausgeführt wird, so dass zum Beispiel der gleiche Befehl nicht gleichzeitig nochmals ausgeführt wird. Im folgenden Beispiel wird die Datei /tmp/lock als Lock-Datei verwendet während der Befehl sleep 5 ausgeführt wird:

# lockf /tmp/lock sleep 5

Startet man nun einen zweiten Befehl mit lockf und der gleichen Lock-Datei so wird mit der Ausführung des zweiten Befehles solange gewartet bis die Lock-Datei nicht mehr vorhanden ist:

# /usr/bin/time -h lockf /tmp/lock whoami
beat
        4.60s real              0.00s user              0.00s sys

Mit Hilfe der -t Option kann angegeben werden wieviele Sekunden lockf maximal wartet. Ist nach Ablauf dieser Zeit die Lock-Datei noch vorhanden bricht lockf ab:

# lockf -t 1 /tmp/lock whoami
lockf: /tmp/lock: already locked

Auf FreeBSD ist lockf standardmässig im Basissystem vorhanden. Mehr Informationen zu lockf findet man in der Manpage lockf(1).

 Permalink
Prev Next51-60/521