nette kleinigkeiten

oenone schrieb:
das ist etwas ganz anderes. hier geht es um programme, die anderes tun oder mehr komfort bieten (wie du schon meintest).
was ich meinte waren programme, die es in dieser funktionalität schon im grundsystem gibt..

Und jetzt werfen wir einen Blick auf das Datum des Postings und stellen fest das "damals" pkill(1) nur als Port/Package verfuegbar war.
Fakt ist, dass *jeder* auf seiner Workstation oder seinem Server Software einsetzt, die nicht "per Default" vorhanden ist. Was soll also das "Argument":
das gibt es nicht im grundsystem.. und man sollte nicht unnötig von non-standard packages abhängig werden
Ich (wie IMO jeder andere User auch) installiere Thirdpart-Software, weil sie flexibler/umfangreicher ist, als die vorhandene. Oder genau das Gegenteil. pskill() steht in meiner ~/.zsh/zshfunctions, weil ich ehrlich gesagt noch nie was anderes damit gemacht habe, als einen Prozess beendet. Ich brauche/will keine zusaetzlichen Optionen/Argumente dazu haben.


(wo gibts killall überhaupt?)

killall ist auf allen Unices verfuegbar, aber ziemlich ueberall hat es eine andere Aufrufsyntax. Genauso wie pkill(1) nicht ueberall vorhanden ist.

(btw, default-wm bei openbsd ist fvwm, vi ist auch mit dabei)

Ich kenne OpenBSD; Du musst mir nicht erklaeren was enthalten ist. /bin/vi ist nicht der Vi, sondern nvi (nur so btw.).
 
OpenBSD und Netcologne DSL

Da es zu diesem Thema fast gar nichts im Inet gibt will ich hier zwei
meiner Erfahrungen zum besten geben, egal wie trivial sie sind :cool:

1)
Mindestens OpenBSD 3.4 ist Pflicht. Ein mit Arcor funktionierender 3.2 er Server war durch nichts zur Zusammenarbeit mit Netcologne DSL zu bewegen.
Hilfe zu einem BS wie BSD ist von der Hotline nicht zu erwarten!
Gibts wohl nirgendwo.
3.4 ging dann allerdings auf Anhieb.

2)
Grade eben habe ich nette 30 min verbracht weil sich mein OpenBSD Router einfach nicht mehr einwählen wollte.
ppp lief zwar, Netz war auch da aber keine Reaktion am DSL Modem.
Sprich das Modem hat so getan als bekämme es keine Anforderung vom OpenBSD Rechner. Die "Activity" Leuchte blinkte einfach nicht auf.
Die Windows Mühlen kammen ohne Problem ins Netz.
Des Rätsels Lösung:

In der /etc/ppp/ppp.conf stand
Code:
set timeout 0

Die tun0 Meldung: No Carrier (und "absolute OpenBSD" ;) ) hat mich dann dazu bewegt das Timeout auf 120 (Sekunden ??) zu setzen da ich annahm der Parameter ließe OpenBSD etwas länger auf ein Signal vom DSL Dienst warten.
Das erstaunliche ist:
Ab dann gings sofort.

Habe nochmal nachgelesen und festgestellt das der Paramter nur die IDLE Zeit angibt nach der aufgelegt wird.
Nun klappt auch das Einwählen per
Code:
set timeout 0
wieder. .:confused:

Offensichtlich war es ein Zufall das die Leitung in dem Augenblick wieder ging.
Obwohl die Windows Mühlen kammen die ganze Zeit rein....
:eek:

Gruß

Nachtrag:
----------------------------------------------------
Das Einwählen in der shell per
Code:
ppp -ddial netcol
mit dem Paramter
Code:
set timeout 0
geht zwar dennoch geht das automatische Einwählen nach dem Reboot NICHT!. Die gleichen Symptome. Es kommt nix beim Modem an.
Habe
Code:
set timeout 99999
gesetzt jetzt wählt sich die Kiste nach dem Reboot auch wieder ein.
Seltsam aber wahr!
:huth:
Q
 
Zuletzt bearbeitet:
strcat schrieb:
Du hast eine Pipe und einen Prozess weniger. Und? Bei einer function() deren Laufzeit =<1s liegt, spielt das IMO nicht die geringste Rolle.

Und wieso "heftig"? Die function() heisst ja pskill und nicht psbittebittebendedichdochlieberprozess.
`cd /usr/ports/sysutils/proctools && make && make install clean'; dann hat man eine eklige Portierung von pkill(1) und pgrep(1).


Es geht nicht um die Lauzeit sondern um den Stil ;-) grep und awk auf einer Zeile ist igitt

"Heftig" weil das Programm bei "kill -9" keine Chance bekommt vor dem Exitus aufzuraeumen.
 
Code:
#/bin/bash
MP3VZ=/pfad/zu/den/MP3/alben
indexToPlay=$(expr $RANDOM % $(ls $MP3VZ | wc -l));
albumToPlay=$(ls $MP3VZ | sed -n ''$indexToPlay' p');

if [ -z "`echo $albumToPlay | sed s/[A-Z]_*//`" ]; then
        /usr/bin/randomx
else
        echo $albumToPlay;
        xmms $MP3VZ/"$albumToPlay";
fi

exit 0;

nix besonderes, aber hilfreich wenn man Entscheidungsschwierigkeiten bei über 800 MP3 Alben hat :)
 
ascii-art background

Ein kleines Programm, das vielleicht nicht jeder kennt: xrootconsole. Das befindet sich in den Ports und macht lesen von einer Datei und Drucken auf den Hintergrund von X. Wenn man sich ein fifo macht:
Code:
mknod /somedirectory/somename p
(möglicherweise mußt du noch Berechtigungen anpassen, damit es nach Wunsch geht: chmod irgendwas /somedirectory/somename) und dann xrootconsole folgendermaßen aufruft:
Code:
xrootconsole -geometry 210x78+0+0 /somedirectory/somename
dann kann man alles Mögliche an sein fifo schicken und xrootconsole wird es auf den Bildschirm drucken. Mit der geometry-Option muß man spielen, bis sie einem passt. Das Schicken geht dann z.B. so:
Code:
cat somefile > /somedirectory/somename
Freilich geht das auch mit logs, aber ich bevorzuge ascii-art. Hier ist ein Link zu einem screenshot: http://www.kong74.org/screenshot.jpeg
Beim screenshot ist auch die Unabhängigkeit vom Window-Manager zu erkennen, der hat seinen Focus irgendwo zwischen den virtual Desktops, aber der ascii-Platypus ist schön mittig plaziert.
 
A poor man's watch

Hallo OpenBSD-Forum,

bevor ich hier meine erste Frage poste (wird gleich in ein paar Minuten passieren), dachte ich, ich sollte wohl im Sinne einer persönlichen Vorstellung erstmal etwas beitragen. Dafür eignet sich dieser alte Thread wohl bestens.

Zuhause bin ich auf Linux, OS X und natürlich eben OpenBSD. Ein kleines Tool, das wohl in jeder Distribution von Linux vorhanden ist, das ich auf OS X und OpenBSD aber öfters schmerzlich vermisse ist "watch" zum wiederholten Anzeigen der Ausgabe eines Befehls für Dinge wie
Code:
watch df -h

Natürlich kompiliert GNU-watch ohne Probleme auf OS X/Darwin und OpenBSD und ist auch als package/port vorhanden - aber nicht überall möchte/kann man jederzeit downloaden/installieren/kompilieren. Deshalb hilft mir dieses Shell-Skript, die Grundfunktionen von GNU-watch möglichst identisch zu emulieren:

Code:
#!/bin/sh
#
#    A poor man's watch
#
#    Copyright (c) 2007, Beat Vontobel <beat.vontobel@futhark.ch>
#    
#    Permission to use, copy, modify, and/or distribute this software for any
#    purpose with or without fee is hereby granted, provided that the above
#    copyright notice and this permission notice appear in all copies.
#    
#    THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
#    WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
#    MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
#    ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
#    WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
#    ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
#    OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#
#    2007-01-09  First version
#    2007-08-01  Improved inter-shell compatibility
#                Added option -t do deactivate title line
#

SLEEP=2
TITLE=0
ARGS=`getopt tn: $*`
if [ $? -ne 0 ]; then
    echo "Usage: $0 [-n SECONDS_TO_SLEEP] [-t] COMMAND [ARGUMENTS...]"
    exit 2
fi
set -- $ARGS
for I; do
    case "$I" in
        -n)
            SLEEP=$2; shift; shift;;
        -t)
            TITLE=; shift;;
        --)
            shift; break;;
    esac
