[Howto] Hosts-Datei bootfest machen

  • [NAS Typ:] Typ unabhängig
    [Firmware:] Firmware unabhängig
    [Getestet:] ja
    [Sonstige Modifikationen:] Bearbeitung der crontab


    Die geänderte hosts-Datei in einen Ordner kopieren, zB: /share/HDA_DATA/Config
    Beispiel-hosts:

    Code
    1. 127.0.0.1 localhost localhost
    2. 192.168.x.2 myNAS myNAS
    3. 192.168.x.1 myRouter myRouter


    Dort wird zusätzlich eine Datei "hosts.sh" mit folgendem Inhalt erstellt:

    Code
    1. if [ x"`/bin/cat /etc/hosts | /bin/grep myRouter`" = x ]; then
    2. cp /share/HDA_DATA/Config/hosts /etc/
    3. fi


    "myRouter" ist ein Platzhalter für einen Eintrag in der hosts-Datei, die überprüfbar ist.


    Dazu fehlt dann noch ein Eintrag in der crontab, damit dieses Script regelmäßig aufgerufen wird:

    Code
    1. */6 * * * * /share/HDA_DATA/Config/hosts.sh


    Mit "*/6" wird angewiesen, alle 10 Minuten die hosts zu überprüfen.


    Wenn man nun die "/etc/config/crontab" mit diesem Eintrag erweitert wurde, einmal

    Code
    1. crontab /etc/config/crontab

    aufrufen, um die crontab über die Änderung zu informieren/die Datei neu einzulesen.

  • Dazu habe ich eine Frage ...


    Mein Qnap ist auch über einen VPN Tunnel mit einer festen IP4 zu erreichen.
    Kann ich die IP4 in die HOSTS-Datei mit einbinden (Hostname-Mailserver)?


    Code
    1. 127.0.0.1 localhost localhost
    2. 192.168.178.31 Qnap-Host Qnap-Host
    3. 192.168.1.34 Qnap-Host Qnap-Host
    4. 188.246.XX.X mailserver.irgendwas.de
  • Hallo


    Ich bekomme einen error ven das script ausgefürt wird:


    Code
    1. if [ x"`/bin/cat /etc/hosts | /bin/grep myRouter`" = x ]; then cp /share/CACHEDEV1_DATA/Config/hosts /etc/fi
    2. /share/CACHEDEV1_DATA/Config/hosts.sh: line 2: syntax error: unexpected end of file


    Model: TS-453Be

    Firmware version: 4.5.1.1480

  • Kann zwar nicht mit Details dienen, aber ich denke es hat sich seit dem Thread vor über 10 Jahren doch einiges getan...

  • Wen ich das neue scrip teste im terminal bekome ich diesen fähler


    Code
    1. if [ x"`/bin/cat /etc/hosts | /bin/grep myRouter`" = x ]; then
    2. cp /share/CACHEDEV1_DATA/Config/hosts /etc/
    3. fi
    4. bash -n /share/CACHEDEV1_DATA/Config/hosts.sh
    5. /share/CACHEDEV1_DATA/Config/hosts.sh: line 3: syntax error near unexpected token `fi'
    6. /share/CACHEDEV1_DATA/Config/hosts.sh: line 3: `fi'

    edit:


    habe im internet die ursache gefunden , jetzt ohne error


    Code
    1. https://stackoverflow.com/questions/20586785/syntax-error-near-unexpected-token-fi
    2. if [ x"`/bin/cat /etc/hosts | /bin/grep myRouter`" = x ];
    3. then
    4. cp /share/CACHEDEV1_DATA/Config/hosts /etc/
    5. fi

    Einmal editiert, zuletzt von neto_pir ()

  • Erste Zeile: Kein Semikolon nach der eckigen Klammer, then in die nächste Zeile (Zeilenumbruch einfügen). Die Shell ist da recht pingelig.

    Kann zwar nicht mit Details dienen, aber ich denke es hat sich seit dem Thread vor über 10 Jahren doch einiges getan...

    In der Tat. Die Sache mit dem cron ist Unsinn. Man sollte da über autorun.sh gehen. Die hosts wird einmal beim Systemstart neu aufgebaut. Wird diese in autorun.sh durch eine eigene Datei ersetzt, bleibt die eigene bis zum nächsten Reboot.

  • Die Shell ist da recht pingelig.

    Nun wissen wir endlich, warum die FW der NAS solche Probleme macht. In dieser sind nämlich nahezu 100% der if-then-Statements nach dem Schema if [ ... ]; then aufgebaut.;)