Как настроить No-IP в качестве надлежащей услуги?
В загрузке приведен пример сценария оболочки службы, но он кажется ограниченным и зависит от killproc который не существует по умолчанию в Ubuntu 16 LTS.
2 ответа
Ubuntu 16 LTS использует systemd как система инициализации. Это предполагает, что вы уже загрузили и установили 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
Получено из этого файла
Я использовал sysvinit гид от Йонаса Фридмана.
- Загрузите и распакуйте DUC без IP:
wget https://www.noip.com/client/linux/noip-duc-linux.tar.gztar -xf noip-duc-linux.tar.gz --exclude='._*'(исключая точечные файлы Mac) - Сделайте и установите его:
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
Обратная связь приветствуется.