LINUX.ORG.RU
ФорумAdmin

Помогите отредактировать bash-скрипт

 , , ,


0

3

При установке VPN-клиента добавляется init-скрипт для его запуска. Вот его код:

#!/bin/sh
### BEGIN INIT INFO
# Provides: vpnclient
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time
# Description: Enable Softether by daemon.
### END INIT INFO
DAEMON=/usr/local/vpnclient/vpnclient
LOCK=/var/lock/subsys/vpnclient
test -x $DAEMON || exit 0
case "$1" in
start)
$DAEMON start
touch $LOCK
;;
stop)
$DAEMON stop
rm $LOCK
;;
restart)
$DAEMON stop
sleep 3
$DAEMON start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0

Но при перезагрузке компьютера VPN-клиент не соединяется с сервером, потому что сбивается системное время. Приходится делать эти команды:

/etc/init.d/ntp stop
ntpdate pool.ntp.org
/etc/init.d/ntp start

и потом перезапускать VPN-клиента. Можно ли эти 3 команды как то засунуть в первый скрипт чтобы все это происходило автоматически?

Можно. Прям как есть запихай их после строки start)

zolden ★★★★★ ()

Отключи сервис, потом добавь

#
# chkconfig: - 99 01
#
перед
### BEGIN INIT INFO
затем включи обратно. После этого, vpn должен запускаться в самом конце инициализации. И, кстати, что за железо без RTC? Raspberry?

Black_Shadow ★★★★★ ()
Последнее исправление: Black_Shadow (всего исправлений: 2)
Ответ на: комментарий от Black_Shadow

И, кстати, что за железо без RTC? Raspberry?

Не факт. Как минимум это: 1. Сдохшая батарейка. 2. Дуалбут с разными настройками.

anc ★★★★★ ()

Т.е. приделать костыль вместо устранения причины?

Почитай мануал по ntpd, узнаешь как заставить его синькать время принудительно.

anonymous ()
Ответ на: комментарий от anc

Менял на ноуте батарейку, но всё равно после сна часто время в будущем. Система одна, никаких дуалбутов, и hwclock -r показывает ошибку /dev/rtc в эти моменты. А вот на данный момент время совпадает.

conformist ★★★ ()
Ответ на: комментарий от Black_Shadow

Думаете поставить его в зависимость от ntpd будет недостаточно? Надо именно в самый конец?

В Дебиане, емнип, зависимость называется просто $time.

Zmicier ★★★★★ ()

С ntpd ты будешь ждать очень долго, пока время придёт в норму. Оно двигает время по несколько секунд в час.

См ntpdate

anonymous ()
Ответ на: комментарий от Black_Shadow

В System V init нет зависимостей.

А при чем здесь System V? В сценарии, что привел ОП, зависимости, очевидно, есть.

Zmicier ★★★★★ ()
Ответ на: комментарий от Black_Shadow

И, кстати, что за железо без RTC? Raspberry?

Железо у меня на клиенте OrangePI

root@OrangePI:~# uname -a
Linux OrangePI 3.4.39 #1 SMP PREEMPT Sun Aug 30 14:14:50 CEST 2015 armv7l GNU/Linux

# # chkconfig: - 99 01 #

Я думал что если стоит знак

#
значит строка не работает :-)

pospelov ()
Ответ на: комментарий от Black_Shadow

Взял с офф. сайта скрипт для запуска сервера (в нем уже есть строка «# chkconfig: - 99 01»):

#!/bin/sh
# chkconfig: 2345 99 01
# description: SoftEther VPN Server
DAEMON=/usr/local/vpnserver/vpnserver
LOCK=/var/lock/subsys/vpnserver
test -x $DAEMON || exit 0
case "$1" in
start)
$DAEMON start
touch $LOCK
;;
stop)
$DAEMON stop
rm $LOCK
;;
restart)
$DAEMON stop
sleep 3
$DAEMON start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0

Отредактировал его под клиента (изменил слово «server» на слово «client»)? после строки «start)» добавил:

/etc/init.d/ntp stop
ntpdate pool.ntp.org
/etc/init.d/ntp start

и вот что вышло:

#!/bin/sh
# chkconfig: 2345 99 01
# description: SoftEther VPN Client
DAEMON=/usr/local/vpnclient/vpnclient
LOCK=/var/lock/subsys/vpnclient
test -x $DAEMON || exit 0
case "$1" in
start)
/etc/init.d/ntp stop
ntpdate pool.ntp.org
/etc/init.d/ntp start
$DAEMON start
touch $LOCK
;;
stop)
$DAEMON stop
rm $LOCK
;;
restart)
$DAEMON stop
sleep 3
$DAEMON start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0

Это нормальный вариант, как вы считаете?

pospelov ()
Ответ на: комментарий от Black_Shadow

тогда просто оставлю вот так:

#!/bin/sh
# chkconfig: 2345 99 01
# description: SoftEther VPN Client
DAEMON=/usr/local/vpnclient/vpnclient
LOCK=/var/lock/subsys/vpnclient
test -x $DAEMON || exit 0
case "$1" in
start)
$DAEMON start
touch $LOCK
;;
stop)
$DAEMON stop
rm $LOCK
;;
restart)
$DAEMON stop
sleep 3
$DAEMON start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0
pospelov ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.