BlogBlog ÜbersichtjailscriptportsoptFreeBSDLinksThermoskanne

Eine TCP-Verbindung trennen

Manchmal möchte man aus gewissen Gründen eine TCP-Verbindung trennen, zum Beispiel weil eine SSH oder FTP-Sitzung nicht sauber beendet worden ist. Dazu muss man zuerst herausfinden, welche Verbindung man kappen möchte. Dies findet man mit fstat auf OpenBSD oder sockstat -c auf FreeBSD heraus. Um die Verbindung zu beenden, braucht man die IP-Adresse und den TCP-Port vom Absender und dem Zielrechner.

Folgendermassen wird dann mit tcpdrop(8) eine Verbindung getrennt:

# tcpdrop <Lokale IP-Adresse> <Lokaler TCP-Port> <IP-Adresse des Benutzers> <TCP-Port>

Möchte man nun auf FreeBSD die SSH-Verbindung vom test-Benutzer trennen, muss man zuerst die benötigten Daten herausfinden und kann danach die Verbindung trennen:

# sockstat -c | grep sshd
test sshd 51960 3 tcp4 10.0.0.2:22 10.0.0.155:52711
# tcpdrop 10.0.0.2 22 10.0.0.155 52711

Auf OpenBSD findet man die benötigten Daten wie folgt:

# fstat | grep 'sshd.*internet.*<--'
test sshd 19075 5* internet stream tcp 0xd694bc84 10.0.0.1:22 <-- 10.0.0.155:53325

tcpdrop befindet sich sowohl in FreeBSD als auch in OpenBSD im Basissystem.

 Permalink

Schneller Zugriff auf FreshPorts und das CVSweb

Möchte man die Änderungen einer Datei im CVSweb nachsehen, so muss man nicht extra einen Browser öffnen, die CVSweb Seite öffnen und sich durch den Verzeichnisbau hangeln, sondern kann portcvsweb(1) benutzen. portcvsweb erkennt anhand der CVS Tags einer Datei oder eines vorhandenen Makefiles um welche Datei es sich handelt, und öffnet die richtige CVSweb-Seite im Browser.

Befindet man sich zum Beispiel im /usr/src/usr.sbin/powerd Verzeichnis und möchte die CVSweb-Seite von powerd.c anschauen, so gibt man einfach portcvsweb powerd.c ein und folgende Seite wird geöffnet: http://www.FreeBSD.org/cgi/cvsweb.cgi/src/usr.sbin/powerd/powerd.c#rev1.6.2.4
Auch lassen sich ganze Verzeichnisse anzeigen. Befindet man sich zum Beispiel im Portbaum in der Kategorie www (/usr/ports/www) und möchte die Seite des fluxcms anschauen, so gibt man portcvsweb fluxcms ein und folgende Seite wird gestartet: http://www.FreeBSD.org/cgi/cvsweb.cgi/ports/www/fluxcms/

Auch die FreshPorts Seite eines Portes kann einfach mit der -F Option erreicht werden:

# portcvsweb -F fluxcms

Man muss sich nicht einmal im Portbaum befinden, um portcvsweb aufzurufen. Einfach die Kategorie und den Portnamen an portcvsweb übergeben:

# portcvsweb -F german/ding

portcvsweb nimmt den ersten der folgenden Browser der auf einem System vorhanden ist: w3m, lynx, links, firefox, mozilla oder netscape. Möchte man einen bestimmten Browser verwenden, so kann man diesen in der BROWSER-Variable setzen:

# echo setenv BROWSER <Browser> >> ~/.cshrc

portcvsweb befindet sich im sysutils/portupgrade Port

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

# cd /usr/ports/ports-mgmt/portupgrade && make install clean
 Permalink

rc.conf aufräumen

Auf FreeBSD sind in der /etc/defaults/rc.conf Datei die Standardwerte der Systemvariablen festgelegt. Diese können in der /etc/rc.conf überschrieben werden. Mit der Zeit können sich Variablen in der rc.conf ansammeln, die identisch mit jenen in der /etc/defaults/rc.conf sind. Um die rc.conf übersichtlicher zu machen, können diese und auskommentierte Variablen entfernt werden. Dafür kann man rclean verwenden. rclean befindet sich in den FreeBSD Ports unter sysutils/rclean.

Hier zu Beispiel eine rc.conf die mit der Zeit gewachsen ist:

hostname="daedalus.chruetertee.ch"
ifconfig_em0="DHCP"
keymap="swissgerman.iso"
sshd_enable="YES"
usbd_enable="YES"
sendmail_enable="NONE"
nfs_server_enable="NO"
nfs_client_enable="NO"
portmap_enable="YES"
syslogd_enable="YES"
syslogd_flags="-ss"
clear_tmp_enable="YES"
firewall_enable="YES"
firewall_script="/etc/ipfwrules"
pccard_enable="YES"
#ifconfig_ath0="DHCP wpa"
#ifconfig_wi0="DHCP"
kern_securelevel_enable="YES"
kern_securelevel="-1"
devd_enable="YES"
ipv6_enable="NO"
inetd_enable="NO"
icmp_log_redirect="NO"
#gateway_enable="YES"
#natd_enable="YES"
#natd_interface="wi0"
#natd_flags=""
#tcp_extensions="NO"
#tcp_keepalive="NO"
icmp_bmcastecho="NO"
dumpdev="NO"
#clamav_clamd_enable="YES"
#clamav_freshclam_enable="YES"
devfs_enable="YES"
#ntpd_enable="YES"
#ntpd_sync_on_start="YES"
jail_enable="NO"

Ruft man nun rclean auf, werden auskommentierte und überflüssige Variablen entfernt:

# rclean
# Reordered by rclean on Fri Sep 22 19:55:30 2006
# rclean Copyright (c) 2002 Lapo Luchini <lapo@lapo.it>
# Please make all changes to this file, not to /etc/defaults/rc.conf
# This file contains just the overrides from /etc/defaults/rc.conf
pccard_enable="YES" # "NO"
hostname="daedalus.chruetertee.ch" # ""
background_dhclient="YES" # "NO"
firewall_enable="YES" # "NO"
firewall_script="/etc/ipfwrules" # "/etc/rc.firewall"
ifconfig_em0="DHCP" # "<not defined>"
syslogd_flags="-ss" # "-s"
sshd_enable="YES" # "NO"
keymap="swissgerman.iso" # "NO"
sendmail_enable="NONE" # "NO"
usbd_enable="YES" # "NO"
clear_tmp_enable="YES" # "NO"
kern_securelevel_enable="YES" # "NO"
portmap_enable="YES" # "<not defined>"
devfs_enable="YES" # "<not defined>"

rclean erstellt nun Kommentare, welche die Standardwerte der /etc/defaults/rc.conf aufzeigen. Möchte man diese Kommentare nicht haben, so kann man rclean mit der -n Option aufrufen. Will man die neue rc.conf speichern, so benutzt man die -w Option.

# rclean -n -w /tmp/rc.conf

Nun sollte man von der alten rc.conf eine Sicherheitskopie erstellen und kann danach die rc.conf mit der neuen und aufgeräumteren Version überschreiben.

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

Dateien durchsuchen mit grep

grep(1) durchsucht Dateien nach Suchbegriffen und gibt diese dann aus. Dabei wird immer die ganze Zeile mit dem gefundenen Suchbegriff ausgegeben. grep wird wie folgt benutzt:

# grep [Optionen] <Suchbegriff> <Datei>

Möchte man nach test1 in der testdatei suchen, so kann man dies folgendermassen tun:

# more testdatei
test1 bli
test2 bla
test3 blo

# grep test1 testdatei
test1 bli

Natürlich kann man die Ausgabe eines Programms mit einer Pipe direkt an grep weiterleiten:

# more testdatei | grep test2
test2 bla

Soll die Gross-/Kleinschreibung bei der Suche ignoriert werden, kann die -i Option verwendet werden:

# grep -i Test3 testdatei
test3 blo

Ein Begriff kann bei der Suche mit der -v Option ausgeschlossen werden, das heisst alle Zeilen die diesen Begriff nicht beinhalten werden angezeigt:

# grep -v test2 testdatei
test1 bli
test3 blo

Sollen mehrere Begriffe ausgeschlossen werden, so kommt egrep(1) zum Zuge. Die auszuschliessenden Begriffe sind mit einer Pipe zu trennen.

# egrep -v 'test1|test3' testdatei
test2 bla

Genauso wie auschliessen, lassen sich auch mehrere Suchbegriffe mit egrep kombinieren:

# egrep 'test1|test3' testdatei
test1 bli
test3 blo

Mit grep können auch Verzeichnisse rekursiv durchsuchen werden. Alle Dateien eines Verzeichnis und die Dateien der verschiedenen Unterverzeichnisse werden so durchsucht:

# grep -R <Suchbegriff> <Verzeichnis>

Möchte man nun statt den gefundenen Zeilen die Dateinamen ausgeben, in welchen der Suchbegriff gefunden wurde, kann man die -l Option hinzufügen:

# grep -Rl miau /usr/src/
/usr/src/contrib/ntp/html/notes.html
/usr/src/share/dict/web2

Für die Suchbegriffe können natürlich auch reguläre Ausdrücke (Regex) verwendet werden. Diese und alle weiteren Optionen die grep besitzt, sind in der Manpage grep(1) ausführlich beschrieben.

grep und egrep sind natürlich auf FreeBSD und OpenBSD im Basissystem vorhanden.

Comments (1)  Permalink

Ports aktualisieren mit portmaster

Mit portmaster(8) lassen sich genauso wie mit portupgrade(1) Ports aktualisieren. Jedoch ist portmaster ein Shellskript und hat nicht wie portupgrade ruby und perl als Abhängigkeit. portmaster findet man in den Ports unter sysutils/portmaster:

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

Möchte man nun herausfinden, von welchen Programmen es in den Ports neuere Versionen gibt, so kann man dies folgendermassen tun:

# portmaster -L | grep -B1 '    '

Der Abstand zwischen den beiden Hochkommas ist ein Tabulator.

Danach kann ein Port wie folgt aktualisiert werden:

# portmaster <Portname>

Möchte man alle Ports die von einem Port abhängen aktualisieren, so kann man die -r Option verwenden:

# portmaster -r <Portname>

Mit der -b Option wird von einem Port der akualisiert wird, zuerst ein Backup erstellt. Die -f Option aktualisiert die Ports, egal ob eine neuere Version in den Ports ist oder nicht. Mit der -n Option kann man sich Anzeigen lassen, was der portmaster machen würde, dies wird aber nicht durchgeführt. Möchte man make(1) Argumente übergeben so benutzt man die -m Option.

Mehr Informationen zu portmaster findet man in der Manpage portmaster(8) oder auf der Webseite: http://dougbarton.us/portmaster.html

UPDATE 05.02.2007:

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

# cd /usr/ports/ports-mgmt/portmaster && 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
Comments (1)  Permalink

Rechtschreibprüfung im vi

Im vi(1) lässt sich die Rechtschreibprüfung aspell(1) mit Hilfe eines vi Makros integrieren.

Zuerst muss aspell installiert werden. Auf FreeBSD kann man dies wie folgt tun:

cd /usr/ports/german/aspell && make install clean

Danach kann man folgende Zeile in die .exrc oder /etc/vi.exrc eintragen:

map #1 :w!^M:!aspell -c %^M:e! %^M

Die ^M werden mit Ctrl + v und der Entertaste erzeugt. Diese Zeile legt das Makro auf die F1-Taste. Folgendes wird dabei ausgeführt:

:w!^M Speichert die aktuelle Datei.

!aspell -c %^M Führt aspell im Rechtschreibprüfungsmodus auf der aktuell geöffneten Datei aus. Diese wird danach von aspell mit den Korrekturen gespeichert.

:e! % ^M Lädt die von aspell korrigierte Datei wieder in den vi.

Related Entries:
Treppeneffekt beim Einfügen von Text im vi verhindern
vi Fenster teilen
Abkürzungen im vi benutzen
vi Makros benutzen
vi Kurzreferenz
 Permalink

Prozesse als Baum darstellen

Möchte man darstellen, welcher Prozess von welchem gestartet wurde, so lässt sich dies mit pstree(1) tun.

pstree findet man sowohl auf FreeBSD als auch auf OpenBSD in den Ports unter sysutils/pstree.

Ruft man pstree ohne Optionen auf, so wird ein Baum aller für den Benutzer sichtbaren Prozesse gebildet:

# pstree
-+= 00000 root [swapper]
|-+= 00001 root /sbin/init --
| |--= 00166 root adjkerntz -i
| |--= 00248 root /usr/sbin/wpa_supplicant -B -q -i ath0 -c /etc/wpa_supplican
| |--= 00262 _dhcp dhclient: ath0 (dhclient)
| |--= 00368 root /sbin/devd
| |--= 00413 root /usr/sbin/syslogd -ss
| |--= 00438 root /usr/sbin/rpcbind
| |--= 00518 root /usr/sbin/powerd -a max -b min
| |--= 00536 root /usr/sbin/usbd
| |--= 00580 root /usr/sbin/sshd
| |--= 00587 root /usr/sbin/cron -s
| |--= 00625 root /usr/sbin/moused -p /dev/psm0 -t auto
| |-+- 00676 root /usr/X11R6/bin/xdm -nodaemon ttyv8
| | |--= 00679 root /usr/X11R6/bin/X -auth /usr/X11R6/lib/X11/xdm/authdir/auth
| | \-+= 00680 root xdm: :0 (xdm)
| | \-+= 00712 beat fluxbox
| | |--- 00715 beat gkrellm
| | |--- 00716 beat xscreensaver
| | |--- 00718 beat oneko -bsd
| | |-+= 00736 beat /bin/sh -c thunderbird
| | | \-+- 00737 beat /bin/sh /usr/X11R6/bin/thunderbird
...

Mit der -u <Benutzer> Option werden nur Zweige dargestellt, die auch Prozesse beinhalten, die unter dem angegebenen Benutzer laufen.

Mit der -U Option werden Zweige, die nur root-Prozesse beinhalten, nicht angezeigt

Wem die Darstellung von pstree nicht gefällt, sollte mal die -g 2 Option benützen.

Möchte man nur einen Zweig darstellen, der einen gewissen Prozess beinhaltet, so kann man entweder -s <Prozessname> oder -p <Prozess-ID> verwenden.

Alle Optionen erhält man mit pstree -h.

Comments (2)  Permalink

1 Jahr chruetertee.ch

Vor einem Jahr war es soweit, chruetertee.ch ging online.

1 Jahr chruetertee.ch

Ganz herzlich danken möchte ich Nina, für ihre Unterstützung, das Korrekturlesen der Artikel und die verschiedenen Graphiken sowie Alain, der mir eine Jail für chruetertee.ch zur Verfügung stellt und regelmässig Support für das Flux CMS bietet.

Auch danken möchte ich allen, die regelmässig hier lesen, Kommentare geschrieben oder mich kontaktiert haben, ohne nach Support zu fragen ;-)

Zur Feier des Tages gibt es alle Artikel des ersten Jahres, zum Teil überarbeitet und aktualisiert, als PDF zum herunterladen: http://www.chruetertee.ch/files/download/chruetertee-thermoskanne.pdf

Comments (2)  Permalink

Anzeigen welcher Host wieviel Bandbreite benutzt

Mit iftop(8) lassen sich die Verbindungen einer Netzwerkschnittstelle im Stile von top(1) anzeigen. Mit der -i Option kann man die Netzwerkschnittstelle angeben, die man beobachten will:

# iftop -i <Netzwerkschnittstelle>

Nun werden alle Verbindungen untereinander angezeigt und ein schwarzer Balken visualisiert die zur Zeit verwendete Bandbreite jeder Verbindung, welche jedoch in gesendete und empfangene Daten aufgeteilt ist. Zusätzlich werden am rechten Rand das Total der empfangenen und gesendeten Daten der letzten 40, 10 und 2 Sekunden angezeigt.

iftop

Am unteren Rand wird das Total aller Verbindungen der angezeigten Schnittstelle angezeigt. Da iftop die IP-Adressen in Hostnamen auflöst, ist es möglich, dass das Ergebnis von iftop verfälscht wird, da iftop nun selber Netzwerkverkehr generiert. Das Auflösen der IP-Adressen kann mit der -n Option unterbunden werden.

iftop kann nur als root ausgeführt werden. Auf FreeBSD befindet sich iftop unter net-mgmt/iftop in den Ports. Alle Optionen von iftop findet man in der Manpage iftop(8).

 Permalink

Notizen zur Konfiguration eines Servers mit FreeBSD 6.1

Das PDF mit Notizen zur Konfiguration eines Servers mit FreeBSD wurde auf FreeBSD 6.1 aktualisiert. Es kann unter http://www.chruetertee.ch/freebsd/ heruntergeladen werden. Dabei handelt es sich nicht um eine Schritt-für-Schritt Anleitung, sondern mehr um eine Sammlung von Möglichkeiten zur Konfiguration.

 Permalink
Prev Next21-30/91