BlogBlog ÜbersichtjailscriptportsoptFreeBSDLinksThermoskanne

Benutzern temporär das Anmelden verbieten

Möchte man, zum Beispiel wegen Wartungsarbeiten, allen Benutzern das Anmelden verbieten, so kann man einfach die Datei /var/run/nologin erstellen und schon können sich alle Benutzer bis auf root nicht mehr anmelden. Enthält die Datei auch noch einen Text, so wird dieser angezeigt, wenn ein Benutzer versucht sich anzumelden:

# echo Wegen Wartungsarbeiten ist das Anmelden bis 22 Uhr nicht gestattet > /var/run/nologin

# ssh localhost
Wegen Wartungsarbeiten ist das Anmelden bis 22 Uhr nicht gestattet

Alle bereits angemeldeten Benutzer können jedoch weiterhin auf dem System arbeiten. Möchte man diese Benutzer vom System trennen, so kann man mit shutdown -k alle angemeldeten Benutzer bis auf root ausloggen.

Um das Anmelden wieder zu gestatten, muss einfach /var/run/nologin wieder entfernt werden:

# rm /var/run/nologin

Achtung: Hat man auf dem System das direkte Anmelden als root abgeschaltet, so ist nologin(5) mit Vorsicht zu geniessen, da man sich selber aus einem System aussperren kann!

Related Entries:
Gespeicherte Optionen nach OptionsNG konvertieren
Ports-Subversion-Repository spiegeln
sysinstall-Ersatz für neuere FreeBSD-Versionen
Alte FreeBSD-Port Patchdateien aufsplitten
FreeBSD-Portbaum auf Fehler überprüfen
 Permalink

Verzeichnis eines Rechners mittels SSH mounten

Mit Hilfe von FUSEFS-SSHFS lässt sich ein Verzeichnis eines entfernten Rechners auf einem lokalen Rechner mounten, wenn man einen SSH-Zugang zu diesem Rechner besitzt.

FUSEFS-SSHFS lässt sich einfach über die Ports installieren:

# cd /usr/ports/sysutils/fusefs-sshfs && make install

Da das FUSE-Kernelmodul gebraucht wird, muss der Kernelmodul-Suchpfad noch angepasst werden. Einfach folgende Zeile in der /etc/sysctl.conf anfügen:

kern.module_path="/boot/kernel;/boot/modules;/usr/local/modules"

Jetzt muss noch folgender Eintrag in der /etc/rc.conf gemacht werden:

fusefs_enable="YES"

Möchte man das SSHFS ohne einen Neustart gleich verwenden, so muss FUSE von Hand gestartet werden:

# sysctl kern.module_path="/boot/kernel;/boot/modules;/usr/local/modules"
# /usr/local/etc/rc.d/fusefs start

Danach kann ein Verzeichnis gemountet werden:

# sshfs -o idmap=user <Benutzername>@<Rechner>:<Verzeichnis> <Mountpunkt>

Alle Optionen von sshfs erhält man mit der -h Option:

# sshfs -h
Related Entries:
Gespeicherte Optionen nach OptionsNG konvertieren
Ports-Subversion-Repository spiegeln
sysinstall-Ersatz für neuere FreeBSD-Versionen
Alte FreeBSD-Port Patchdateien aufsplitten
FreeBSD-Portbaum auf Fehler überprüfen
Comments (3)  Permalink

Komprimierte Textdateien lesen

Möchte man eine mit gzip oder bzip2 komprimierte Datei anschauen, so muss man diese nicht zuerst mit gunzip oder bunzip2 entpacken, sondern kann diese direkt mit bzcat(1) oder gzcat(1) auslesen:

# echo Dies ist eine Testdatei > test
# gzip test
# gzcat test.gz
Dies ist eine Testdatei

# echo Dies ist eine andere Testdatei > test
# bzip2 test
# bzcat test.bz2
Dies ist eine andere Testdatei

Mit bzip2 komprimierte Dateien können auch direkt mit Hilfe von bzgrep gegrept werden.

bzcat, gzcat und bzgrep befinden sich sowohl auf FreeBSD als auch auf OpenBSD im Basissystem.

Comments (2)  Permalink

Eingeloggte Benutzer beobachten

Für Schulungen oder wenn man einem eingeloggten Benutzer helfen möchte, ist es manchmal von Vorteil, wenn man die Terminalausgabe eines Benutzers sieht. Dafür gibt es watch(8). Ist das device snp nicht im Kernel vorhanden, so wird automatisch beim ersten Aufruf von watch das snp.ko-Kernelmodul geladen. Natürlich kann watch nur von root verwendet werden.

Zuerst muss man herausfinden, mit welchem Terminal (tty) der zu überwachende Benutzer arbeitet. Dies lässt sich mit w(1) herausfinden:

# w
5:22pm up 4:50, 4 users, load averages: 0,08 0,13 0,11
USER TTY FROM LOGIN@ IDLE WHAT
guest p1 :0.0 12:45pm 1 more
beat p2 :0.0 1:18pm 1 vi Makefile
beat p3 :0.0 4:46pm 36 csh
beat p4 :0.0 5:13pm 8 w

Möchte man jetzt das Terminal (ttyp1) des Benutzers guest beobachten, so kann man das als root wie folgt tun:

# watch ttyp1

Nun sieht man alle Ein- und Ausgaben des Benutzers guest auf ttyp1. watch beendet man mit Ctrl + G. Mit Ctrl + W löscht man die Ausgabe auf dem Bildschirm und mit Ctrl + X kann man auf ein anderes Terminal wechseln.

Möchte man zusätzlich auch Eingaben auf dem Terminal des Benutzers machen können, so kann man watch mit der -W Option aufrufen:

# watch -W ttyp1
Related Entries:
Gespeicherte Optionen nach OptionsNG konvertieren
Ports-Subversion-Repository spiegeln
sysinstall-Ersatz für neuere FreeBSD-Versionen
Alte FreeBSD-Port Patchdateien aufsplitten
FreeBSD-Portbaum auf Fehler überprüfen
 Permalink

Terminalausgabe aufzeichnen

Möchte man die Terminalausgabe, zum Beispiel bei einem längeren make-Durchlauf, festhalten oder aufzeichen, was bei einem Portupgrade gemacht wurde, so kann man das mit script(1) machen. Beim Start von script kann man mit der Option -a eine Datei angeben in welche die Ausgabe geschrieben wird:

# script -a /tmp/ausgabe

Nun kann man die gewünschten Kommandos eingeben und alles wird in die angegebene Datei aufgezeichnet. Um die Aufzeichnung zu stoppen, gibt man einfach exit im Teminal ein. Danach bestätigt script, dass die Ausgabe nach /tmp/ausgabe geschrieben wurde:

Script done, output file is /tmp/ausgabe

script ist sowohl auf OpenBSD als auch auf FreeBSD im Basissystem vorhanden. Auf FreeBSD hat script noch einige zusätzliche Optionen. Die -k Option schreibt alle gedrückten Tasten auch in die Datei und die -q Option unterdrückt die Start und die Stoppmeldung.

 Permalink

MP3 und Ogg-Dateien aus Musik CD's erstellen

Mit abcde (A Better CD Encoder) lassen sich einfach MP3 oder Ogg-Dateien aus Musik CD's erstellen. Dabei wird automatisch eine CDDB abgefragt und die ID3-Tags der MP3's gesetzt. abcde findet man auf FreeBSD in den Ports unter audio/abcde:

cd /usr/ports/audio/abcde/ && make install clean

Danach kann abcde über die /usr/local/etc/abcde.conf konfiguriert werden. Wichtig ist, dass man zuerst in der abcde.conf das CD-ROM Laufwerk angibt. Zum Beispiel:

CDROM=/dev/acd0

Standardmässig werden von abcde Ogg-Dateien erstellt. Möchte man MP3's erstellt haben, wechselt man den OUTPUTTYPE in der abcde.conf:

OUTPUTTYPE=mp3

Eine Beschreibung aller Optionen findet man in der Manpage abcde(1).

Nun kann man einfach eine Musik CD ins CD-ROM Laufwerk einlegen und in dem Verzeichnis, in dem man den Ordner mit den Musik-Dateien haben möchte, abcde eingeben und warten, bis abcde beendet ist. Die nun erzeugten MP3's kann man dann, wenn man möchte, gleich auf den iPod laden.

 Permalink

Verschiedene Komprimierungsmöglichkeiten

Auf Free- und OpenBSD gibt es verschiedene Komprimierungswerkzeuge.

compress

Nahezu auf jedem unixoiden Betriebssystem verfügbar. Mit compress(1) komprimierte Dateien tragen die Endung .Z.

Eine Datei wird wie folgt mit compress komprimiert und wieder entpackt:

# ls -aol test
-rw-r--r-- 1 beat wheel 3067 24 Jun 10:48 test
# compress test
# ls -aol test.Z
-rw-r--r-- 1 beat wheel 2117 24 Jun 10:48 test.Z
# uncompress test.Z
# ls -aol
-rw-r--r-- 1 beat wheel 3067 24 Jun 10:48 test

