[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
    127.0.0.1         localhost               localhost
    192.168.x.2    myNAS    myNAS
    192.168.x.1    myRouter  myRouter


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

    Code
    if [ x"`/bin/cat /etc/hosts | /bin/grep myRouter`" = x ]; then
      cp /share/HDA_DATA/Config/hosts /etc/
    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
    */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
    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
    127.0.0.1 localhost       localhost
    192.168.178.31	Qnap-Host 	Qnap-Host
    192.168.1.34	Qnap-Host 	Qnap-Host
    188.246.XX.X    mailserver.irgendwas.de
  • Hallo


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


    Code
    if [ x"`/bin/cat /etc/hosts | /bin/grep myRouter`" = x ]; then cp /share/CACHEDEV1_DATA/Config/hosts /etc/fi
    
    
    /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
    if [ x"`/bin/cat /etc/hosts | /bin/grep myRouter`" = x ]; then
      cp /share/CACHEDEV1_DATA/Config/hosts /etc/
    fi
    
    bash -n /share/CACHEDEV1_DATA/Config/hosts.sh
    /share/CACHEDEV1_DATA/Config/hosts.sh: line 3: syntax error near unexpected token `fi'
    /share/CACHEDEV1_DATA/Config/hosts.sh: line 3: `fi'

    edit:


    habe im internet die ursache gefunden , jetzt ohne error


    Code
    https://stackoverflow.com/questions/20586785/syntax-error-near-unexpected-token-fi
    
    if [ x"`/bin/cat /etc/hosts | /bin/grep myRouter`" = x ]; 
    then
      cp /share/CACHEDEV1_DATA/Config/hosts /etc/
    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.