done

while true; do
    TTY_SIZE=`stty size`
    LINES=$((${TTY_SIZE% *}-1))
    COLUMNS=${TTY_SIZE#* }
    clear
    if [ $TITLE ]; then
        printf "%-*.*s %s\\n\\n" \
            $((${COLUMNS}-25)) $((${COLUMNS}-25)) "Every ${SLEEP}s: $*" \
            "`date +'%a %b %e %H:%M:%S %Y'`"
        LINES=$((${LINES}-2))
    fi
    ${SHELL} -c "$*" \
        | head -n ${LINES} \
        | tr -c -d [:print:]\\n\\t \
        | cut -b -${COLUMNS}
    sleep ${SLEEP}
done

Habe den Code einigermassen shell-unabhängig gehaltet und verwende recht standardisierte Befehle: Das Skript läuft für mich auf verschiedenen Versionen von OpenBSD und Mac OS X unter sh/ksh/bash.

Liebe Grüsse
Beat


P.S.: Da mein Schweizer Vorname in Deutschland immer wieder Verwirrung :confused: auslöst: "Beat" ist ein sehr verbreiteter männlicher Vorname in der Schweiz, wie der in Deutschland verbreitete weibliche Vorname "Beate" (den es in der Schweiz so gut wie nicht gibt), beide zu lateinisch "beatus", glücklich, seelig. :)
 
A poor man's watch

Hallo OpenBSD-Forum,

bevor ich hier meine erste Frage poste (wird gleich in ein paar Minuten passieren), dachte ich, ich sollte wohl im Sinne einer persönlichen Vorstellung erstmal etwas beitragen. Dafür eignet sich dieser alte Thread wohl bestens.

Zuhause bin ich auf Linux, OS X und natürlich eben OpenBSD. Ein kleines Tool, das wohl in jeder Distribution von Linux vorhanden ist, das ich auf OS X und OpenBSD aber öfters schmerzlich vermisse ist "watch" zum wiederholten Anzeigen der Ausgabe eines Befehls für Dinge wie
Code:
watch df -h

Natürlich kompiliert GNU-watch ohne Probleme auf OS X/Darwin und OpenBSD und ist auch als package/port vorhanden - aber nicht überall möchte/kann man jederzeit downloaden/installieren/kompilieren. Deshalb hilft mir dieses Shell-Skript, die Grundfunktionen von GNU-watch möglichst identisch zu emulieren:

Code:
#!/bin/sh
#
#    A poor man's watch
#
#    Copyright (c) 2007, Beat Vontobel <beat.vontobel@futhark.ch>
#    
#    Permission to use, copy, modify, and/or distribute this software for any
#    purpose with or without fee is hereby granted, provided that the above
#    copyright notice and this permission notice appear in all copies.
#    
#    THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
#    WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
#    MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
#    ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
#    WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
#    ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
#    OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#
#    2007-01-09  First version
#    2007-08-01  Improved inter-shell compatibility
#                Added option -t do deactivate title line
#

SLEEP=2
TITLE=0
ARGS=`getopt tn: $*`
if [ $? -ne 0 ]; then
    echo "Usage: $0 [-n SECONDS_TO_SLEEP] [-t] COMMAND [ARGUMENTS...]"
    exit 2
fi
set -- $ARGS
for I; do
    case "$I" in
        -n)
            SLEEP=$2; shift; shift;;
        -t)
            TITLE=; shift;;
        --)
            shift; break;;
    esac
done

while true; do
    TTY_SIZE=`stty size`
    LINES=$((${TTY_SIZE% *}-1))
    COLUMNS=${TTY_SIZE#* }
    clear
    if [ $TITLE ]; then
        printf "%-*.*s %s\\n\\n" \
            $((${COLUMNS}-25)) $((${COLUMNS}-25)) "Every ${SLEEP}s: $*" \
            "`date +'%a %b %e %H:%M:%S %Y'`"
        LINES=$((${LINES}-2))
    fi
    ${SHELL} -c "$*" \
        | head -n ${LINES} \
        | tr -c -d [:print:]\\n\\t \
        | cut -b -${COLUMNS}
    sleep ${SLEEP}
done

Habe den Code einigermassen shell-unabhängig gehaltet und verwende recht standardisierte Befehle: Das Skript läuft für mich auf verschiedenen Versionen von OpenBSD und Mac OS X unter sh/ksh/bash.

Liebe Grüsse
Beat


P.S.: Da mein Schweizer Vorname in Deutschland immer wieder Verwirrung :confused: auslöst: "Beat" ist ein sehr verbreiteter männlicher Vorname in der Schweiz, wie der in Deutschland verbreitete weibliche Vorname "Beate" (den es in der Schweiz so gut wie nicht gibt), beide zu lateinisch "beatus", glücklich, seelig. :)
 
