BlogBlog ÜbersichtjailscriptportsoptFreeBSDLinksThermoskanne

Radio auf der Kommandozeile hören

Mit Hilfe von shell-fm kann man das Programm von last.fm auch auf der Kommandozeile empfangen. shell-fm kann über die FreeBSD Ports installiert werden:

# cd /usr/ports/multimedia/shell-fm && make install clean

Nun kann bereits der gewünschte Sender von last.fm gestartet werden:

# shell-fm "lastfm://artist/Metallica/similarartists"

Danach wird man nach seinem last.fm Benutzernamen und Passwort gefragt. Der Benutzername, das Passwort und der Standardsender können auch in der Konfigurationsdatei ~/.shell-fm/shell-fm.rc gespeichert werden:

username = Benutzername
password = Passwort
default-radio = lastfm://artist/Ramones/similarartists

shell-fm kann durch verschiedene Tastaturbefehle gesteuert werden. Mit n wird zum nächsten Lied gewechselt, durch r kann ein neuer Sender gewählt werden und mit einem grossen Q verlässt man shell-fm.

Alle Tastenkürzel und mehr Informationen zu shell-fm findet man in der Manpage shell-fm(1).

Comments (1)  Permalink

tcsh bei Inaktivität beenden

Benutzt man die tcsh, so kann man mit der Variable autologout festlegen, nach wievielen Minuten eine Shell automatisch beendet wird, wenn man auf der Shell keine Eingabe tätigt. Gibt man folgende Zeile in der tcsh ein, so wird die Shell automatisch nach 60 Minuten Inaktivität beendet:

# set autologout = 60

Durch das Setzen eines zweiten Wertes kann die Anzahl Minuten angegeben werden, nach der eine Shell bei Inaktivität gesperrt werden soll. Folgendes Beispiel sperrt die Shell nach 30 Minuten und beendet die Shell nach 60 Minuten:

# set autologout = (60 30)

Um die Werte dauerhaft für einen Benutzer zu setzen, kann die Zeile in der ~/.cshrc eingefügt werden. Soll die Variable für alle tcsh Benutzer gesetzt werden, fügt man die Zeile in die /etc/csh.cshrc ein.

Related Entries:
Wort in der tcsh löschen
Programm mit which finden
Liste der besuchten Verzeichnisse merken
foreach-Schleife in der tcsh
Vervollständigung in der tcsh
 Permalink

Tastaturlayout ändern

Arbeitet man auf der Konsole oder im Single User Mode und das Tastaturlayout stimmt nicht mit der vorhandenen Tastatur überein, so kann das Layout ganz einfach mit kbdcontrol angepasst werden. Voraussetzung im Single User Mode ist aber, dass /usr gemountet ist. Soll ein Tastaturlayout, zum Beispiel das schweizerdeutsche, geladen werden, verwendet man kdbcontrol mit der -l Option:

# kbdcontrol -l /usr/share/syscons/keymaps/swissgerman.iso.kbd

Wenn sich die Layoutdatei unter /usr/share/syscons/keymaps befindet, kann auf die vollständige Pfadangabe auch verzichtet werden:

# kbdcontrol -l swissgerman.iso

Um ein Layout automatisch zu laden, fügt man folgende Zeile in die /etc/rc.conf ein:

keymap="swissgerman.iso"

kbdcontrol befindet sich bereits im Basissystem vom FreeBSD. Mehr Informationen zu kbdcontrol findet man in der Manpage kbdcontrol(1).

 Permalink

Empfohlenes Aktualisieren von portmaster

Benutzer von portmaster sollten nach dem Aktualisieren des Portbaums unbedingt portmaster deinstallieren und neu installieren. Ältere Versionen von portmaster haben mit den Änderungen in ports/Mk/bsd.port.mk durch die gestern eingeführte neue DESTDIR Implementation Probleme:

# portmaster portmaster
"/usr/ports/Mk/bsd.port.mk", line 1092: Could not find /Mk/bsd.commands.mk
-p: not found
"/usr/ports/Mk/bsd.port.mk", line 1139: warning: " -p" returned non-zero status
-s: not found
"/usr/ports/Mk/bsd.port.mk", line 1147: warning: " -s" returned non-zero status
-r: not found
-e: not found
"/usr/ports/Mk/bsd.port.mk", line 1152: warning: " -r | -e 's/[-(].*//'" returned non-zero status
/^#define __FreeBSD_version/ {print $3}: not found
"/usr/ports/Mk/bsd.port.mk", line 1158: warning: " '/^#define __FreeBSD_version/ {print $3}' < /usr/include/sys/param.h" returned non-zero status
/var/db/ports//options: not found
"/usr/ports/Mk/bsd.port.mk", line 1217: warning: " "/var/db/ports//options"" returned non-zero status
make: fatal errors encountered -- cannot continue
"/usr/ports/Mk/bsd.port.mk", line 1092: Could not find /Mk/bsd.commands.mk
-p: not found
"/usr/ports/Mk/bsd.port.mk", line 1139: warning: " -p" returned non-zero status
-s: not found
"/usr/ports/Mk/bsd.port.mk", line 1147: warning: " -s" returned non-zero status
-r: not found
-e: not found
"/usr/ports/Mk/bsd.port.mk", line 1152: warning: " -r | -e 's/[-(].*//'" returned non-zero status
/^#define __FreeBSD_version/ {print $3}: not found
"/usr/ports/Mk/bsd.port.mk", line 1158: warning: " '/^#define __FreeBSD_version/ {print $3}' < /usr/include/sys/param.h" returned non-zero status
/var/db/ports//options: not found
"/usr/ports/Mk/bsd.port.mk", line 1217: warning: " "/var/db/ports//options"" returned non-zero status
-u: not found
"/usr/ports/Mk/bsd.port.mk", line 2245: warning: " -u" returned non-zero status
-e: not found
"/usr/ports/Mk/bsd.port.mk", line 2341: warning: "/usr/local/sbin/pkg_info -P 2>/dev/null | -e 's/.*: //'" returned non-zero status
make: fatal errors encountered -- cannot continue
usage: mkdir [-pv] [-m mode] directory_name ...
===>>> Update portmaster-1.18? [n] n

Aus diesem Grund sollte man zuerst portmaster wie folgt aktualisieren:

# pkg_delete portmaster\* && cd /usr/ports/ports-mgmt/portmaster && make install clean

Mehr Informationen findet man in der Mail von Doug Barton auf ports@.

 Permalink

Drahtloses Netzwerk suchen

Möchte man auf FreeBSD nach vorhandenen drahtlosen Netzwerken suchen, so muss zuerst die Netzwerkschnittstelle, falls noch nicht geschehen, hochgefahren werden:

# ifconfig <WLAN Karte> up

Danach kann nach drahtlosen Netzwerken gesucht werden. Dies kann einige Zeit dauern:

# ifconfig <WLAN Karte> scan
SSID BSSID CHAN RATE S:N INT CAPS
Netz1 00:13:49:11:22:33 1 54M 16:0 100 EPSB WPA
Netz2 00:09:5b:44:55:66 1 54M 5:0 100 EPS WPA
Netz3 00:13:49:77:88:99 6 54M 18:0 200 EPS
Netz4 00:14:c1:00:aa:bb 6 54M 15:0 100 EP
Netz5 00:00:c5:cc:dd:ee 7 11M 20:0 100 E
Netz6 00:ff:cc:ff:00:01 13 54M 70:0 100 EPSB WPA

Das E in der Spalte CAPS zeigt an, dass es sich um einen Access Point und nicht um ein Ad-Hoc Netzwerk handelt. Ein P symbolisiert ein verschlüsseltes Netzwerk. Diese Liste kann danach jederzeit bis zu einem neuen Scan wiedergegeben werden:

# ifconfig <WLAN Karte> list scan

Nun kann man sich zum Beispiel mit einem unverschlüsselten Netzwerk verbinden:

# ifconfig <WLAN Karte> inet <IP-Adresse> netmask <Netzmaske> ssid <SSID>

Mit einem WEP-verschlüsselten Netz kann man sich wie folgt verbinden:

# ifconfig <WLAN Karte> inet <IP-Adresse> netmask <Netzmaske> wepkey 1:<WEP-Schlüssel> wepmode on weptxkey 1 ssid <SSID>

Eine ausführliche Anleitung zu drahtlosen Netzwerken findet man im FreeBSD Handbuch: http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/network-wireless.html

 Permalink

Apache in einer Jail einsperren

Möchte man einen Apache Webserver in einer gesicherten Umgebung laufen lassen, so muss man nicht unbedingt eine vollständige Jail aufsetzen, nur um einen Apache darin laufen zu lassen, sondern kann mit Hilfe von mod_jail den Apache mittels des jail-Systemcalls einsperren. mod_jail kann über den Portbaum installiert werden:

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

Danach kann mod_jail in der httpd.conf aktiviert werden. Für einen Apache 2.0 fügt man folgende Zeilen in die /usr/local/etc/apache2/httpd.conf ein:

LoadModule jail_module        libexec/apache2/mod_jail.so

<IfModule mod_jail.c>
jail_rootdir "/usr/local/www"
jail_hostname "test.chruetertee.ch"
jail_address 192.168.1.12
jail_scrlevel 3
</IfModule>

