cron / expect script / без завершения процесса

У вас сложности? Наши специалисты постараются помочь вам. Если вы сами сталкивались с похожими проблемами - поделитесь опытом.

Модераторы: Trinity admin`s, Free-lance moderator`s

Ответить
Anita
Junior member
Сообщения: 17
Зарегистрирован: 21 ноя 2003, 17:17
Контактная информация:

cron / expect script / без завершения процесса

Сообщение Anita » 15 сен 2004, 12:08

Привет всем!

есть cisco vpnclient заходит к удаленному серверу по ipsec, локально сам поднимает модули которые нужны для работы и та та та.

задача - исключить участие рута в установлении и поддержки коннекта в ручную.

с консоли запускается с нужными параметрами = можно заранее ввести
логин/пароль- но при установлении коннекта удаленный сервер просит
подтвердить желание устанавливать коннект.

кроме того отваливается по таймауту, который нигде в свойствах локально не конфигурируется. т.е. отваливает сервер.

чтобы исключить рута из этих действий пишем скрипт (script.anita)
___________________________-
#!/usr/bin/expect -f

set force_conservative 0

if {$force_conservative} {
set send_slow {1 .1}
proc send {ignore arg} {
sleep .1
exp_send -s -- $arg
}
}

spawn "/bin/bash"
send "vpnclient connect Amanda_VPN user LoGiN pwd PaSsWoRd nocertpwd\r"
expect -exact "Do you wish to continue? (y/n): "
send -- "y\r"
expect -exact "Local LAN Access is disabled\r"
send \032
send "bg\r"
interact
-----------------

запускаем. expect отвечает "у" в каком нужно месте. скрипт переводит процесс в background. что можно увидеть после набора jobs.

теперь пробую сделать это так, чтобы в случае обвала коннекта (по тайм ауту или какой то другой причине) все поднялось без присутствия админа - автоматом.

пишу crontab : 0-59/2 * * * * /home/anita/croncisco
______________________
#!/bin/bash
SHELL=/bin/bash
TERM=xterm
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
if [ ! -f /var/run/cvpnd.pid ]; then
expect -f /home/anita/script.anita
fi
--------------

и крон действительно присылает мне лог на mail что все сработало - я вижу что он создал консоль - там отработал - выдал "y" - и даже в background перевел. вот этот е-мейл
___________________________
spawn /bin/bash
vpnclient connect Amanda_VPN user LoGiN pwd PaSsWoRd nocertpwd
]0;@mail:~[root@mail root]# vpnclient connect Amanda_VPN user LoGiN pwd
PaSsWoRd nocertpwd
Cisco Systems VPN Client Version 3.7.2 (Rel)
Copyright (C) 1998-2002 Cisco Systems, Inc. All Rights Reserved.
Client Type(s): Linux
Running on: Linux 2.4.20-Anita3 #12 Mon Aug 9 13:58:53 MSD 2004 i586

WARNING:
Using the "pwd" option may allow other users
on this computer to see your password.

Initializing the IPSec link.
Initiating TCP to vpn_server_ip, port 10000
Contacting the gateway at vpn_server_ip
Authenticating user.
Negotiating security policies.
Securing communication channel.
Hello Amanda User
Do you wish to continue? (y/n): y

Your link is secure.

IPSec tunnel information.
Client address: 10.254.142.186
Server address: vpn_server_ip
Encryption: 168-bit 3-DES
Authentication: HMAC-MD5
IP Compression: None
NAT passthrough is active on port TCP 10000
Local LAN Access is disabled


[1]+ Stopped vpnclient connect Amanda_VPN user LoGiN pwd
PaSsWoRd nocertpwd
]0;@mail:~bg
[root@mail root]# bg
[1]+ vpnclient connect Amanda_VPN user LoGiN pwd PaSsWoRd nocertpwd &
]0;@mail:~

--------------------


но! крон закрывает задачу - и вместе с ней ее background.
и таким образом коннект убивается.

что делать?
может есть другие решения?

Аватара пользователя
art
free-lance moderator
Сообщения: 653
Зарегистрирован: 15 май 2003, 11:25
Откуда: SPb

Сообщение art » 17 сен 2004, 18:17

а если к строке в Cron в конец & добавить?

Ответить

Вернуться в «Серверы - Решение проблем»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 24 гостя