Как настроить No-IP как надлежащую услугу?

В загрузке есть пример сценария оболочки службы, но он кажется ограниченным и полагается на killproc, который по умолчанию не существует на Ubuntu 16 LTS.

0
задан 11 April 2017 в 07:14

7 ответов

Ubuntu 16 LTS использует systemd в качестве системы init. Предполагается, что вы уже загрузили & amp; установил клиент обновления noip2.

Создайте файл /etc/systemd/system/noip2.service следующим образом: [Unit] Description=No-Ip Dynamic DNS Update Service After=network.target [Service] Type=forking ExecStart=/usr/local/bin/noip2 [Install] WantedBy=multi-user.target Перезапустите демон init: sudo systemctl daemon-reload Включите службу: sudo systemctl enable noip2 Запустите службу: sudo systemctl start noip2 [ ! d1]

Получено из этого readme

2
ответ дан 18 July 2018 в 15:12

Я использовал руководство sysvinit от Jonas Friedmann.

Загрузите и разблокируйте No-IP DUC: wget https://www.noip.com/client/linux/noip-duc-linux.tar.gz tar -xf noip-duc-linux.tar.gz --exclude='._*' (исключая Mac dotfiles) Сделайте и установите его: cd noip-x.y ( где xy - версия) make (ошибки здесь могут означать, что вам не хватает пакетов компиляции) sudo make install Создайте файл /etc/init.d/noip с этим содержимым: #!/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 (я использовал sudo vim /etc/init.d/noip.) Сделайте его исполняемым: sudo chmod a+x /etc/init.d/noip Включить его: sudo update-rc.d noip defaults Настроить его: sudo service noip configure Запустить его: sudo service noip start Проверить: sudo service noip status

Обратная связь приветствуется.

2
ответ дан 18 July 2018 в 15:12

Ubuntu 16 LTS использует systemd в качестве системы init. Предполагается, что вы уже загрузили & amp; установил клиент обновления noip2.

Создайте файл /etc/systemd/system/noip2.service следующим образом: [Unit] Description=No-Ip Dynamic DNS Update Service After=network.target [Service] Type=forking ExecStart=/usr/local/bin/noip2 [Install] WantedBy=multi-user.target Перезапустите демон init: sudo systemctl daemon-reload Включите службу: sudo systemctl enable noip2 Запустите службу: sudo systemctl start noip2 [ ! d1]

Получено из этого readme

2
ответ дан 24 July 2018 в 20:34

Я использовал руководство sysvinit от Jonas Friedmann.

Загрузите и разблокируйте No-IP DUC: wget https://www.noip.com/client/linux/noip-duc-linux.tar.gz tar -xf noip-duc-linux.tar.gz --exclude='._*' (исключая Mac dotfiles) Сделайте и установите его: cd noip-x.y ( где xy - версия) make (ошибки здесь могут означать, что вам не хватает пакетов компиляции) sudo make install Создайте файл /etc/init.d/noip с этим содержимым: #!/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 (я использовал sudo vim /etc/init.d/noip.) Сделайте его исполняемым: sudo chmod a+x /etc/init.d/noip Включить его: sudo update-rc.d noip defaults Настроить его: sudo service noip configure Запустить его: sudo service noip start Проверить: sudo service noip status

Обратная связь приветствуется.

2
ответ дан 24 July 2018 в 20:34
  • 1
    Для записи я должен был сделать это как сервис systemd . – Walf 19 July 2017 в 02:34

Ubuntu 16 LTS использует systemd в качестве системы init. Предполагается, что вы уже загрузили & amp; установил клиент обновления noip2.

Создайте файл /etc/systemd/system/noip2.service следующим образом: [Unit] Description=No-Ip Dynamic DNS Update Service After=network.target [Service] Type=forking ExecStart=/usr/local/bin/noip2 [Install] WantedBy=multi-user.target Перезапустите демон init: sudo systemctl daemon-reload Включите службу: sudo systemctl enable noip2 Запустите службу: sudo systemctl start noip2 [ ! d1]

Получено из этого readme

2
ответ дан 31 July 2018 в 23:36

Я использовал руководство sysvinit от Jonas Friedmann.

Загрузите и разблокируйте No-IP DUC: wget https://www.noip.com/client/linux/noip-duc-linux.tar.gz tar -xf noip-duc-linux.tar.gz --exclude='._*' (исключая Mac dotfiles) Сделайте и установите его: cd noip-x.y ( где xy - версия) make (ошибки здесь могут означать, что вам не хватает пакетов компиляции) sudo make install Создайте файл /etc/init.d/noip с этим содержимым: #!/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 (я использовал sudo vim /etc/init.d/noip.) Сделайте его исполняемым: sudo chmod a+x /etc/init.d/noip Включить его: sudo update-rc.d noip defaults Настроить его: sudo service noip configure Запустить его: sudo service noip start Проверить: sudo service noip status

Обратная связь приветствуется.

2
ответ дан 31 July 2018 в 23:36
  • 1
    Для записи, я должен был сделать это как systemd в[!обслуживание н0]. – Walf 19 July 2017 в 02:34

Я использовал руководство sysvinit от Jonas Friedmann .

  1. Загрузите и разблокируйте No-IP DUC: wget https://www.noip.com/client/linux/noip-duc-linux.tar.gz tar -xf noip-duc-linux.tar.gz --exclude='._*' (исключая Mac dotfiles )
  2. Создайте и установите: cd noip-x.y (где xy - версия) make (ошибки здесь могут означать, что вам не хватает пакетов компиляции) sudo make install
  3. Создайте файл /etc/init.d/noip с этим содержимым:
    #!/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
    
    (я использовал sudo vim /etc/init.d/noip.)
  4. Сделайте его исполняемым: sudo chmod a+x /etc/init.d/noip
  5. Включите его: sudo update-rc.d noip defaults
  6. Настроить его: sudo service noip configure
  7. Запустить его: sudo service noip start
  8. Проверить: sudo service noip status

Обратная связь приветствуется.

2
ответ дан 2 August 2018 в 18:33

Другие вопросы по тегам:

Похожие вопросы: