clovesjr
(usa Slackware)
Enviado em 05/08/2009 - 10:47h
Olha só...
Testa o script abaixo...
A única coisa é que não sei como vc faz para iniciar os processos...
Me passa como vc faz para iniciar os processos que te passo onde vc tem que alterar para funcionar corretamente...
#########################################
#!/bin/sh
# Script para dar manutencao do OpenVPN
# Criado por Cloves Pereira Costa Jr
# 05/08/2009
ok="N"
processos=`ps xa | grep openvpn | grep -v grep`
parametro1="$1"
parametro2="$2"
usage_message(){
echo
echo -e "\tÉ necessário passar ao menos um parâmetro"
echo -e "\t$0 <parametro1> <parametro2>"
echo
echo -e "\t<parametro1>"
echo
echo -e "\t\tstop"
echo -e "\t\tforcestop"
echo -e "\t\tstart"
echo -e "\t\trestart"
echo
echo -e "\t<parametro2>"
echo
echo -e "\t\tparana"
echo -e "\t\triodejaneiro"
echo -e "\t\tminasgerais"
echo -e "\t\tmatogrosso"
echo
}
pega_pids_global(){
PIDS=`$processos | awk '{print $1}'`
}
pega_pid(){
PID=`$processos | grep $1 | grep -v grep | awk '{print $1}'`
}
do_stop(){
# verifica se foi passado algum parametro
if [ -z $1 ]; then
# se nao foi passado, para todos os processos
for pid in ${PIDS}
do
kill ${pid}
done
else
# se foi passado, para o processo do parametro enviado
pega_pid $1
kill $PID
fi
}
do_forcestop(){
# verifica se foi passado algum parametro
if [ -z $1 ]; then
# se nao foi passado, para todos os processos
for pid in ${PIDS}
do
kill -9 ${pid}
done
else
# se foi passado, para o processo do parametro enviado
pega_pid $1
kill -9 $PID
fi
}
do_start(){
# verifica se foi passado algum parametro
if [ -z $1 ]; then
# se nao foi passado, inicia todos os processos
<comando_start>
else
# se foi passado, inicia o processo do parametro enviado
<comando_start>
fi
}
verifica_parametro2(){
case $parametro2 in
"parana")
ok="S"
;;
"riodejaneiro")
ok="S"
;;
"minasgerais")
ok="S"
;;
"matogrosso")
ok="S"
;;
*)
ok="N"
;;
esac
}
# verifica se foi passado o primeiro parametro
if [ -z $parametro1 ]; then
# se não foi passado, mostra a mensagem de uso do programa
usage_message
exit 0
else
# verifica se foi passado o segundo parametro
if [ -z $parametro2 ]; then
# se não foi passado, age como comando global valendo para todos os servicos abertos
pega_pids_global
case "$parametro1" in
"stop")
do_stop
;;
"forcestop")
do_forcestop
;;
"start")
do_start
;;
"restart")
do_stop
do_start
;;
*)
usage_message
exit 0
;;
esac
else
# se foi passado, age baseado no segundo parametro
verifica_parametro2
if [ $ok == "S" ]; then
case "$parametro1" in
"stop")
do_stop $parametro2
;;
"forcestop")
do_forcestop $parametro2
;;
"start")
do_start $parametro2
;;
"restart")
do_stop $parametro2
do_start $parametro2
;;
*)
usage_message
exit 0
;;
esac
else
usage_message
exit 0
fi
fi
fi
#########################################