BlogBlog ÜbersichtjailscriptportsoptFreeBSDLinksThermoskanne

Sortierte Datei durchsuchen

Mit Hilfe von look kann eine sortierte Datei nach Zeilen durchsucht werden, welche mit einer bestimmten Zeichenfolge beginnen:

# look 146.78.xxx.xxx testdatei
146.78.xxx.xxx: 1045 | 0

Da look nur mit sortierten Listen funktioniert ist es auf eine solche Suche optimiert und vor allem bei grösseren Dateien schneller als grep(1):

# du -h testdatei 
 29M    testdatei
# /usr/bin/time look 146.78.xxx.xxx testdatei
146.78.xxx.xxx: 1045 | 0
        0.00 real         0.00 user         0.00 sys
# /usr/bin/time grep ^146.78.xxx.xxx testdatei
146.78.xxx.xxx: 1045 | 0
        0.16 real         0.16 user         0.00 sys

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

 Permalink

Laufende Prozesse als Baum darstellen

Mit Hilfe von dtpstree lassen sich die laufenden Prozesse eines Systems als Baum darstellen. So kann angezeigt werden, welcher Prozess von welchem gestartet wurde. Bei dtpstree handelt es sich um eine Reimplementation von pstree. Im FreeBSD -Portbaum findet man dtpstree unter sysutils/dtpstree:

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

Ruft man dtpstree ohne Optionen auf, so werden alle für den Benutzer sichtbaren Prozesse als Baum angezeigt

# dtpstree 
init-+-adjkerntz
     +-console-kit-daemon
     +-cron
     +-2*[dbus-daemon]
     +-dbus-launch
     +-devd
     +-2*[dhclient]
     +-gconfd-2
     +-8*[getty]
     +-gpg-agent
     +-hald---hald-runner-+-hald-addon-mouse-sy
     |                    +-hald-addon-storage
     +-moused
     +-pflogd---pflogd
     +-powerd
     +-sshd
     +-syslogd
     +-wpa_supplicant
     +-xdm-+-Xorg
           +-xdm---fluxbox-+-csh---Eterm---csh---ssh
                           +-csh---sh---sh---thunderbird-bin
                           +-csh---sh---sh---firefox-bin---npviewer.bin
                           +-2*[csh---xterm---csh]
                           +-5*[csh---xterm---csh---ssh]
                           +-csh---xterm---csh---dtpstree
                           +-gkrellm
                           +-xearth
                           +-xscreensaver

Verwendet man die -p Option so wird jeweils die Prozess-ID jedes Prozesses angezeigt:

# dtpstree -p
init(1)-+-adjkerntz(131)
        +-console-kit-daemon(1775)
        +-cron(1692)
        +-dbus-daemon(1627)
        +-dbus-daemon(1881)
        +-dbus-launch(1880)
        +-devd(960)
        +-dhclient(1281)
        +-dhclient(1298)
        +-gconfd-2(1883)
        +-getty(1757)
        +-getty(1758)
        +-getty(1759)
        +-getty(1760)
        +-getty(1761)
        +-getty(1762)
        +-getty(1763)
        +-getty(1764)
        +-gpg-agent(1888)
        +-hald(1772)---hald-runner(1776)-+-hald-addon-mouse-sy(1781)
        |                                +-hald-addon-storage(1802)
        +-moused(1603)
        +-pflogd(637)---pflogd(646)
        +-powerd(1543)
        +-sshd(1681)
        +-syslogd(1321)
        +-wpa_supplicant(444)
        +-xdm(1765)-+-Xorg(1771)
                    +-xdm(1818)---fluxbox(1830)-+-csh(1836)---Eterm(1843)---csh(1844)---ssh(1860)
                                                +-csh(1861)---sh(1868)---sh(1872)---thunderbird-bin(1876)
                                                +-csh(1889)---sh(1896)---sh(1900)---firefox-bin(1904)---npviewer.bin(2259)
                                                +-csh(1911)---xterm(1918)---csh(1920)
                                                +-csh(1946)---xterm(1953)---csh(1955)---ssh(1964)
                                                +-csh(1965)---xterm(1972)---csh(1974)---ssh(1983)
                                                +-csh(1984)---xterm(1991)---csh(1993)---ssh(2002)
                                                +-csh(9454)---xterm(9461)---csh(9463)---ssh(9472)
                                                +-csh(9592)---xterm(9599)---csh(9601)---ssh(9614)
                                                +-csh(9737)---xterm(9744)---csh(9746)
                                                +-csh(9903)---xterm(9910)---csh(9912)---dtpstree(9931)
                                                +-gkrellm(1832)
                                                +-xearth(1834)
                                                +-xscreensaver(1833)

Mit der -u Option werden die Änderungen der Benutzers unter welchem der Prozess läuft sichtbar:

#  dtpstree -u
init-+-adjkerntz
     +-console-kit-daemon
     +-cron
     +-dbus-daemon(messagebus)
     +-dbus-daemon(beat)
     +-dbus-launch(beat)
     +-devd
     +-dhclient
     +-dhclient(_dhcp)
     +-gconfd-2(beat)
     +-8*[getty]
     +-gpg-agent(beat)
     +-hald(haldaemon)---hald-runner(root)-+-hald-addon-mouse-sy
     |                                     +-hald-addon-storage
     +-moused
     +-pflogd---pflogd(_pflogd)
     +-powerd
     +-sshd
     +-syslogd
     +-wpa_supplicant
     +-xdm-+-Xorg
           +-xdm---fluxbox(beat)-+-csh---Eterm---csh---ssh
                                 +-csh---sh---sh---thunderbird-bin
                                 +-csh---sh---sh---firefox-bin---npviewer.bin
                                 +-2*[csh---xterm---csh]
                                 +-5*[csh---xterm---csh---ssh]
                                 +-csh---xterm---csh---su---csh(root)---dtpstree
                                 +-gkrellm
                                 +-xearth
                                 +-xscreensaver

Benutze man die -a Option werden die Argumente, mit der -t Option die Pfade jedes Prozesses ausgegeben:

# dtpstree -a -t
/sbin/init --
  +-adjkerntz -i
  +-/usr/local/sbin/console-kit-daemon
  +-/usr/sbin/cron -s
  +-/usr/local/bin/dbus-daemon --system
  +-/usr/local/bin/dbus-daemon --fork --print-pid 5 --print-address 7 --session
  +-dbus-launch --autolaunch 0e299d9692a650fd98b8ab2a00001627 --binary-syntax --close-stderr
  +-/sbin/devd
  +-dhclient: em0 [priv]
  +-dhclient: em0
  +-/usr/local/libexec/gconfd-2
  +-/usr/libexec/getty Pc ttyv0
  +-/usr/libexec/getty Pc ttyv1
  +-/usr/libexec/getty Pc ttyv2
  +-/usr/libexec/getty Pc ttyv3
  +-/usr/libexec/getty Pc ttyv4
  +-/usr/libexec/getty Pc ttyv5
  +-/usr/libexec/getty Pc ttyv6
  +-/usr/libexec/getty Pc ttyv7
  +-/usr/local/bin/gpg-agent --sh --no-use-standard-socket --daemon --default-cache-ttl 60 --max-cache-ttl 999999
  +-/usr/local/sbin/hald
  |   +-hald-runner
  |       +-hald-addon-mouse-sysmouse: /dev/psm0
  |       +-hald-addon-storage: /dev/acd0
  +-/usr/sbin/moused -p /dev/psm0 -t auto
  +-pflogd: [priv]
  |   +-pflogd: [running] -s 116 -i pflog0 -f /var/log/pflog
  +-/usr/sbin/powerd -a max -b min
  +-/usr/sbin/sshd
  +-/usr/sbin/syslogd -ss
[...]

Auch in einer Jails kann dtpstree verwendet werden obwohl der init-Prozess in der Jail nicht sichtbar ist:

# dtpstree
cron
httpd---10*[httpd]
2*[sendmail]
sshd
syslogd
tcsh---dtpstree

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

 Permalink

Musik über die Kommandozeile abspielen

Mit Hilfe von audiopreview können Musikdatein über die Kommandozeile abgespielt werden. Im FreeBSD-Portbaum findet man audiopreview unter multimedia/audiopreview:

# cd /usr/ports/multimedia/audiopreview && make install clean

Standardmässig wird von jeder Datei nur 10 Sekunden von einer zufälligen Position abgespielt. Mit Hilfe der n und p Taste kann zum nächsten oder vorherigen Lied gewechselt werden. Mit der q Taste wird audiopreview beendet:

# audiopreview Music/*mp3
[playing] AC_DC - The Jack.mp3 (0:00:34/0:05:56)
[playing] Billy Idol - Rebel Yell.mp3 (0:01:43/0:04:48)
[playing] Black Sabbath - Paranoid.mp3 (0:02:41/0:02:45)

Mit Hilfe der -e Option werden die Lieder in voller Länge abgespielt und mit der -l Option wird wieder beim ersten Lied gestartet wenn alle Dateien abgespielt sind.

# audiopreview -e -l Music/*mp3
[playing] AC_DC - The Jack.mp3 (0:00:01/0:05:56)

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

 Permalink

known_hosts-Datei nicht im Klartext speichern

In der known_hosts-Datei werden die Host-Informationen standardmässig im Klartext gespeichert:

# cat ~/.ssh/known_hosts
tinderbox.chruetertee.ch ssh-dss AAAAB3Nz...
gecko.chruetertee.ch ssh-rsa AAAAB3Nza...

Möchte man diese Host-Informationen als Hash speichern, kann die -H Option von ssh-keygen verwendet werden. Mit der -f Option wird die known_host-Datei angegeben:

# ssh-keygen -H -f ~/.ssh/known_host
/home/test/.ssh/known_hosts updated.
Original contents retained as /home/test/.ssh/known_hosts.old
WARNING: /home/test/.ssh/known_hosts.old contains unhashed entries
Delete this file to ensure privacy of hostnames
# rm -P ~/.ssh/known_hosts.old
# cat ~/.ssh/known_hosts
|1|3mPb1LTGd6JcOEruhCeEwoKNcRw=|FK2w/R45eucQMPSamG0zL1J3X9c= ssh-dss AAAAB3Nz...
|1|H3x4+97tRe1P86/VN2mKcS3VPig=|2qO9hySuF/yMByLWLdMEXgn9XYc= ssh-rsa AAAAB3Nz...

Neue Einträge werden weiterhin im Klartext gespeichert. Führt man danach ssh-keygen -H nochmals aus, werden nur die neuen Einträge geändert. Auf FreeBSD ist ssh-keygen standardmässig im Basissystem vorhanden. Mehr Informationen zu ssh-keygen findet man in der Manpage ssh-keygen(1).

 Permalink

Ausgabe von ls sortieren

Mit Hilfe der -t Option kann die Ausgabe von ls nach der Modifikationszeit der Dateien sortiert werden:

# ls -lt
total 387156
-rw-r--r--   1 beat  users  160005266 Mar 11 14:54 src.tar.bz2
-rw-r--r--   1 beat  users  212539313 Mar 11 11:08 obj.tar.bz2
-rw-r--r--   1 beat  users   18239398 Jan 13  2010 WLAN_NE785.zip
-rw-r--r--   1 beat  wheel    5172378 Jan 12  2010 Wlan-ANE762-1_4_5_1.zip

Soll die Ausgabe in umgekehrter Reihenfolge erfolgen, kann zusätzlich die -r Option verwendet werden:

# ls -lrt
total 387156
-rw-r--r--  1 beat  wheel    5172378 Jan 12  2010 Wlan-ANE762-1_4_5_1.zip
-rw-r--r--  1 beat  users   18239398 Jan 13  2010 WLAN_NE785.zip
-rw-r--r--  1 beat  users  212539313 Mar 11 11:08 obj.tar.bz2
-rw-r--r--  1 beat  users  160005266 Mar 11 14:54 src.tar.bz2

Sollen die Dateien nach ihrer Grösse sortiert werden, so kann die -S Option verwendet werden:

# ls -lrS
total 387156
-rw-r--r--  1 beat  wheel    5172378 Jan 12  2010 Wlan-ANE762-1_4_5_1.zip
-rw-r--r--  1 beat  users   18239398 Jan 13  2010 WLAN_NE785.zip
-rw-r--r--  1 beat  users  160005266 Mar 11 14:54 src.tar.bz2
-rw-r--r--  1 beat  users  212539313 Mar 11 11:08 obj.tar.bz2

Mehr Informationen und alle Optionen von ls findet man in der Manpage ls(1).

 Permalink

VuXML-Datei abfragen

Mit Hilfe von portaudit kann überprüft werden ob auf einem System Ports mit bekannten Sicherheitsproblemen installiert sind. Diese Informationen sind in der VuXML-Datei gespeichert. Mit Hilfe von vxquery kann die VuXML-Datei nach bestimmten Ports und Versionen abgefragt werden. Im FreeBSD-Portbaum findet man vxquery unter security/vxquery:

# cd /usr/ports/security/vxquery && make install clean

Nun muss vxquery der Pfad zur VuXML-Datei und der Port mit Versionsangabe übergeben werden. Sind für diese Version Sicherheitsprobleme bekannt, werden diese angezeigt:

# vxquery /usr/ports/security/vuxml/vuln.xml firefox-3.6.3,1
Topic: mozilla -- multiple vulnerabilities
Affects:
    3.6.*,1 < firefox < 3.6.4,1
    3.5.*,1 < firefox < 3.5.10,1
    linux-firefox-devel < 3.5.10
    2.0.* < seamonkey < 2.0.5
    3.0 <= thunderbird < 3.0.5
References:
    cvename:CVE-2008-5913
    cvename:CVE-2010-0183
    cvename:CVE-2010-1121
    cvename:CVE-2010-1125
    cvename:CVE-2010-1197
    cvename:CVE-2010-1199
    cvename:CVE-2010-1196
    cvename:CVE-2010-1198
    cvename:CVE-2010-1200
    cvename:CVE-2010-1201
    cvename:CVE-2010-1202
    cvename:CVE-2010-1203
    url:http://www.mozilla.org/security/announce/2010/mfsa2010-33.html
    url:http://www.mozilla.org/security/announce/2010/mfsa2010-32.html
    url:http://www.mozilla.org/security/announce/2010/mfsa2010-31.html
    url:http://www.mozilla.org/security/announce/2010/mfsa2010-30.html
    url:http://www.mozilla.org/security/announce/2010/mfsa2010-29.html
    url:http://www.mozilla.org/security/announce/2010/mfsa2010-28.html
    url:http://www.mozilla.org/security/announce/2010/mfsa2010-27.html
    url:http://www.mozilla.org/security/announce/2010/mfsa2010-26.html
    url:http://www.mozilla.org/security/announce/2010/mfsa2010-25.html
<URL:http://vuxml.freebsd.org/99858b7c-7ece-11df-a007-000f20797ede.html>
 Permalink

Dateien nach Grösse suchen

Möchte man nach Dateien suchen welche grösser als eine gewisse Grösse sind, kann dazu die -size Option von find benutzen. Im folgenden Beispiel wird nach allen Datein gesucht, welche grösser als 6MB sind:

# du -h *
 10M    datei1
5.0M    datei2
# find . -size +6M
./datei1

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

 Permalink

Sonderzeichen aus Dateinamen entfernen

Mit Hilfe von detox können Sonderzeichen automatisch aus Dateinamen entfernt und Leerzeichen durch Unterstriche ersetzt werden. Im FreeBSD -Portbaum findet man detox unter sysutils/detox:

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

Nun kann detox auf eine Datei mit Leer- und Sonderzeichen angewendet werden, welche automatisch ersetzt oder entfernt werden:

# ls
test öäü !?_test
# detox test\ öäü\ \!\?_test 
# ls
test_oau_test

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

 Permalink

Benutzerdefinierte Portabhängigkeiten festlegen

Mit Hilfe von wanted-ports wird ein Meta-Port installiert mit welchem man bentzerdefinierte Portabhängigkeiten festlegen kann. Im FreeBSD-Portbaum findet man wanted-ports unter ports-mgmt/wanted-ports:

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

Beim ersten Aufruf von wanted-ports wird eine neue Konfigurationsdatei angelegt:

# wanted-ports 
wanted-ports: WARNING -- no config file found,  creating initial /var/db/wanted-ports.conf

Mit der -a Option wird ein Port als Abhängikeit von wanted-ports hinzugefügt:

# wanted-ports -a www/apache20
wanted-ports: Register new dependency "apache>=2.0.63_15:${PORTSDIR}/www/apache20"?  y

Nachdem zum Beispiel der apache20-Port als Abhängigkeit definiert wurde, würde der wanted-ports bei einer Reinstallation automatisch apache20 mitinstallieren:

# cd /usr/ports/ports-mgmt/wanted-ports && make missing
www/apache20
devel/apr0
archivers/xz

Abhängigkeiten könen mit der -d Option wieder entfernt werden:

# wanted-ports -d www/apache20
wanted-ports: Delete dependency "apache>=2.0.63_15:${PORTSDIR}/www/apache20"?  y

Hat man alle gewünschten Abhängigkeiten hinzugefügt, kann zum Beispiel die /var/db/wanted-ports.conf auf einen weiteren Rechner kopiert werden und durch das Installieren von wanted-ports werden alle gewünschten Ports automatisch installiert.

Weiter kann wanted-ports als Absicherung benutzt werden, damit Ports nicht ohne weiteres mit pkg_delete(1) deinstalliert werden können:

# pkg_delete swaks-\*
# wanted-ports -a mail/swaks
wanted-ports: Register new dependency "swaks>=20100211.0:${PORTSDIR}/mail/swaks"?  y
# cd /usr/ports/ports-mgmt/wanted-ports && make deinstall install clean
# pkg_delete swaks-\*
pkg_delete: package 'swaks-20100211.0' is required by these other packages
and may not be deinstalled:
wanted-ports-0.1_1

Mehr Informationen zu wanted-ports findet man in der Manpage wanted-ports(1).

 Permalink

Alle Fragen eines Programms mit Ja beantworten

Führt man ein Programm aus, welches Eingaben des Benutzers erwartet, so kann dieses nicht ohne weiteres unbeaufsichtigt ausgeführt werden:

# programm
[...]
Do you want to continue [y/n]?
Are you sure [y/n]?
[...]

Können jedoch alle Fragen mit y beantwortet werden, so können diese automatisch mit yes beantwortet werden:

# yes | programm

Sollen alle Fragen zum Beispiel mit n beantwortet werden, so können diese auch mit Hilfe von yes beantwortet werden:

# yes n | programm

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

 Permalink
Prev Next71-80/325