Mehrere Dateien müssen zuerst mit tar(1) zu einem Archiv gepackt werden, bevor sie mit compress komprimiert werden können.

compress ist sowohl auf Free- als auch auf OpenBSD im Basissystem verfügbar.

bzip2

Gute Kompressionsrate, dafür dauert das komprimieren länger. Mit bzip2(1) komprimierte Dateien tragen die Endung .bz2.

Eine Datei wird wie folgt mit bzip2 komprimiert und wieder entpackt:

# ls -aol test
-rw-r--r-- 1 beat wheel - 3067 24 Jun 10:48 test
# bzip2 test
# ls -aol test.bz2
-rw-r--r-- 1 beat wheel - 1689 24 Jun 10:48 test.bz2
# bunzip2 test.bz2
# ls -aol test
-rw-r--r-- 1 beat wheel - 3067 24 Jun 10:48 test

Mehrere Dateien müssen zuerst mit tar(1) zu einem Archiv gepackt werden, bevor sie mit bzip2 komprimiert werden können. Im folgenden Beispiel wird das Verzeichnis Verzeichnis zusammen mit dem ganzen Inhalt komprimiert und mit dem zweiten Befehl wieder entpackt.

# tar -cvpyf Verzeichnis.tar.bz2 Verzeichnis
# tar -xvyf test.tar.bz2

bzip2 ist auf FreeBSD bereits im Basissystem enthalten, auf OpenBSD findet man bzip2 im archivers/bzip2 Port.

gzip

Beliebtes Kompressionsprogramm. Mit gzip(1) komprimierte Dateien tragen die Endung .gz.

Eine Datei wird wie folgt mit gzip komprimiert und wieder entpackt:

# ls -aol test
-rw-r--r-- 1 beat wheel - 3067 24 Jun 10:48 test
#gzip test
#ls -aol test.gz
-rw-r--r-- 1 beat wheel - 1529 24 Jun 10:48 test.gz
#gunzip test
#ls -aol test
-rw-r--r-- 1 beat wheel - 3067 24 Jun 10:48 test

Mehrere Dateien müssen zuerst mit tar(1) zu einem Archiv gepackt werden, bevor sie mit gzip komprimiert werden können. Im folgenden Beispiel wird das Verzeichnis Verzeichnis zusammen mit dem ganzen Inhalt komprimiert und mit dem zweiten Befehl wieder entpackt.

# tar -cvpzf Verzeichnis.tar.gz Verzeichnis
# tar -xvzf test.tar.gz

gzip ist sowohl auf Free- als auch auf OpenBSD im Basissystem verfügbar.

zip

Um Daten mit Windowsbenutzern auszutauschen, empfiehlt sich zip(1). Mit zip komprimierte Dateien tragen die Endung .zip.

Eine Datei wird wie folgt mit zip komprimiert und wieder entpackt:

# ls -aol test
-rw-r--r-- 1 beat wheel - 3067 24 Jun 10:48 test
# zip test.zip test
adding: test (deflated 51%)
# ls -aol test.zip
-rw-r--r-- 1 beat wheel - 1646 24 Jun 11:34 test.zip
# unzip test.zip
Archive: test.zip
replace test? [y]es, [n]o, [A]ll, [N]one, [r]ename: y
inflating: test
# ls -aol test
-rw-r--r-- 1 beat wheel - 3067 24 Jun 10:48 test

Mehrere Dateien lassen sich direkt mit zip komprimieren. Im folgenden Beispiel wird das Verzeichnis Verzeichnis zusammen mit dem ganzen Inhalt komprimiert:

# zip -r Verzeichnis.zip Verzeichnis

zip findet man auf Free- und OpenBSD im archivers/zip Port.

 Permalink

Portabhängigkeiten graphisch darstellen

Die Abhängigkeiten eines Ports lassen sich mit einem make all-depends-list im Portverzeichnis anzeigen:

# cd /usr/ports/devel/porttools && make all-depends-list
/usr/ports/devel/portlint
/usr/ports/textproc/cdiff
/usr/ports/security/sudo
/usr/ports/devel/newfile
/usr/ports/lang/perl5.8
/usr/ports/lang/ruby18
/usr/ports/security/openssl

Möchte man jetzt wissen, wie diese Ports voneinander abhängen, so kann man dies mit pkg_tree(7) anzeigen lassen.

# pkg_tree [-v] <Portname>

Benutzt man pkg_tree ohne Optionen, werden nur die Abhängigkeiten eines Ports angezeigt. Zum Beispiel:

# pkg_tree porttools
porttools-0.77
|\__ sudo-1.6.8.12_1
|\__ ruby-1.8.4_4,1
|\__ perl-5.8.8
|\__ portlint-2.9.0
|\__ openssl-0.9.8a
|\__ newfile-1.0.14_1
\__ cdiff-1.4_1

Benutzt man die -v Option, werden auch die Abhängigkeiten der Abhängigkeiten dargestellt:

# pkg_tree -v porttools
porttools-0.77
|\__ sudo-1.6.8.12_1
|\__ ruby-1.8.4_4,1
|\__ perl-5.8.8
|\__ portlint-2.9.0
| \__ perl-5.8.8
|\__ openssl-0.9.8a
|\__ newfile-1.0.14_1
| |\__ openssl-0.9.8a
| \__ ruby-1.8.4_4,1
\__ cdiff-1.4_1
\__ perl-5.8.8

pkg_tree kann einfach über den Portbaum installiert werden:

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

UPDATE 05.02.2007:

pkg_tree wurde von sysutils in die neue Kategorie ports-mgmt verschoben. pkg_tree kann nun wie folgt installiert werden:

# cd /usr/ports/ports-mgmt/pkg_tree && make install clean
Related Entries:
Gespeicherte Optionen nach OptionsNG konvertieren
Ports-Subversion-Repository spiegeln
sysinstall-Ersatz für neuere FreeBSD-Versionen
Alte FreeBSD-Port Patchdateien aufsplitten
FreeBSD-Portbaum auf Fehler überprüfen
 Permalink

Portspezifische Makevariablen setzen

Mit portconf ist es möglich, jedem Port gewisse Makevariablen zuzuweisen. portconf kann wie folgt installiert werden:

# cd /usr/ports/sysutils/portconf && make install

Dabei wird die /etc/make.conf um einige Zeilen erweitert, welche allerdings nicht editiert werden sollten. Danach können in /usr/local/etc/ports.conf die gewünschten Variablen gesetzt werden. Zum Beispiel:

editors/openoffice*: WITH_CCACHE|LOCALIZED_LANG=de
java/eclipse: WITH_MOZILLA=firefox
www/apache2*: WITH_SSL_MODULES=yes | WITH_DAV_MODULES=yes
www/firefox-i18n: WITHOUT_SWITCHER | FIREFOX_I18N=de en
x11/fakeport: CONFIGURE_ARGS=--with-modules="aaa bbb ccc"

Mehrere Optionen können mit Pipe getrennt werden. Die Konfigurationen, die mit portconf definiert werden, werden von portmaster, portupgrade, portmanager und make install berücksichtigt.

Da portconf erst seit dem 8 Juni 2006 in den Ports ist, muss evtl. vor dem Installieren der Portbaum auf den aktuellen Stand gebracht werden.

UPDATE 05.02.2007:

portconf wurde von sysutils in die neue Kategorie ports-mgmt verschoben. portconf kann nun wie folgt installiert werden:

# cd /usr/ports/ports-mgmt/portconf && make install clean
Related Entries:
Gespeicherte Optionen nach OptionsNG konvertieren
Ports-Subversion-Repository spiegeln
sysinstall-Ersatz für neuere FreeBSD-Versionen
Alte FreeBSD-Port Patchdateien aufsplitten
FreeBSD-Portbaum auf Fehler überprüfen
 Permalink

Rechnen auf der Kommandozeile

Auf der Kommandozeile kann man mit Hilfe von bc(1) auch Rechnen. Rechnet man mit Kommazahlen, sollte man die -l Option benutzen, so werden 20 Nachkommastellen angezeigt, ohne -l werden keine angezeigt. Ruft man bc auf, so kann man danach seine Rechnung eingeben und nach einem Enter wird das Ergebnis angezeigt. Danach kann eine weitere Rechnung eingebeben werden. bc kann mit quit, exit oder Ctrl + d beendet werden.

# bc -l
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
sqrt((3+2-1)*(9/3)-3)
3.00000000000000000000
9/4
2.25000000000000000000
10/3
3.33333333333333333333
exit

Die Operatoren + - * / sollten selbsterklärend sein, sqrt() ist die Quadratwurzel, ^ ist das Potenzzeichen, also 2^3 bedeutet 2 hoch 3:

# echo "2^3" | bc 
8

Hier sieht man, wie man eine Rechnung mittels Pipe an bc übergeben kann.

Auch Modulo-Operationen lassen sich mit % machen. Dabei sollte man allerdings auf die -l Option verzichten:

# echo "9%5" | bc 
4

Mit bc lässt sich noch viel mehr machen, dies ist ausführlich in bc(1) beschrieben.

 Permalink
Prev Next281-290/325