Mit der Variable jail_scrlevel kann festgelegt werden, mit welchem Securelevel die Jail des eingesperrten Apaches laufen soll. Da nach dem Starten des Apaches mittels chroot nach jail_rootdir gewechselt wird, muss darunter das richtige Verzeichnis für die PID-Datei erstellt werden:

# mkdir /usr/local/www/var/run

Auch müssen die Pfadangaben in der httpd.conf an die chroot-Umgebung angepasst werden. Nun kann der Apache ganz normal gestartet werden:

# /usr/local/etc/rc.d/apache2.sh start

Mit jls(8) kann nun die Jail mit dem eingesperrten Apache angezeigt werden:

# jls
JID IP Address Hostname Path
2 192.168.1.12 test.chruetertee.ch /usr/local/www

Zum Stoppen des Apaches kann nun die Jail mit Hilfe von killall beendet werden:

# killall -j 2

Mehr Informationen zu mod_jail findet man auf der Webseite: http://igorpopov.newmail.ru/mod_jail/

Comments (2)  Permalink

Datei vollständig löschen

Möchte man auf FreeBSD und OpenBSD eine Datei vollständig löschen, so dass sie nicht wieder herstellbar ist, kann die -P Option von rm verwendet werden. Diese überschreibt die Datei zuerst mit 0x00, dann mit 0xff und danach wieder mit 0x00, bevor die Datei gelöscht wird.

Allerdings dauert das Löschen mit der -P Option einiges länger als das Löschen ohne:

# ls -l testdatei
-rw-r--r-- 1 beat users 1073741824 31 Jul 17:12 testdatei
# /usr/bin/time -h rm testdatei
0,15s real 0,00s user 0,15s sys

# ls -l testdatei2
-rw-r--r-- 1 beat users 1073741824 31 Jul 17:13 testdatei2
# /usr/bin/time -h rm -P testdatei2
1m27,78s real 0,03s user 4,07s sys

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

 Permalink

CD-RW löschen

Auf FreeBSD kann burncd nicht nur zum Brennen von iso-Images, sondern unter anderem auch zum Löschen von CD-RWs verwendet werden. Folgender Befehl führt eine Schnelllöschung durch:

# burncd -f /dev/<Brenner> blank

Soll eine vollständige Löschung durchgeführt werden, kann folgender Befehl verwendet werden:

# burncd -f /dev/<Brenner> erase

Dies ist allerdings viel zeitaufwendiger als die Schnelllöschung.

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

 Permalink

Beschreibung von sysctl Variablen anzeigen

Mittels der sysctl Variablen, kann das Verhalten von FreeBSD beeinflusst werden. Der aktuell gesetzte Wert einer Kernelvariablen kann mittels sysctl ausgelesen werden:

# sysctl net.inet.tcp.blackhole
net.inet.tcp.blackhole: 0

Oft sagen die Variablennamen jedoch nicht immer genau aus, für was die Variable zuständig ist, deshalb kann man sich mit der -d Option eine kurze Beschreibung der Variable anzeigen lassen:

# sysctl -d net.inet.tcp.blackhole
net.inet.tcp.blackhole: Do not send RST when dropping refused connections
# sysctl -d vfs.usermount
vfs.usermount: Unprivileged users may mount and unmount file systems

Mehr Informationen zu sysctl findet man in den Manpages sysctl(8) und sysctl.conf(5).

 Permalink

Vorhandene Datei beim Verschieben nicht überschreiben

Verschiebt man auf FreeBSD und OpenBSD eine Datei in ein Verzeichnis, in dem schon eine gleichnamige Datei existiert, so wird diese standardmässig überschrieben:

# mkdir ordner
# echo inhalt1 > ordner/testdatei
# echo inhalt2 > testdatei2
# mv testdatei2 ordner/testdatei
# cat ordner/testdatei
inhalt2

Sollen gleichnamige Dateien beim Verschieben standardmässig nicht überschrieben werden, kann auf FreeBSD die -n Option verwenden:

# echo inhalt1 > ordner/testdatei
# echo inhalt2 > testdatei2
# mv -n testdatei2 ordner/testdatei
# cat ordner/testdatei
inhalt1
# cat testdatei2
inhalt2

Möchte man je nach Fall entscheiden, so kann auf FreeBSD und OpenBSD die -i Option verwendet werden. Wird nun eine gleichnamige Datei erkannt, so fragt mv zuerst nach, ob die Datei überschrieben werden soll.

# echo inhalt1 > ordner/testdatei
# echo inhalt2 > testdatei2
# mv -i testdatei2 ordner/testdatei
overwrite ordner/testdatei? (y/n [n]) n
not overwritten

Mehr Informationen findet man in der Manpage mv(1).

 Permalink
Prev Next341-350/521