LINUX.ORG.RU

Помогите правильно написать скрипт

 


0

1

История такова. Есть сервак на которм крутится OVPN сервер с конфигом под tun. Появилась задача запустить второго демона OVPN, но уже с конфигом под tap. Написал скрипт start/stop.

#!/bin/sh

PATH=/opt/sbin:/opt/bin:/opt/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

ONVPN_TAP_PID=`ps | grep "openvpn --daemon --cd /opt/etc/openvpn --config openvpn-tap.conf" | awk '{print $1}' | head -1`
ONVPN_TAP_PID=${ONVPN_TAP_PID}

start() {

openvpn --daemon --cd /opt/etc/openvpn --config openvpn-tap.conf

 sleep 1
 brctl addif br0 tap0
 ifconfig tap0 up
}

stop() {
<------>
ifconfig tap0 down
brctl delif br0 tap0
kill ${ONVPN_TAP_PID}

}

restart() {
<------>stop
<------>sleep 3
<------>start
}

case "$1" in
<------>start)
<------><------>start
<------><------>;;
<------>stop)
<------><------>stop
<------><------>;;
<------>restart)
<------><------>restart
<------><------>;;
<------>link_up)
<------><------>;;
<------>ppp_up)
<------><------>;;
<------>link_down)
<------><------>;;
<------>ppp_down)
<------><------>;;
<------>*)
<------><------>echo "Usage: $0 {start|stop|restart|link_up|link_down|ppp_up|ppp_down}"
<------><------>;;
esac

С запуском все ок, а вот с остановкой возникла проблема. ТАП демона я убиваю по pid, а pid я получаю

ONVPN_TAP_PID=`ps | grep "openvpn --daemon --cd /opt/etc/openvpn --config openvpn-tap.conf" | awk '{print $1}' | head -1`
ONVPN_TAP_PID=${ONVPN_TAP_PID}
И вот тут самое интересное, если окно терминала putty «во весь экран» тогда выхлоп ps умещается «на весь экран» и pid получается верный. Если окно терминала маленькое, то выхлоп ps не умещается и я получаю не правильный pid.(выходит pid самого ps) Можно как-то поправить этот скрипт или написать другой, что б он не был привязан к размеру окна терминала?


Ответ на: комментарий от Fawkes

Спасибо большое. Все стало работать как мне и нужно.

bredis
() автор топика

И вот тут самое интересное, ....

man pgrep, не заставляй меня нецензурно выражаться в твой адрес.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.