如何将 No-IP 设置为适当的服务?

如何将 No-IP 设置为适当的服务?

下载中有一个示例服务 shell 脚本,但它似乎有限并且依赖于killprocUbuntu 16 LTS 上默认不存在的脚本。

答案1

Ubuntu 16 LTS 使用systemd作为初始化系统。这假设您已经下载并安装了noip2更新客户端。

  1. 创建文件/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
    
  2. 重新加载 init 守护进程:

    sudo systemctl daemon-reload
    
  3. 启用服务:

    sudo systemctl enable noip2
    
  4. 启动服务:

    sudo systemctl start noip2
    

源自本自述文件

答案2

我用的是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 点文件)
  2. 制作并安装它:(
    cd noip-x.y其中坐标是版本)
    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

欢迎反馈。

相关内容