Имя: Пароль:
IT
 
Автозагрузка в FreeBSD
0 hd1
 
18.12.08
10:36
Добрый день!
На BSD запускаю клиента(!) Openvpn с консоли:
 # openvpn "путь к конфигу"

Как это можно автоматизировать?
Чтобы после загрузки операционки само выполнялось...
1 smaharbA
 
18.12.08
10:44
много где
но есть правильное
2 ДенисЧ
 
18.12.08
10:45
(1) Снести фреебзд?
3 hd1
 
18.12.08
10:47
(1) правильное и секретное?
(2) зачем?
4 ДенисЧ
 
18.12.08
10:47
(3) Чтобы не задаваться такими вопросами :-)
5 hd1
 
18.12.08
10:50
(4) я многие вопросы уже решил, этот вопрос мне самому кажется простым, но что-то не могу отрыть нормальное описание скриптов sh, уж совсем они после венды не понятные.
6 ДенисЧ
 
18.12.08
10:51
А что, в хэндбуке это плохо расписано? 10 лет назад оно помогало :-)
7 hd1
 
18.12.08
10:52
(6) Плохо по моему, смотрел.
8 Ангел- Хоронитель
 
18.12.08
10:53
(0)/etc/init.d
9 hd1
 
18.12.08
10:56
(8) я так понимаю нужно создать скрипт my.sh, закинуть в этот каталог и он запустится?
10 smaharbA
 
18.12.08
11:27
(2) не... поставить виндуз ))
(3) создаем скрипт и в /etc/rc.conf пропишем строку
myopenvpn_enable="YES"
(примерно так)

#!/bin/sh
# /usr/local/etc/rc.d/myopenvpn - путь и имя скрипта
# myopenvpn_enable="YES"

. /etc/rc.subr

name=myopenvpn
rcvar=`set_rcvar`
start_cmd=${name}_start
stop_cmd=${name}_stop

my_start() {
   # тут команды старта
   }

my_stop() {
   # тут команды стопа
   }


load_rc_config ${name}

: ${myopenvpn_enable=NO}

run_rc_command "$1"
11 smaharbA
 
18.12.08
11:30
(8)
[ginzburg@pdc ~]$ ls /etc/init.d
ls: /etc/init.d: No such file or directory
[ginzburg@pdc ~]$

+(10) а вообщето для опенвпн есть штатный способ запуска с заданной конфигурацией
12 smaharbA
 
18.12.08
11:32
почитай коменты в скрипте
/usr/local/etc/rc.d/openvpn
13 smaharbA
 
18.12.08
11:33
(5) а ты венду попробуй сперва освоить ))
14 hd1
 
18.12.08
11:37
(10) вникаю...
(11) ... в качестве сервера
(13) сделано
15 smaharbA
 
18.12.08
11:38
(14) а я вот как то по (13) все никак не могу закончить, так не освоив на пензию и уйду наверное
16 hd1
 
18.12.08
11:45
(15) не расстраивайтесь )
Зачем знать все? Моих вендовых знаний мне обычно хватает, другое дело Unix.
17 smaharbA
 
18.12.08
12:00
так будет универсальнее

#!/bin/sh
# /usr/local/etc/rc.d/myopenvpn - путь и имя скрипта
# myopenvpn_enable="YES"

. /etc/rc.subr

name=`basename "$0" .sh`
rcvar=`set_rcvar`
start_cmd=${name}_start
stop_cmd=${name}_stop

eval "${name}_start() {
   # тут команды старта кавычки если есть в командах должны быть '
   }"

eval "${name}_stop() {
   # тут команды стопа кавычки если есть в командах должны быть '
   }"


load_rc_config ${name}

: eval "\${${name}_enable=NO}"
run_rc_command "$1"
18 hd1
 
18.12.08
12:04
(17) Что-то (10) не завелось, разбираюсь...
19 smaharbA
 
18.12.08
12:20
в (10) ошибочка, если жестко задавать все, то (10) будет так выглядеть
(да, в (17) в функциях если есть ковычки то они должны быть либо ' либо \")

#!/bin/sh
# /usr/local/etc/rc.d/myopenvpn - путь и имя скрипта
# myopenvpn_enable="YES" - это прописать в /etc/r.conf

. /etc/rc.subr

name=myopenvpn
rcvar=`set_rcvar`
start_cmd=my_start
stop_cmd=$my_stop

my_start() {
   # тут команды старта
   }

my_stop() {
   # тут команды стопа
   }


load_rc_config ${name}

: ${myopenvpn_enable=NO}

run_rc_command "$1"
20 hd1
 
18.12.08
12:27
(19) работает то что в (17) если самому выполнить
# myopenvpn start

myopenvpn_enable="yes" в rc.conf прописано, после перезагрузки скрипт не выполняется... (
21 smaharbA
 
18.12.08
12:42
добавь в начало после первой строки
# BEFORE: LOGIN
# KEYWORD: shutdown
22 hd1
 
18.12.08
12:51
(21) и это не помогло (
23 hd1
 
18.12.08
12:54
(21)набираю:
# cd /usr/local/etc/rc.d/
# sh myopenvpn start
- работает, а само никак что-то.
24 smaharbA
 
18.12.08
15:35
еще кипятишь ?
забыл я про ключевое слово ))

#!/bin/sh
#
# PROVIDE: myopenvp
#
# /usr/local/etc/rc.d/myopenvpn - путь и имя скрипта
# myopenvpn_enable="YES"

. /etc/rc.subr

case "$0" in
*/rc*)
       name=$(basename "$_file" .sh)
       ;;
*)
       name=$(basename "$0" .sh)
       ;;
esac

rcvar=`set_rcvar`
start_cmd="${name}_start"
stop_cmd="${name}_stop"

eval "${name}_start() {
   echo \"Старт ${name}...\"
   echo \"# тут команды старта \" > /tmp/start-test
   }"

eval "${name}_stop() {
   echo \"Стop ${name}...\"
   echo \"# тут команды стопа \" > /tmp/stop-test
   }"

load_rc_config ${name}

: eval "\${${name}_enable=NO}"
run_rc_command "$1"
25 hd1
 
19.12.08
06:26
(24) БОЛЬШОЕ спасибо!!!
Сделал! )
26 hd1
 
19.12.08
08:02
(24) Теперь он раньше чем надо выполнятся и секция REQUIRE: не поможет, уж слишком много туда нужно вписать. Нужно как-то сделать чтобы мой скрипт стартовал последним.
27 hd1
 
19.12.08
08:03
+ к (26) выполнение скрипта как-бы забирает под себя сеанс и пока я его не CTRL+C система не грузит остальных демонов.
28 smaharbA
 
19.12.08
09:32
(27) дай строчку соединения, а лучче приведи селиком
а так то надо в оконцовке команды & и перенаправить стдаут и стдерр в нул
29 hd1
 
19.12.08
10:26
(28) сейчас вот так:
#!/bin/sh
# PROVIDE: myopenvpn
# REQUIRE: sshd
# BEFORE: LOGIN
# KEYWORD: shutdown
# /usr/local/etc/rc.d/myopenvpn - путь и имя скрипта
# myopenvpn_enable="YES"

. /etc/rc.subr

case "$0" in
*/rc*)
       name=$(basename "$_file" .sh)
       ;;
*)
       name=$(basename "$0" .sh)
       ;;
esac

rcvar=`set_rcvar`
start_cmd="${name}_start"
stop_cmd="${name}_stop"

eval "${name}_start() {
   echo \"S_t_a_r_t ${name}...\"
   echo \"# тут команды старта \" > /tmp/start-test
   /usr/local/sbin/openvpn "/etc/openvpn/keys/client.ovpn"
   }"

eval "${name}_stop() {
   echo \"Стop ${name}...\"
   echo \"# тут команды стопа \" > /tmp/stop-test
   }"

load_rc_config ${name}

: eval "\${${name}_enable=NO}"
run_rc_command "$1"

это rd.conf myopenvpn_enable="yes" находится в самом низу
30 smaharbA
 
19.12.08
10:36

eval "${name}_start() {
  echo \"S_t_a_r_t ${name}...\"
  echo \"# тут команды старта \" > /tmp/start-test
  /usr/bin/nohup /usr/local/sbin/openvpn '/etc/openvpn/keys/client.ovpn' 2> /dev/null > /dev/nul &
# nohup не даст вылететь, а & даст висеть процессу вечно
  }"
31 hd1
 
19.12.08
10:52
(31) Сделал, теперь загрузка до конца проходит, а канала нет (
32 smaharbA
 
19.12.08
11:41
/usr/bin/nohup /usr/local/sbin/openvpn '/etc/openvpn/keys/client.ovpn' 2> /tmp/vpn.log > /tmp/vpn.err &

посмотри потом содержание этих файлов

и вопрос, при старте из шела после установки соединения openvpn остается висеть до нажатия ctrl+C или он типа демона/сервиса в памяти ?
33 hd1
 
19.12.08
11:43
(32) он остается висеть и приходится Alt+f2
34 smaharbA
 
19.12.08
11:43
ошибся еще указав /dev/nul надо /dev/null и может достаточно стдаута

/usr/bin/nohup /usr/local/sbin/openvpn '/etc/openvpn/keys/client.ovpn' > /dev/null &

ну и нохап должен присутствовать конечно
...
и еще доп вопрос - соединение надо и при разлогиненом, или достаточно при логине ?
35 hd1
 
19.12.08
11:45
(34) чтобы до авторизации работало надо
36 smaharbA
 
19.12.08
11:45
(33) т.е. он как обычная программа ?
ну тогда попробуй (34) не забудь про nohup наличие
...
и как с нохупом - ручной старт и соединение происходит ?
37 hd1
 
19.12.08
11:49
(36) не пойму там Двойка нужна ?  ("2> /tmp/...")
38 hd1
 
19.12.08
11:56
(36) Работает и не мешается! )
Не понимаю как, но работает )
39 smaharbA
 
19.12.08
11:57
(37) это чтобы вывести поток ошибок
так вывод программы направит в log.txt а вывод ошибок в err.txt
> /tmp/log.txt 2> /tmp/err.txt &
40 smaharbA
 
19.12.08
11:58
(38) а при старте нет ?
ну тогда надо добавить зависимости жесткие от демонов и сети
41 hd1
 
19.12.08
12:02
(40) я говорю все отлично заработало!
Спасибо!
42 smaharbA
 
19.12.08
12:05
навроде такого

# REQUIRE: NETWORKING SERVERS DAEMON ldconfig resolv
# BEFORE: LOGIN
43 hd1
 
19.12.08
12:09
(43) # REQUIRE: sshd  - я вот так сделал, чтобы доступ себе удаленный вперед открыть на всякий пожарный.