Как настроить 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.gz
tar -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
Обратная связь приветствуется.