BlogBlog ÜbersichtjailscriptportsoptFreeBSDLinksThermoskanne

Datei sortieren

Mit Hilfe von sort lässt sich der Inhalt einer Datei oder die Ausgabe der Standardausgabe sortieren:

# cat testdatei 
1
k
5
l
0
e
c
d
# sort testdatei 
0
1
5
c
d
e
k
l

Sollen Zahlen sortiert werden, kann die -n Option verwendet werden so dass die Zahlen nach ihrem Wert sortiert werden:

# cat testdatei 
1
12
103
2
22
222
4
5
99
# sort testdatei
1
103
12
2
22
222
4
5
99
# sort -n testdatei
1
2
4
5
12
22
99
103
222

Soll das Ergebnis in umgekehrter Reihenfolge ausgegeben werden, kann die -r Option verwendet werden:

# sort -r testdatei
l
k
e
d
c
5
1
0

Durch die -u Option werden keine identischen Zeilen angezeigt:

# cat testdatei
c
b
a
c
b
a
# sort -u testdatei 
a
b
c

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

 Permalink

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

Zugriffs- und Modifikationszeit einer Datei ändern

Mit Hilfe der -a Option von touch kann die Zugriffszeit einer Datei verändert werden. Mit der -t Option wird die neue Zeit angegeben:

# stat -f "modify: %Sm access: %Sa" testdatei
modify: Jul 31 15:04:12 2010 access: Jul 31 15:04:05 2010
# touch -a -t 198010020210 testdatei
# stat -f "modify: %Sm access: %Sa" testdatei
modify: Jul 31 15:04:12 2010 access: Oct  2 02:10:00 1980

Identisch kann mit der -m Option die Modifikationszei der Datei angepasst werden:

# touch -m -t 198010020210 testdatei
# stat -f "modify: %Sm access: %Sa" testdatei
modify: Oct  2 02:10:00 1980 access: Oct  2 02:10:00 1980

Verwendet man nur die -t Option wird sowohl die Zugriffs- als auch die Modifikationszeit der Datei geändert:

# touch -t 201010020210 testdatei
# stat -f "modify: %Sm access: %Sa" testdatei
modify: Oct  2 02:10:00 2010 access: Oct  2 02:10:00 2010

Mit der -r Option werden die Zugriffs- und Modifikationszeiten einer anderen Datei kopiert:

# stat -f "modify: %Sm access: %Sa" testdatei*
modify: Oct  2 02:10:00 2010 access: Oct  2 02:10:00 2010
modify: Jul 31 15:04:45 2010 access: Jul 31 15:04:45 2010
# touch -r testdatei2 testdatei
# stat -f "modify: %Sm access: %Sa" testdatei*
modify: Jul 31 15:04:45 2010 access: Jul 31 15:04:45 2010
modify: Jul 31 15:04:45 2010 access: Jul 31 15:04:45 2010

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

 Permalink

Dateien einer bestimmten Grösse anlegen

Mit Hilfe von tuncate können Dateien mit einer bestimmten Grösse angelegt oder die Grösse einer Datei angepasst werden. Im folgenden Beispiel wird eine Datein welche 10MB gross ist angelegt:

# truncate -s 10M testdatei
# ls -lh testdatei
-rw-r--r--  1 beat  wheel    10M 31 Jul 15:04 testdatei

Diese Datei kann danach um weitere 10MB vergrössert werden:

# truncate -s +10M testdatei
# ls -lh testdatei
-rw-r--r--  1 beat  wheel    20M 31 Jul 15:04 testdatei

Auch kann mit truncate eine Datei angelegt werden, welche die identische Grösse einer anderen Datei hat. In diesem Falle kann mit der -r Option die Datei angegeben werden welche als Ausgangsgrösse genommen werden soll:

# truncate -r testdatei testdatei2
# ls -l testdatei*
-rw-r--r--  1 beat  wheel  20971520 31 Jul 15:04 testdatei
-rw-r--r--  1 beat  wheel  20971520 31 Jul 15:04 testdatei2

Auf FreeBSD ist truncate standardmässig im Basissystem vorhanden. Mehr Informationen zu truncate findet man in der Manpage truncate(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
Prev Next91-100/521