Beiträge von kungel

    Wenn man ein Terminal sehen will, muss man auch ein Terminal aufrufen. Woher soll denn das aufgerufene Programm denn wissen, wo es die Ausgabe hinschreiben soll.

    Also mal mit dem guten alten xterm versuchen, dass tausende Parameter kennt:

    xterm -hold -e Programmaufruf

    -holt muss sein, weil das Terminal sonst sofort wieder verschwindet.

    Good luck

    es muss nicht zwingend eine Datei sein, es können auch viele kleine Dateien erzeugt werden.

    Mal nach einiger Zeit eine 2. Datei mit allen Dateien erzeugen und mit diff vergleichen.

    Andere Möglichkeit ist mit find zu arbeiten

    z.B. find /var -cmin 1 2>/dev/null

    Dann werden alle Dateien ab /var gefunden, die in der letzten Minute verändert wurden.

    echo {1:-500}

    weist der der Variablen 1 keinen Wert zu. Die Zeile gibt 500 aus, wenn kein Parameter übergeben wurde.

    mal testen mit

    Bash
    #!/bin/bash
    
    
    echo ${1:-500}
    echo $1
    param1=${1:-500}
    echo $param1


    Edit, weil fast vergessen:

    Die Shell kennt keine Typisierung

    var1=12
    var2=12.3
    var3=12,3

    eine davon ist keine Zahl

    man lernt ja nie aus.

    Aber das Geheimnis sind nicht die geschweiften Klammern (in meinem Beispiel sind sie auch).
    Es ist das Minus-Zeichen.

    Zum Ausprobieren

    Bash
    #!/bin/bash
    
    
    echo "= " ${1:=100}
    echo "- " ${1:-100}
    echo "+ " ${1:+100}

    Mal mit , mal ohne Paramter ausprobieren.

    ./test.bash ->

    ./test.bash: Zeile 3: $1: Kann so nicht zuweisen.
    - 100
    +

    ./test.bash 200 ->

    = 200
    - 200
    + 100


    Bis zum nächsten Mal

    Es gibt ja bei Linux immer die schönen ls-Befehle, lsdev, lspci etc.
    Da im Pi nicht so viel Hardware verbaut ist, gibt es davon weniger.
    Hier aber schon:
    lsusb

    unplugged:
    Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp.
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.

    Steckt irgendwas drin, ändert sich die Ausgabe (hier ein USB-Stick):
    Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp.
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
    Bus 001 Device 004: ID 13fe:5000 Kingston Technology Company Inc.

    Weitere Information gibt auch
    dmesg

    Samba funktioniert auf dem Pi problemlos.

    Außer samba musste ich etwas zusätzlich installieren (habe ich schon wieder vergessen)

    Installiert ist: samba, samba-common, samba-tools
    Der Rest kommt von alleine.

    Zum Schluss noch /etc/samba/smb.conf anpassen.

    Z.B. so:

    Es sind 3 Freigaben eingerichtet. Zugreifen kann ich mit Win XP/7/8 und Linux.

    Fast vergessen: Natürlich müssen noch user für die Freigaben eingerichtet werden.

    meinst du vielleicht

    echo ${variable:=xyz}

    Mit einer selbst definierten Variablen funktioniert das.
    Aber nicht mit den Variablen mit fester Bedeutung wie $1 etc.

    Für dein Vorhaben nimm das Beispiel von framp als Vorlage.

    Zitat


    bash Variablen muessen mit einem Alpha oder Underscore beginnen

    aber ups, im Beispiel heißen die Variablen # und 1

    ja, ich weiß

    $0 ist der Programmaufruf
    $1, $2, ... sind die Parameter 1, 2 usw.
    $# zeigt die Anzahl der Parameter an.

    Variablen sind sind nur in der shell gültig, in der sie definiert wurden. Wird die shell beendet, sind sie weg.
    Braucht man permanente Variablen, so muss man sie in Dateien schreiben und sie dann wieder auslesen.

    Entweder, du denkst dir selbst aus, wie die Dateien heißen und wo sie gespeichert sind.
    Oder du verwendest Dateien, die eh verwendet werden.

    Wenn du im script nicht sagst, welche shell du verwenden willst, dann wird die shell sh verwendet.
    Da über cron keine Login-Shell gestartet wird, funktioniert /etc/profile und ~/.profile nicht.
    -> also eigene Dateien verwenden.

    Steht in der ersten Zeile des Scriptes
    #!/bin/bash
    wird die bash-Shell verwendet. Dann wird die ~/.bashrc ausgelesen und du kannst hier Variablen setzen.
    Veränderst du aber die Werte der Variablen in deinem Script, dann nimm lieber speziell für dein Script angelegte Dateien

    Für USB-Platten ist das automatische Einbinden das Einfachste.
    Und im Sicherungsscript kann man dann ein am Ende ein umount einbauen.

    Bei NAS-Platten oder anderen Ressourcen auf anderen Rechner, muss man aber nachschauen, ob alles (noch) da ist, der Serverdienst (nfs, cifs) da ist etc.

    Das Script und die Aufgabenliste habe mal angehängt.

    In der crontab steht dann

    Code
    @reboot sleep 10;/opt/rubus-tools/heartbeat.bash > /dev/null 2>&1
    */5 * * * * /opt/rubus-tools/heartbeat.bash > /dev/null 2>&1

    Die entsprechenden Verzeichnisse zum mounten müssen vorhanden sein.
    Ich verwende das Schema
    /mnt/"Rechnername"/"Freigabename"

    Viel Spaß beim Lesen

    Aufgabenliste:

    Das script

    oder per cron-Job, der alle paar Minuten läuft.

    Ich habe mir ein script gebastelt, dass nachschaut, welches Gerät welche Ressourcen zur Verfügung stellt.
    Gegebenenfalls werden sie eingebunden, bzw. wieder ausgehängt.

    ist nichts merkwürdig.

    Nach Standard holt sich kein DNS-Server die Hostnamen von seinen Clienten, die muss man von Hand editieren.

    Die Fritzboxen (alle! - schon meine gute alte 7050 tat das) sind aber auch Router -> sie müssen sich merken, wer im Netz ist,
    damit sie deren Adresse auf die Internet-Adresse umsetzen können (die Funktion heißt dann NAT). Sonst könnte kein Gerät aus dem "Heimnetz" ins Internet.
    Diese internen Adressen nehmen sie _auch_ in die DNS-Liste auf.
    Meine Beobachtung:
    manche Betriebssysteme geben den hostname an die Fritzbox weiter und der erscheint dann korrekt in der "Heimnetz"-Liste
    (z.B. OpenSuse macht das).
    Andere BS machen das nicht, dann ist der Listenname der Box z.B. PC-00-25-22-B1-F2-60 - also PC und die MAC-Adresse der Netzwerkkarte. Wahrscheinlich hat AVM noch ein paar andere Regeln für den Namen.
    Andere Hersteller machen das ebenfalls - ich habe hier noch ein TP-Link MR3020 - da erscheinen ähnlich krude Namen.

    Aber ist doch egal. Hauptsache, es gibt schon mal eine Liste, die ich nicht selbst erstellen muss. Ein einfacher Mausklick
    und ich kann sie beliebig anpassen. Einfacher geht es nicht und es ist nur an einer Stelle im eigenen Netz.

    Da muss ich noch mal nachfragen, wie heißt die Himbeere den nun?
    raspberrypi oder RaspberryPi-192-168-178-27?

    Zur Namensliste der Fritzbox:
    Diese Namen sind die Einträge des DNS-Servers der Box.
    Dass sind die Namen, die dann die anderen Rechner auflösen können.

    Über den Befehl hostname auf dem pi bekommt man den eigenen Rechnernamen, der in der Datei /etc/hostname steht.
    Man kann zwar über DHCP den Rechnernamen ändern lassen, ist aber nicht zwingend. Wenn beide Namen unterschiedlich sind, dann kennen die anderen Rechner den "hostname" nicht.

    Manchmal (kann man irgendwo einstellen) muss man auch den vollständigen Namen verwenden (z.B. rubus.fritz.box) anstatt des kurzen (rubus). Mal testen.