BlogBlog ÜbersichtjailscriptportsoptFreeBSDLinksThermoskanne

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

OpenBSD Packages aktualisieren

Seit OpenBSD 3.9 lassen sich installierte Packages einfach mit pkg_add(1) aktualisieren:

# pkg_add -ui -F update -F updatedepends

Dabei werden die installierten Packages mit denen verglichen, welche sich in einem Verzeichnis befinden, auf das die PKG_PATH Umgebungsvariable zeigt.

Wird folgende Meldung angezeigt, so wurde PKG_PATH nicht richtig gesetzt.

No packages available in the PKG_PATH

Mann kann PKG_PATH auch gleich beim Aufruf von pkg_add setzen:

# PKG_PATH=ftp://mirror.switch.ch/pub/OpenBSD/3.9/packages/i386 pkg_add -ui -F update -F updatedepends

Im nachfolgenden Beispiel wurden alle Packages auf Aktualisierungen überprüft und dank der -i Option kann der Benutzer entscheiden, ob und auf welche Version ein Package aktualisiert wird. Hier wird dovecot von 1.0-beta3 auf 1.0-beta8 aktualisiert:

# PKG_PATH=ftp://mirror.switch.ch/pub/OpenBSD/3.9/packages/i386 pkg_add -ui -F update -F updatedepends
Candidates for updating dovecot-1.0.beta3 - dovecot-1.0.beta3 dovecot-1.0.beta8
Ambiguous: dovecot-1.0.beta3 could be dovecot-1.0.beta3 dovecot-1.0.beta8
Choose one package
0:
1: dovecot-1.0.beta3
2: dovecot-1.0.beta8
Your choice: 2
Looking for updates: complete
Running the equivalent of pkg_add -r dovecot-1.0.beta8
dovecot-1.0.beta8 (extracting): complete
dovecot-1.0.beta3 (deleting): complete
dovecot-1.0.beta8 (installing): complete
Related Entries:
Aktualität des OpenBSD-Portbaumes überprüfen
Zeit synchronisieren mit ntpd
OpenOffice.org 2.0 auf OpenBSD
OpenBSD von 3.7 auf 3.8 aktualisieren
Dateien unter Free- und OpenBSD mit Flags schützen
 Permalink

Auf der Kommandozeile ans Beenden der Arbeit erinnert werden

Arbeitet man auf der Kommandozeile und hat nur noch eine gewisse Zeit zur Verfügung, bevor man die Arbeit beenden sollte, kann man mit leave(1) sichergehen, dass man die Zeit nicht vergisst.

Wenn man weiss, man sollte zu einem bestimmten Zeitpunkt seine Arbeit beenden, so kann man leave mit der genauen Uhrzeit verwenden:

# leave [<hh>]<mm>

Für 11:00 wäre dies:

# leave 1100
Alarm set for Fr 12 Mai 2006 11:00:00 CEST. (pid 969)

Han man nur noch einen gewissen Zeitraum zur Verfügung, so kann man leave mit einem Plus verwenden:

# leave +[<hh>]<mm>

Für eine Viertelstunde wäre dies leave +15 für eine Stunde und eine Minute ist dies leave +101.

5 Minuten bevor die Zeit abläuft, wird eine Warnung ausgegeben:

You have to leave in 5 minutes.

Auch eine Minute vor Ablauf der Zeit wird man nochmals darauf hingewiesen, dass man die Arbeit langsam abschliessen sollte:

Just one more minute!

Ist die Zeit abgelaufen, wird man immer wieder mit folgender Nachricht daraufhingewiesen, dass man jetzt doch gehen sollte:

Time to leave!

Jetzt hat man zwei Möglichkeiten, entweder wirklich zu gehen oder den leave-Prozess z.B. mit kill(1) zu beenden. Für das erste Beispiel wäre dies:

kill 969
 Permalink

Meldungen an eingeloggte Benutzer senden

Möchte man an andere eingeloggte Benutzer eine Nachricht senden, so kann man zuerst mit w(1) herausfinden, wer zur Zeit eingeloggt ist.

# w
6:08pm up 18 mins, 5 users, load averages: 0,02 0,15 0,15
USER TTY FROM LOGIN@ IDLE WHAT
test v0 - 6:07pm - -
beat p1 :0.0 5:51pm 1 ssh chruetertee.ch
beat p2 :0.0 6:07pm - w
beat p3 :0.0 5:59pm 6 -
beat p4 :0.0 6:04pm 3 csh

Möchte man nun eine Nachricht an einen Benutzer schicken, so kann man dies mit write(1) tun. Zum Starten gibt man

# write <Benutzer>

ein. Anschliessend kann man die Nachricht eingeben und diese mit Ctrl + D senden.

# write test
Dies ist ein Test
^D

Der Empfänger erhält nun die Nachricht:

Message from beat@daedalus.network.local on ttyp2 at 18:28 ...
Dies ist ein Test
EOF

Möchte man die Nachricht an ein bestimmtes Terminal senden, so kann man dies wie folgt tun:

# write <Benutzer> [<tty>]

Mit mesg(1) kann man einstellen, ob man Nachrichten von anderen Benutzern empfangen will oder nicht. Ein mesg n zeigt keine Nachrichten von anderen Benutzern an, ein mesg y lässt Meldungen zu.

Möchte man eine Meldung an alle Benutzer senden, so kann man dies mit wall(1) machen:

# echo 'Hallo zusammen' | wall

Die anderen Benutzer erhalten nun folgende Meldung:

Broadcast Message from beat@daedalus.network.local                             
(/dev/ttyp3) at 18:41 CEST...

Hallo zusammen
Comments (2)  Permalink

Aktualität des OpenBSD-Portbaumes überprüfen

Auf OpenBSD kann man den Portbaum mit einem Perl-Skript auf Aktualität prüfen:

# /usr/ports/infrastructure/build/out-of-date

Der Portbaum (oder Teile davon) kann danach mit CVS auf den aktuellen Stand gebracht werden. Einfach die CVSROOT Variable mit dem CVS-Server seines Vertrauens setzen und danach CVS mit dem passenden CVS-Tag ausführen:

# CVSROOT=anoncvs@anoncvs2.de.openbsd.org:/cvs
# cd /usr/port/<Verzeichnis das man aktualisieren möchte>
# cvs -d$CVSROOT up -P -rOPENBSD_3_9
Related Entries:
OpenBSD Packages aktualisieren
Zeit synchronisieren mit ntpd
OpenOffice.org 2.0 auf OpenBSD
OpenBSD von 3.7 auf 3.8 aktualisieren
Dateien unter Free- und OpenBSD mit Flags schützen
 Permalink

Terminal sperren

Arbeitet man an einem Terminal und möchte seine Arbeit kurz unterbrechen, sich aber nicht ausloggen, so kann man mit lock(1) das Terminal sperren. lock ist sowohl in FreeBSD als auch in OpenBSD im Basissystem vorhanden. Gibt man einfach lock im Teminal ein, so wird man zweimal nach einem Schlüssel gefragt, mit dem man das Terminal für 15 Minuten sperren kann.

# lock
Key:
Again:
lock: /dev/ttyp1 on daedalus.network.local. timeout in 15 minutes.
time now is Thu Apr 27 22:57:15 CEST 2006

Verwendet man lock -p so wird nicht nach einem Schlüssel gefragt, sondern das Terminal kann mit dem Benutzerpasswort wieder entsperrt werden. Mit der -n Option wird das Terminal nach 15 Minuten nicht automatisch wieder entsperrt.

Wird auf FreeBSD zusätzlich die -v Option verwendet, so kann auch das virtuelle Terminal (mit Ctrl + Alt + Fx) nicht gewechselt werden, bis das Terminal entsperrt wird.

Verwendet man eine graphische Benutzeroberfläche und hat den xscreensaver installiert, so kann man auch die graphische Oberfläche mit folgendem Befehl sperren:

# xscreensaver-command -lock

Möchte man xscreensaver nicht installieren, so kann man die graphische Oberfläche auch mit xlock(1) sperren. Auf OpenBSD ist xlock bereits im Dateiset der graphischen Oberfläche enthalten, auf FreeBSD kann man xlock über den x11/xlockmore Port installieren.

 Permalink

Befehle und Manpages finden mit apropos

Sucht man eine Manpage oder einen Befehl, weiss aber nicht genau wie er heisst, so kann einem apropos(1) weiterhelfen. apropos durchsucht die whatis Datenbank, welche wiederum aus den Namen und den Kurzbeschreibungen der Manpages besteht, und sucht darin nach dem Begriff. apropos kann ganz einfach verwendet werden:

# apropos <Begriff>

Möchte man zum Beispiel nach FreeBSD-Jails suchen, so verwendet man apropos wiefolgt:

# apropos jail
jail(2), jail_attach(2) - imprison current process and future descendants
jail(8) - imprison process and its descendants
jexec(8) - execute a command inside an existing jail
jls(8) - list active jails
prison_check(9) - determine if two credentials belong to the same jail

Dadurch dass man für den Begriff auch Regular Expressions verwenden kann, kann man zum Beispiel wie folgt nach Manpages suchen, die mit "port" beginnen:

# apropos ^port
ports(7) - contributed applications
portsnap(8) - fetch and extract compressed snapshots of the ports tree
portsnap.conf(5) - configuration file for portsnap(8)
port(1) - FreeBSD Port Tools front-end script
portaudit(1) - system to check installed packages for known vulnerabilities
portcvsweb(1) - a tool to instantly browse a history via CVSweb or FreshPorts.org
portdowngrade(1) - retrieve earlier port versions via CVS
portlint(1) - a verifier for port directories
portsclean(1) - a tool to clean ports/packages garbage
portsdb(1), ports_glob(1) - tools to manage and look up the ports database file
porttools(5), ~/.porttools(5) - FreeBSD Port Tools configuration file
portupgrade(1), portinstall(1) - tools to upgrade installed packages or install new ones via ports or packages
portversion(1) - a tool to compare the versions of installed packages with the ones in the ports tree

Mehr Informationen zu apropos in der Manpage apropos(1) und zu Regular Expressions in der Manpage von grep(1).

 Permalink

Kalender für die Kommandozeile

Passend zu Ostern dieser Befehl der Woche:

cal, ncal -- displays a calendar and the date of easter

cal(1) und ncal(1) befinden sich bereits im FreeBSD Basissystem. Auf OpenBSD ist nur cal(1) verfügbar. Wird cal ohne Optionen aufgerufen, so wird der aktuelle Kalendermonat angezeigt. ncal verwendet eine alternative Darstellung.

# cal
April 2006
So Mo Di Mi Do Fr Sa
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30

# ncal
April 2006
Mo 3 10 17 24
Di 4 11 18 25
Mi 5 12 19 26
Do 6 13 20 27
Fr 7 14 21 28
Sa 1 8 15 22 29
So 2 9 16 23 30

Für ncal lassen sich zusätzlich mit der -w Option die Wochennummer anzeigen.

Mit der -m Option lässt sich ein bestimmter Monat anschauen. Möchte man sich zum Beispiel den Oktober anschauen, so verwendet man cal wie folgt:

# cal -m 10

Mit der -y Option lässt sich ein bestimmtes Jahr anschauen. Die -e Option von ncal(1) zeigt das Datum von Ostern des aktuellen Jahres an:

# ncal -e
16 April 2006

Kombiniert man die -y und die -e Option, so zeigt ncal das Datum von Ostern des gewählten Jahres an.

Alle weiteren Optionen von cal und ncal findet man in der Manpage cal(1).

Comments (1)  Permalink

Zeit synchronisieren mit ntpd

Um die lokale Zeit mit einem NTP-Server abzugleichen, kann ntpd(8) verwendent werden. Der ntpd kann auf FreeBSD einfach über die /etc/rc.conf gestartet werden.

ntpd_enable="YES"
ntpd_sync_on_start="YES"

ntpd_sync_on_start bewirkt, dass die Zeit schon während des Aufstartens des Rechners das erste Mal abgeglichen wird. Die Konfiguration des ntpd wird in der /etc/ntp.conf festgelegt. Darin muss mindestens der NTP-Server bekanntgegeben werden. Dies kann zum Beispiel so aussehen:

server ntp.ethz.ch

Eine Übersicht über alle weiteren Konfigurationsmöglichkeiten in der /etc/ntp.conf findet man in der dazugehörigen Manpage ntp.conf(5). Alle Optionen des ntpd findet man in ntpd(8). Die Optionen können dem ntpd während des Startens mit folgendem Eintrag in der /etc/rc.conf übergeben werden:

ntpd_flags="<Optionen>"

Auf OpenBSD kann der ntpd durch folgenden Eintrag in der /etc/rc.conf.local gestartet werden:

ntpd_flags=""

Die Konfigurationsdatei für den ntpd befindet sich unter /etc/ntpd.conf. Standardmässig werden zufällig zwei Server aus einem Serverpool ausgesucht. Alle Konfigurationsmöglichkeiten findet man in der ntpd.conf(5). Die Optionen des ntpd können in der ntpd(8) nachgelesen werden und ggf. mit dem ntpd_flags Eintrag in der rc.conf.local übergeben werden.

Related Entries:
Dateien unter Free- und OpenBSD mit Flags schützen
Gespeicherte Optionen nach OptionsNG konvertieren
Ports-Subversion-Repository spiegeln
sysinstall-Ersatz für neuere FreeBSD-Versionen
Alte FreeBSD-Port Patchdateien aufsplitten
 Permalink

OpenBSD Dateiset entfernen

Möchte man auf OpenBSD ein installiertes Dateiset wieder entfernen, so kann folgender Einzeiler verwendet werden:

# tar -tzf <Dateiset> | sed -e 's/^.//' | xargs rm -d

Da die Informationen, welche Dateien entfernt werden sollen, aus den Dateisets ausgelesen werden, müssen diese verfügbar sein. Möchte man zum Beispiel auf OpenBSD 3.8 die Spiele wieder entfernen und das game38.tgz Dateiset befindet sich im aktuellen Verzeichnis, so macht man dies wie folgt:

# tar -tzf game38.tgz | sed -e 's/^.//' | xargs rm -d
 Permalink
Prev Next31-40/44