Ich wärm diesen thread mal wieder auf, ist ja eine gute Idee.

Also, eine der tollsten Erfindungen seit geschnitten Brot sind für mich syslogd(8) memory buffers.

1. Membuf-Eintrag in syslogd.conf(5) anlegen.
Code:
# echo '# Alle Nachrichten in einen mem-buffer schreiben, plus Zeitstempel alle 20 min
*.*,mark.info           :256:debug' >> /etc/syslogd.conf

2. reporting_socket anlegen
Code:
# echo 'syslogd_flags="-s /var/run/syslogd.sock"  # socket necessary to read mem-buffered logs' >> /etc/rc.conf.local

Damit die Sache scharf wird, ist jetzt noch ein reboot(8) nötig, oder syslogd mit entsprechenden Parametern von Hand abschiessen und neu starten.

3. Bei Bedarf: Log Lesen mit syslogc(8)
Code:
# syslogc debug

3a. Log Lesen mit tail-Funktionalität
Code:
# syslogc -f debug

Wenn ich was debuggen muss (z.B. ppp :ugly:), habe ich alles was irgendein Prozess/Kernel nach syslog schickt auf einen Blick, in der richtigen Reihenfolge mit Zeitstempel, PID und allem Schnick und Schnack.
Aber nichts davon landet auf der Platte, kann nichts volllaufen.
Geniale Erfindung, diese Puffer!

(Code-Schnippsel nicht getestet, use at your own risk!)
 
Ich erstelle mir immer meine eigenen OpenBSD-CDs mit genau den zusätzlichen Packages drauf die ich haben will. In das Packages Verzeichnis lade ich dann alle Packages die ich haben will und dann brauche ich noch die Abhängigkeiten. Um die zu ermitteln und ebenfalls herunter zu laden verwende ich folgendes Script:

Code:
#!/bin/sh

# fetches dependencies for OpenBSD packages

# package mirror to use
mirror=ftp://ftp.eu.openbsd.org/pub/OpenBSD/4.9/packages/i386/

fetchdep() {
   dir=`mktemp -d`
   tar -x -z -C $dir -f "${1}" +CONTENTS
   grep "^@depend" ${dir}/+CONTENTS | cut -d : -f 3 > ${dir}/deps

   while read pkg
   do
      if [ -f ${pkg}.tgz ]
      then
         .
      else
         ftp -V ${mirror}/${pkg}.tgz
         fetchdep ${pkg}.tgz
      fi
   done < ${dir}/deps

   rm -rf $dir
}

for file in `ls -1 *.tgz`
do
   if [ "$1" = "-v" ]
   then
      echo "Ermittle Abhaengigkeiten von $file"
   fi
   fetchdep $file
done

Das Script muß in dem Verzeichnis aufgerufen werden, in dem bereits ein paar Packages liegen. Der Mirror oben kann natürlich nach belieben ausgewechselt werden. Das Script versteht auch noch den Extra Parameter -v um jeweils dazu zu sagen für welches Package gerade die Abhängigkeiten geholt werden.

Gruß
Reks30
 
Ich erstelle mir immer meine eigenen OpenBSD-CDs mit genau den zusätzlichen Packages drauf die ich haben will. In das Packages Verzeichnis lade ich dann alle Packages die ich haben will und dann brauche ich noch die Abhängigkeiten. Um die zu ermitteln und ebenfalls herunter zu laden verwende ich folgendes Script:

Was spricht gegen

Code:
PKG_CACHE=/var/tmp/datengrab PKG_PATH=ftp://... pkg_add -n alles was ich so brauche
 
Dateien nach Inhalten durchsuchen:
Code:
find . -type f -exec grep -q -i <STRING> {} \; -print

Leicht erweiterbar zB für PHP Dateien:
Code:
find . -type f -name \*.php -exec grep -q -i <STRING> {} \; -print
 
Zurück
Oben