Como configuro o No-IP como um serviço adequado?

0

Existe um script de shell de serviço de exemplo no download, mas parece limitado e depende de killproc , que não existe por padrão no Ubuntu 16 LTS.

    
por Walf 11.04.2017 / 06:14

2 respostas

2

Eu usei o sysvinit guia de Jonas Friedmann .

  1. Faça o download e descompacte o DUC No-IP:
    wget https://www.noip.com/client/linux/noip-duc-linux.tar.gz e tar -xf noip-duc-linux.tar.gz --exclude='._*' (exclui dotfiles do Mac)
  2. Crie e instale:
    cd noip-x.y (onde xy é a versão)
    make (erros aqui podem significar que você está perdendo pacotes de compilação)
    sudo make install
  3. Crie o arquivo /etc/init.d/noip com estes conteúdos:

    #!/bin/sh
    
    ### BEGIN INIT INFO
    # Provides:          noip
    # Required-Start:    $local_fs $network $syslog
    # Required-Stop:     $local_fs $network $syslog
    # Default-Start:     2 3 4 5
    # Default-Stop:      0 1 6
    # Short-Description: no-ip DUC
    # Description:       Update DNS for dynamic IP on noip.com
    ### END INIT INFO
    
    NAME="noip"
    PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin"
    APPDIR="/"
    APPBIN="/usr/local/bin/noip2"
    PIDFILE="/var/run/${NAME}-customservice.pid"
    
    # Include functions 
    set -e
    . /lib/lsb/init-functions
    
    start() {
        printf "Starting '$NAME'... "
        start-stop-daemon --start --background --make-pidfile --pidfile "$PIDFILE" --chdir "$APPDIR" --exec "$APPBIN" || true
        printf "done\n"
    }
    
    #We need this function to ensure the whole process tree will be killed
    killtree() {
        local _pid=$1
        local _sig=${2-TERM}
        for _child in $(ps -o pid --no-headers --ppid ${_pid}); do
            killtree ${_child} ${_sig}
        done
        kill -${_sig} ${_pid}
    }
    
    stop() {
        printf "Stopping '$NAME'... "
        [ -z 'cat "$PIDFILE" 2>/dev/null' ] || \
            while test -d /proc/$(cat "$PIDFILE"); do
                killtree $(cat "$PIDFILE") 15
                sleep 0.5
            done 
        [ -z 'cat "$PIDFILE" 2>/dev/null' ] || rm "$PIDFILE"
        printf "done\n"
    }
    
    status() {
        "$APPBIN" -S
    }
    
    configure() {
        "$APPBIN" -C
    }
    
    case "$1" in
        start)
            start
            ;;
        stop)
            stop
            ;;
        restart)
            stop
            start
            ;;
        status)
            status
            ;;
        configure)
            configure
            ;;
        *)
            echo "Usage: $NAME {start|stop|restart|status|configure}" >&2
            exit 1
            ;;
    esac
    
    exit 0
    

    (usei sudo vim /etc/init.d/noip .)

  4. Torne-o executável:
    sudo chmod a+x /etc/init.d/noip
  5. Ativar: sudo update-rc.d noip defaults
  6. Configure: sudo service noip configure
  7. Iniciar: sudo service noip start
  8. Verifique: sudo service noip status

O feedback é bem-vindo.

    
por Walf 11.04.2017 / 06:14
2

O Ubuntu 16 LTS usa systemd como o sistema init. Isso pressupõe que você já fez o download do & amp; instalou o cliente noip2 update.

  1. Crie o arquivo /etc/systemd/system/noip2.service da seguinte forma:

    [Unit]
    Description=No-Ip Dynamic DNS Update Service
    After=network.target
    
    [Service]
    Type=forking
    ExecStart=/usr/local/bin/noip2
    
    [Install]
    WantedBy=multi-user.target
    
  2. Recarregue o daemon de inicialização:

    sudo systemctl daemon-reload
    
  3. Ativar o serviço:

    sudo systemctl enable noip2
    
  4. Iniciar o serviço:

    sudo systemctl start noip2
    

Derivado de este leiame

    
por mrtumnus 12.03.2018 / 15:59