Script de controle do Alfresco para RHEL / CentOS / Fedora

Publicado por Davidson Rodrigues Paulo (última atualização em 21/09/2009)

[ Hits: 8.249 ]

Homepage: http://davidsonpaulo.com/

Download alfresco




Script de controle do Alfresco para ser usado no RHEL, CentOS e Fedora. Pode ser usado para iniciar, reiniciar e verificar o status do processo Alfresco.

O script considera que o Alfresco está instalado em /opt/alfresco.

Salve o arquivo em /etc/init.d/alfresco e execute o comando:

# chkconfig --add alfresco

e então você poderá gerenciar o serviço do Alfresco da mesma forma que os demais serviços que ficam /etc/init.d.

  



Esconder código-fonte

#!/bin/bash
#
# alfresco   This shell script takes care of starting and stopping
#      the Alfresco Enterprise Content Management system
#
# Author: Davidson Paulo <davidsonpaulo@gmail.com>
# License: GNU GPL v3+
#
# chkconfig: 345 99 00
# description:   Alfresco ECM
# processname: alfresco

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

user="alfresco"
prog="Alfresco"
pidfile="/var/run/${prog}.pid"

testport() {
   telnet -e B localhost 8080 > /dev/null 2>&1  << EOF
B
quit
EOF
   return $?
}

testsite() {
   wget --timeout=10 --tries=30 -O - http://127.0.0.1:8080/alfresco > /dev/null 2>&1
   return $?
}

start(){
   echo -n $"Starting $prog: "
   su - $user -c "./alf_start.sh" > /dev/null 2>&1
   sleep 3

   if ! testport ; then
      failure ; echo
      return 1
   else
      pid="$( netstat -ltnp | fgrep ":8080" | awk '{ print $7 }' | cut -d/ -f1 )"
      success ; echo
      echo $pid > $pidfile
                prog="Alfresco Web Framework"
      echo -n $"Starting $prog: "
      if ! testsite ; then
         failure ; echo
      else
         success ; echo
      fi
   fi
}

stop(){
        if [ -f $pidfile ] ; then
     pid="$( cat $pidfile )"
        else
     pid="$( netstat -ltnp | fgrep ":8080" | awk '{ print $7 }' | cut -d/ -f1 )"
        fi

        echo -n $"Stopping $prog: "
   su - $user -c "./alf_stop.sh" > /dev/null 2>&1

   if ! testsite && ! testport ; then
      for i in $( seq 1 10 ) ; do
         if [ -n "$( ps ax | awk '$1 == '$pid' { print $1 }' )" ] ; then
            kill $pid
            sleep 1
         else
            success ; echo
            rm -f $pidfile
                                return 0
         fi
      done

      failure ; echo
   else
      failure ; echo
   fi
}
 
restart(){
    stop
    start
}

status(){
   base="$prog"
   if [ -f $pidfile ] ; then
     pid="$( netstat -ltnp |
             awk '$4 ~ /^.*:8080$/ && $7 ~ /'$( cat $pidfile )'\/java/ { print $7 }' |
             cut -d/ -f1 )"
   else
     pid="$( netstat -ltnp | awk '$4 ~ /^.*:8080$/ { print $7 }' |
             cut -d/ -f1 )"
   fi

   if [ -n "$pid" ] ; then
     echo $"${base} (pid $pid) is running..."
   else
     echo $"${base} is stopped"
   fi

   ports="$( netstat -lnp | fgrep $pid/java | awk '{ print $4 }' | rev | cut -d: -f1 | rev )"
   cifsports=( 139/tcp 445/tcp 137/udp )
   vtiport="7070/tcp"

   # Check CIFS status
   base="$prog CIFS server"
   CIFS=""
   c=0
   for (( i=0 ; i<${#cifsports[@]} ; i++ )) ; do
     port=${cifsports[$i]}
     proto=${port#*/}
     number=${port%/*}
     frwrule="$( iptables-save | fgrep REDIRECT |
                 fgrep -- "-p $proto" | fgrep -- "--dport $number " )"
     if [ -n "$frwrule" ] ; then
       dport=$( echo "$frwrule" | sed -r 's/.*--to-ports ([^ ]*)/\1/' )
     else
       dport=$number
     fi    

     while read line ; do
       if [ $line -eq $dport ] ; then
         lport=$line
         break
       else
         lport=""
       fi
     done < <( netstat -lnp | awk '$1 == "'$proto'"  { print $4 }' |
               rev | cut -d: -f1 | rev )

     if [ -n "$lport" ] ; then
       CIFS[$c]="$lport"
       (( c++ ))
     fi
   done

   if [ ${#CIFS[@]} -gt 0 ] ; then
     if [ ${#CIFS[@]} -eq ${#cifsports[@]} ] ; then
       echo $"${base} (pid $pid) is running..."
     else
       echo $"${base} is stopped"
     fi
   else
     echo $"${base} is stopped"
   fi

   # Check VTI status
   base="$prog VTI server"
   proto=${vtiport#*/}
   number=${vtiport%/*}

   while read line ; do
     if [ $line -eq $number ] ; then
       lport=$line
       break
     else
       lport=""
     fi
   done < <( netstat -lnp | awk '$1 == "'$proto'"  { print $4 }' |
             rev | cut -d: -f1 | rev ) 

   if [ -n "$lport" ] ; then
     echo $"${base} (pid $pid) is running..."
   else
     echo $"${base} is stopped"
   fi
}

# See how we were called.
case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  status)
    status
    ;;
  restart)
    restart
    ;;
  *)
    echo $"Usage: $0 {start|stop|restart|status}"
    exit 1
esac

exit $?

Scripts recomendados

MySamba Server 0.1

Script para Newsletters

Desligar máquinas virtuais Xen

Backup Automatizado

Conversor de log SVN para RSS


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts