BlogBlog ÜbersichtjailscriptportsoptFreeBSDLinksThermoskanne

Befehl mit unterschiedlichen Parametern mehrmals ausführen

Manche Programme lassen sich nicht mit mehreren Parameter ausführen:

# atacontrol status ar0 ar1
usage:  atacontrol <command> args:
        atacontrol list
        atacontrol info channel
        atacontrol attach channel
        atacontrol detach channel
        atacontrol reinit channel
        atacontrol create type [interleave] disk0 ... diskN
        atacontrol delete array
        atacontrol addspare array disk
        atacontrol rebuild array
        atacontrol status array
        atacontrol mode device [mode]
        atacontrol cap device
        atacontrol spindown device [seconds]

Dies kann mit Hilfe von apply umgangen werden. Im folgenden Beispiel wird zuerst der RAID-Status von ar0, danach von ar1 abgefragt. Durch die -d Option wird nur angezeigt was ausgeführt würde, ohne die Befehle auszuführen:

# apply -d "atacontrol status %1" ar0 ar1
exec atacontrol status ar0
exec atacontrol status ar1
# apply "atacontrol status %1" ar0 ar1
ar0: ATA RAID1 status: READY
 subdisks:
   0 ad4  ONLINE
   1 ad6  ONLINE
ar1: ATA RAID1 status: READY
 subdisks:
   0 ad5  ONLINE
   1 ad7  ONLINE

Im folgenden Beispiel wird mit der -2 Option angegeben, dass jeweils zwei Parameter aus der Liste zusammen ausgeführt werden.

# apply -d -2 cmp a1 b1 a2 b2 a3 b3
exec cmp a1 b1
exec cmp a2 b2
exec cmp a3 b3
# apply -2 cmp a1 b1 a2 b2 a3 b3
a1 b1 differ: char 1, line 1
a2 b2 differ: char 1, line 1
a3 b3 differ: char 1, line 1

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

 Permalink

Root-Partition im Single User Mode beschreibbar machen

Startet man ein FreeBSD-System im Single User Mode, so ist die root-Partition nur lesend ins System eingebunden. Möchte man die root-Parition nun beschreibbar ins System einbinden, so können dazu die -u und die -w Optionen von mount verwendet werden:

# mount 
/dev/ad0s1a on / (ufs, local, read-only)
devfs on /dev (devfs, local, multilabel)
# echo test > /test
cannot create /test: Read.only file system
# mount -uw /
# mount
/dev/ad0s1a on / (ufs, local)
devfs on /dev (devfs, local, multilabel)
# echo test > /test
# cat /test
test

Mehr Informationen findet man in der Manpage mount(8).

 Permalink

pf-Logdatei auslesen

Benutzt man die pf-Firewall so können zum Beispiel alle geblockte Pakete aufgezeichet werden. Dazu muss auf FreeBSD der pf-Log-Mechanismus in der /etc/rc.conf aktiviert werden:

pflog_enable="YES"

Regeln in der pf-Konfiguration, die das Schlüsselwort log enthalten, zeichnen nun die Pakete auf, welche auf die Regel zutreffen:

block log all

Die Logdatei kann nun mit Hilfe von tcpdump(1) ausgelesen werden:

# tcpdump -n -e -ttt -r /var/log/pflog

Auch können die aufgezeichneten Pakete in Echtzeit betrachtet werden:

# tcpdump -n -e -ttt -i pflog0

Mehr Informationen findet man in der Manpage pflogd(8).

Comments (3)  Permalink

Superpages auf FreeBSD verwenden

Seit FreeBSD 7.2 können auf den Plattformen i386 und amd64 Superpages aktiviert werden. Dadurch kann FreeBSD mit grossen Seiten im virtuellen Speicher umgehen, was vor allem auf neueren Mehrkern-Prozessoren zu Leistungssteigerungen führen kann. Möchte man die Superpages aktivieren, fügt man folgende Zeile in der /boot/loader.conf ein und startet danach das System neu:

vm.pmap.pg_ps_enabled=1
Comments (1)  Permalink

Programm vom steuernden Terminal abkoppeln

Mit Hilfe von dtach lässt sich wie mit screen und tmux ein Programm vom steuernden Terminal abkoppeln. So kann das Programm weiterhin im Hintergrund laufen. Später kann man sich wieder mit dem Programm verbinden. Im Gegensatz zu screen oder tmux zeichnet dtach die Ausgabe des Programmes im Hintergrund nicht auf, die Programmgrösse ist dafür um einiges kleiner. Daher sollte man zum Beispiel die Ausgabe mit Hilfe von tee(1) in eine Datei schreiben oder ein Programm verwendet, welches regelmässig seine Ausgabe aktualisiert. Im FreeBSD Portbaum findet man dtach unter misc/dtach:

# cd /usr/ports/misc/dtach && make install clean

Im folgenden Beispiel wird eine tcsh gestartet und unter /tmp/tcshsock ein Socket erstellt, mit welchem man sich später wieder verbinden kann.

# dtach -c /tmp/tcshsock tcsh

Möchte man nun die Shell vom Terminal abkoppeln, drückt man Ctrl + \ und die Shell sowie alle darin gestarteten Programme laufen im Hintergrund weiter. Möchte man sich nun wieder mit dem Programm verbinden, verwendet man die -a Option und den entsprechenden Socket:

# dtach -a /tmp/tcshsock

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

 Permalink

Ports im FreeBSD Portbaum suchen

Mit Hilfe von pkg_search kann im FreeBSD Portbaum nach Ports gesucht werden. Im Portbaum findet man pkg_serch unter ports-mgmt/pkg_search:

# cd /usr/ports/ports-mgmt/pkg_search && make install clean

Nun kann mit pkg_search nach einem Schlüsselwort gesucht werden:

# pkg_search ports
jasperreports-3.0.0_1   JasperReports is a powerful open source Java reporting tool
p5-UNIVERSAL-exports-0.05       Lightweight, universal exporting of variables
nagios-check_ports-0.6.1        Nagios Plugin to monitor your FreeBSD Ports
kports-0.6.1_5          KDE3-Version of your favorite frontend to the Ports
kports-0.8.1_1          Qt4-Version of your favorite frontend to the Ports
portscout-0.7.4_2       A tool to scan for new versions of FreeBSD ports
portsearch-1.3.2        Port searching tool that supports search by packing list files
portsman-0.2_2          An ncurses based front-end to manage the FreeBSD ports collection
portsopt-1.4            Shows WITH(OUT)-knobs of a port makefile
symports-1.0            Automatically generate symlinks for virtual categories
gtkportscan-1.2_4       A simple port scanner that prints out open ports
portscanner-1.2_1       A simple and easy to use TCP port scanner
portsentry-1.2          Port scan detection and active defense

Sollen zusätzliche Informationen wie die URL des Ports in die Suche aufgenommen werden, kann die -k Option verwedent werden:

# pkg_search -k firefox
de-bsdforen-firefox-searchplugin-0.3_2  Firefox searchplugins for the www.bsdforen.de board and wiki
de-bsdgroup-firefox-searchplugin-0.2_3  Firefox searchplugins for the www.BSDGroup.de board
firefox-2.0.0.20_9,1    Web browser based on the browser portion of Mozilla
firefox-i18n-2.0.0.20   Localized interface for Firefox
firefox-remote-20040803_3       Wrapper scripts for firefox web browser
firefox-3.0.14,1        Web browser based on the browser portion of Mozilla
firefox-3.5.r3,1        Web browser based on the browser portion of Mozilla
firefox3-i18n-3.0.13    Localized interface for Firefox3
firefox-3.5.3,1         Web browser based on the browser portion of Mozilla
firefox35-i18n-3.5.3    Localized interface for Firefox3.5
linux-firefox-3.0.14,1  Web browser based on the browser portion of Mozilla
linux-firefox-devel-3.0.b2_1    Web browser based on the browser portion of Mozilla
conkeror-20090821       A completely keyboard driven browser based on firefox
xpi-firefox-showcase-0.9.5      Easily locate and select any open browser window
xpi-firefoxonwooztalk-0.9.9,1   Meet your World Wide Web neighbors with Firefox
xpi-live_http_headers-0.15      A firefox extension to view HTTP headers
xpi-modify_headers-0.6.6        A firefox extension to manipulate HTTP headers
xpi-twitterfox-1.8.3    twitterFox firefox plugin.

Möchte man angezeigen in welchem Verzeichnis sich der Port befindet, verwendet man die -r Option:

# pkg_search -r firefox 
de-bsdforen-firefox-searchplugin-0.3_2  /usr/ports/german/bsdforen-firefox-searchplugin
de-bsdgroup-firefox-searchplugin-0.2_3  /usr/ports/german/bsdgroup-firefox-searchplugin
firefox-2.0.0.20_9,1    /usr/ports/www/firefox   
firefox-i18n-2.0.0.20   /usr/ports/www/firefox-i18n
firefox-remote-20040803_3       /usr/ports/www/firefox-remote
firefox-3.0.14,1        /usr/ports/www/firefox3  
firefox-3.5.r3,1        /usr/ports/www/firefox3-devel
firefox3-i18n-3.0.13    /usr/ports/www/firefox3-i18n
firefox-3.5.3,1         /usr/ports/www/firefox35 
firefox35-i18n-3.5.3    /usr/ports/www/firefox35-i18n
linux-firefox-3.0.14,1  /usr/ports/www/linux-firefox
linux-firefox-devel-3.0.b2_1    /usr/ports/www/linux-firefox-devel
xpi-firefox-showcase-0.9.5      /usr/ports/www/xpi-firefox-showcase
xpi-firefoxonwooztalk-0.9.9,1   /usr/ports/www/xpi-firefoxonwooztalk

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

 Permalink

Netzwerkdurchsatz graphisch darstellen

Möchte man den Netzwerkdurchsatz in der Konsole graphisch darstellen, so kann man dazu nload verwenden. Im FreeBSD Portbaum findet man nload unter net/nload:

# cd /usr/ports/net/nload && make install clean

Beim Starten von nload muss nun die Netzwerkschnittstelle angegeben werden, welche beobachtet werden soll:

# nload <Netzwerkschnittstelle>

Danach wird der aktuelle Durchsatz der Schnittstelle regelmässig angezeigt:

Device wlan0 [192.168.2.40] (1/1):
========================================================================================
Incoming:





                     .                 ..                ..
                  . .#. |#            ###               .##|||
                  ########.           ###              .######.
                  #########          .###|             ########
                  #########          #####            .########
                 |#########          #####            #########    #
                 ##########          #####            #########    #
                 ##########     .    #####            #########  . #  Curr: 4.16 MBit/s
                .###########    #.  ######        .  ##########..# #  Avg: 3.03 MBit/s
               .############    ##  #######       #| ###############  Min: 0.00 Bit/s
               #############    ## |#######       ## ###############  Max: 6.78 MBit/s
              |############# .|###.########   || |##################  Ttl: 113.89 MByte
Outgoing:

             ..                                                  ..
            .##|||       #                                      .##.
           .######.     ##      .|...|              .|||||#.  ######
           ########     ##    ########|.#.         |######## .######
          .########     ##    ############         #########|#######
          #########    ###   ##############       |#################
          #########    ###   ##############|..|. .##################
          #########  . ####  #######################################  Curr: 6.26 MBit/s
      .  ##########..# ####||#######################################  Avg: 3.80 MBit/s
      #| ###########################################################  Min: 0.00 Bit/s
      ## ###########################################################  Max: 6.83 MBit/s
  || |##############################################################  Ttl: 68.67 MByte

Möchte man mehrere Schnittstellen gleichzeitig beobachten, so kann dazu die -m Option verwendet werden, allerdings werden dann die Graphen nicht mehr dargestellt:

# nload -m wlan0 em 0
Device wlan0 [192.168.2.40] (1/2):
==================================================================
Incoming:    Curr: 1.14 kBit/s                    Curr: 0.41 Bit/s
Avg: 1.05 kBit/s                                  Avg: 0.27 Bit/s
Min: 0.45 Bit/s                                   in: 0.00 Bit/s
Max: 1.14 kBit/s                                  Max: 0.41 Bit/s
Ttl: 3.12 MByte                                   Ttl: 349.97 kByte

Device em0 [10.0.0.1] (2/2):
===================================================================
Incoming:                                         Outgoing:
Curr: 1.03 kBit/s                                 Curr: 0.34 Bit/s
Avg: 0.78 Bit/s                                   Avg: 0.43 Bit/s
Min: 0.23 Bit/s                                   Min: 0.11 Bit/s
Max: 2.03 kBit/s                                  Max: 0.98 Bit/s
Ttl: 5.01 MByte                                   Ttl: 234.07 kByte

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

 Permalink

Installierte Ports auf aktualisierte Versionen überprüfen

Mit Hilfe von pver werden alle installierten Ports mit dem Portindex verglichen und jene Ports aufgelistet von welchen eine neuere Version im Portbaum vorhanden ist. Im FreeBSD Portbaum findet man pver unter ports-mgmt/pver:

# cd /usr/ports/ports-mgmt/pver && make install clean

Zuerst muss vom aktuellen Portindex mit Hife von pver_dbgen eine Datenbank erstellt werden:

# pver_dbgen

Ist die Datenbank angelegt, können die installierten Ports mit der Index-Datenbank verglichen werden. In der zweiten Spalte wird die Version des installierten Ports, in der dritten Spalte die Version welche im Index vorhanden ist angezeigt:

# pver
portmaster                              2.10                    2.11
libxml2                                 2.7.3                   2.7.3_1
glib                                    2.20.4                  2.20.5
compat5x-i386                           5.4.0.8_9               5.4.0.8_11
gtk                                     2.16.5_1                2.16.6
pptpclient                              1.7.2                   1.7.2_2
help2man                                1.36.4_2                1.36.4_3
pinentry                                0.7.6                   0.7.6_1
subversion-freebsd                      1.6.4                   1.6.5
diablo-jdk                              1.6.0.07.02_3           1.6.0.07.02_5
firefox-3.6.a1,1                        is not in /usr/ports/INDEX
pulseaudio                              0.9.14_5                0.9.15_4
compat6x-i386                           6.4.604000.200810       6.4.604000.200810_3
opera-devel                             10.00.b2_1,1            10.00.b3_1,1
fortune-mod-hitchhiker-20050611         is not in /usr/ports/INDEX
libxul                                  1.9.0.11_1              1.9.0.13
smartmontools                           5.38_6                  5.38_7
pdfjam                                  1.21_1                  1.21_2
Comments (1)  Permalink

Port-Patches automatisch generieren

Ändert man einen FreeBSD -Port und möchte dazu Patches erstellen, welche im Port unter dem Verzeichnis files gespeichert werden, so muss man diese nicht unbedingt von Hand mit diff(1) erzeugen. Zuerst erstellt man von jeder Datei, die man verändern möchte, unterhalb des work/-Verzeichnisses eine Kopie mit der Endung .orig und bearbeitet das Original.

# cd /usr/ports/security/nss/work/nss-3.12.4/mozilla/security/nss/lib/nss/
# ls -l config.mk*
-rw-r-----  1 root  wheel  3181 30 Aug 22:27 config.mk
-rw-r-----  1 root  wheel  3182 11 Jun 02:55 config.mk.orig

Sind alle Änderungen gemacht, geht man in das Port-Verzeichnis und gibt make makepatch ein:

# cd /usr/ports/security/nss
# ls -l files
total 0
# make makepatch
/usr/bin/diff -ud ./cmd/modutil/modutil.h.orig ./cmd/modutil/modutil.h > /usr/ports/security/nss/files/patch-cmd__modutil__modutil.h
/usr/bin/diff -ud ./cmd/modutil/pk11.c.orig ./cmd/modutil/pk11.c > /usr/ports/security/nss/files/patch-cmd__modutil__pk11.c
/usr/bin/diff -ud ./cmd/platlibs.mk.orig ./cmd/platlibs.mk > /usr/ports/security/nss/files/patch-cmd__platlibs.mk
/usr/bin/diff -ud ./tests/common/init.sh.orig ./tests/common/init.sh > /usr/ports/security/nss/files/patch-tests__common__init.sh
/usr/bin/diff -ud ./lib/ckfw/dbm/ckdbm.h.orig ./lib/ckfw/dbm/ckdbm.h > /usr/ports/security/nss/files/patch-lib__ckfw__dbm__ckdbm.h
/usr/bin/diff -ud ./lib/ssl/config.mk.orig ./lib/ssl/config.mk > /usr/ports/security/nss/files/patch-lib__ssl__config.mk
/usr/bin/diff -ud ./lib/smime/config.mk.orig ./lib/smime/config.mk > /usr/ports/security/nss/files/patch-lib__smime__config.mk
/usr/bin/diff -ud ./lib/certdb/xauthkid.c.orig ./lib/certdb/xauthkid.c > /usr/ports/security/nss/files/patch-lib__certdb__xauthkid.c
/usr/bin/diff -ud ./lib/certdb/xbsconst.c.orig ./lib/certdb/xbsconst.c > /usr/ports/security/nss/files/patch-lib__certdb__xbsconst.c
/usr/bin/diff -ud ./lib/certdb/xconst.c.orig ./lib/certdb/xconst.c > /usr/ports/security/nss/files/patch-lib__certdb__xconst.c
/usr/bin/diff -ud ./lib/softoken/legacydb/cdbhdl.h.orig ./lib/softoken/legacydb/cdbhdl.h > /usr/ports/security/nss/files/patch-lib__softoken__legacydb__cdbhdl.h
/usr/bin/diff -ud ./lib/softoken/legacydb/dbmshim.c.orig ./lib/softoken/legacydb/dbmshim.c > /usr/ports/security/nss/files/patch-lib__softoken__legacydb__dbmshim.c
/usr/bin/diff -ud ./lib/softoken/legacydb/keydb.c.orig ./lib/softoken/legacydb/keydb.c > /usr/ports/security/nss/files/patch-lib__softoken__legacydb__keydb.c
/usr/bin/diff -ud ./lib/softoken/legacydb/pcertdb.c.orig ./lib/softoken/legacydb/pcertdb.c > /usr/ports/security/nss/files/patch-lib__softoken__legacydb__pcertdb.c
/usr/bin/diff -ud ./lib/softoken/legacydb/pk11db.c.orig ./lib/softoken/legacydb/pk11db.c > /usr/ports/security/nss/files/patch-lib__softoken__legacydb__pk11db.c
/usr/bin/diff -ud ./lib/softoken/legacydb/keydbi.h.orig ./lib/softoken/legacydb/keydbi.h > /usr/ports/security/nss/files/patch-lib__softoken__legacydb__keydbi.h
/usr/bin/diff -ud ./lib/softoken/config.mk.orig ./lib/softoken/config.mk > /usr/ports/security/nss/files/patch-lib__softoken__config.mk
/usr/bin/diff -ud ./lib/nss/config.mk.orig ./lib/nss/config.mk > /usr/ports/security/nss/files/patch-lib__nss__config.mk
/usr/bin/diff -ud ./lib/freebl/config.mk.orig ./lib/freebl/config.mk > /usr/ports/security/nss/files/patch-lib__freebl__config.mk
/usr/bin/diff -ud ./lib/pk11wrap/secmodi.h.orig ./lib/pk11wrap/secmodi.h > /usr/ports/security/nss/files/patch-lib__pk11wrap__secmodi.h
/usr/bin/diff -ud ./Makefile.orig ./Makefile > /usr/ports/security/nss/files/patch-Makefile
# ls -l files
total 42
-rw-r--r--  1 root  wheel   434 30 Aug 22:29 patch-Makefile
-rw-r--r--  1 root  wheel   451 30 Aug 22:29 patch-cmd__modutil__modutil.h
-rw-r--r--  1 root  wheel  1448 30 Aug 22:29 patch-cmd__modutil__pk11.c
-rw-r--r--  1 root  wheel   635 30 Aug 22:29 patch-cmd__platlibs.mk
-rw-r--r--  1 root  wheel   341 30 Aug 22:29 patch-lib__certdb__xauthkid.c
-rw-r--r--  1 root  wheel   509 30 Aug 22:29 patch-lib__certdb__xbsconst.c
-rw-r--r--  1 root  wheel   481 30 Aug 22:29 patch-lib__certdb__xconst.c
-rw-r--r--  1 root  wheel   285 30 Aug 22:29 patch-lib__ckfw__dbm__ckdbm.h
-rw-r--r--  1 root  wheel   291 30 Aug 22:29 patch-lib__freebl__config.mk
-rw-r--r--  1 root  wheel   284 30 Aug 22:29 patch-lib__nss__config.mk
-rw-r--r--  1 root  wheel   301 30 Aug 22:29 patch-lib__pk11wrap__secmodi.h
-rw-r--r--  1 root  wheel   311 30 Aug 22:29 patch-lib__smime__config.mk
-rw-r--r--  1 root  wheel   296 30 Aug 22:29 patch-lib__softoken__config.mk
-rw-r--r--  1 root  wheel   333 30 Aug 22:29 patch-lib__softoken__legacydb__cdbhdl.h
-rw-r--r--  1 root  wheel   372 30 Aug 22:29 patch-lib__softoken__legacydb__dbmshim.c
-rw-r--r--  1 root  wheel   332 30 Aug 22:29 patch-lib__softoken__legacydb__keydb.c
-rw-r--r--  1 root  wheel   361 30 Aug 22:29 patch-lib__softoken__legacydb__keydbi.h
-rw-r--r--  1 root  wheel   341 30 Aug 22:29 patch-lib__softoken__legacydb__pcertdb.c
-rw-r--r--  1 root  wheel   353 30 Aug 22:29 patch-lib__softoken__legacydb__pk11db.c
-rw-r--r--  1 root  wheel   368 30 Aug 22:29 patch-lib__ssl__config.mk
-rw-r--r--  1 root  wheel   495 30 Aug 22:29 patch-tests__common__init.sh

Nun wurde von allen veränderten Dateien ein Patch im Verzeichnis files erstellt.

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

Fehlende Abhängigkeiten eines Ports anzeigen

Möchte man einen Port installieren, vorher aber herausfinden welche Ports als Abhängigkeiten dieses Ports installiert werden, so kann dies mit make missing im Portverzeichnis gemacht werden:

# cd /usr/ports/editors/openoffice.org-3
# make missing
sysutils/coreutils
devel/patch
archivers/p5-Archive-Zip
devel/apache-ant

Mehr Informationen zu den make-Targes des Portbaums findet man in der Manpage ports(7).

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
Prev Next21-30/84