BandaAncha.eu

Comunidad de usuarios
de fibra, móvil y ADSL

[SOLVED]Problema con scripts e interprete..

vukits

Tengo Centos 5 .. y tengo un script de bash ... (es de openvpn,..) que si lo invoco con 'bash miscript', se ejecuta bien y sale bien... pero si lo invoco por su nombre. se ejecuta bien pero sale con error ..

¿algna sugerencia?

#!/bin/bash
#
# openvpn       This shell script takes care of starting and stopping
#               openvpn on RedHat or other chkconfig-based system.
#
# chkconfig: - 24 76
#
# processname: openvpn
# description: OpenVPN is a robust and highly flexible tunneling \
#              application that uses all of the encryption, \
#              authentication, and certification features of the OpenSSL \
#              library to securely tunnel IP networks over a single UDP \
#              port.
#

### BEGIN INIT INFO
# Provides: openvpn
# Required-Start: $network
# Required-Stop: $network
# Short-Description: start and stop openvpn
# Description: OpenVPN is a robust and highly flexible tunneling \
#              application that uses all of the encryption, \
#              authentication, and certification features of the OpenSSL \
#              library to securely tunnel IP networks over a single UDP \
#              port.
### END INIT INFO

# Contributed to the OpenVPN project by
# Douglas Keller
# 2002.05.15

# To install:
#   copy this file to /etc/rc.d/init.d/openvpn
#   shell> chkconfig --add openvpn
#   shell> mkdir /etc/openvpn
#   make .conf or .sh files in /etc/openvpn (see below)

# To uninstall:
#   run: chkconfig --del openvpn

# Author's Notes:
#
# I have created an /etc/init.d init script and enhanced openvpn.spec to
# automatically register the init script.  Once the RPM is installed you
# can start and stop OpenVPN with "service openvpn start" and "service
# openvpn stop".
#
# The init script does the following:
#
# - Starts an openvpn process for each .conf file it finds in
#   /etc/openvpn.
#
# - If /etc/openvpn/xxx.sh exists for a xxx.conf file then it executes
#   it before starting openvpn (useful for doing openvpn --mktun...).
#
# - In addition to start/stop you can do:
#
#   service openvpn reload - SIGHUP
#   service openvpn reopen - SIGUSR1
#   service openvpn status - SIGUSR2
#
# Modifications:
#
# 2003.05.02
#   * Changed == to = for sh compliance (Bishop Clark).
#   * If condrestart|reload|reopen|status, check that we were
#     actually started (James Yonan).
#   * Added lock, piddir, and work variables (James Yonan).
#   * If start is attempted twice, without an intervening stop, or
#     if start is attempted when previous start was not properly
#     shut down, then kill any previously started processes, before
#     commencing new start operation (James Yonan).
#   * Do a better job of flagging errors on start, and properly
#     returning success or failure status to caller (James Yonan).
#
# 2005.04.04
#   * Added openvpn-startup and openvpn-shutdown script calls
#     (James Yonan).
#

# Location of openvpn binary
openvpn=""
openvpn_locations="/usr/sbin/openvpn /usr/local/sbin/openvpn"
for location in $openvpn_locations
do
  if [ -f "$location" ]
  then
    openvpn=$location
  fi
done

# Lockfile
lock="/var/lock/subsys/openvpn"

# PID directory
piddir="/var/run/openvpn"

# Our working directory
work=/etc/openvpn

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

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

# Check that networking is up.
if [ ${NETWORKING} = "no" ]
then
  echo "Networking is down"
  exit 0
fi

# Check that binary exists
if ! [ -f  $openvpn ]
then
  echo "openvpn binary not found"
  exit 0
fi

# See how we were called.
case "$1" in
  start)
       echo -n $"Starting openvpn: "

 /sbin/modprobe tun >/dev/null 2>&1

    # From a security perspective, I think it makes
    # sense to remove this, and have users who need
    # it explictly enable in their --up scripts or
     # firewall setups.

    #echo 1 > /proc/sys/net/ipv4/ip_forward

       # Run startup script, if defined
   if [ -f $work/openvpn-startup ]; then
          $work/openvpn-startup
  fi

    if [ ! -d  $piddir ]; then
     mkdir $piddir
  fi

    if [ -f $lock ]; then
          # we were not shut down correctly
          for pidf in `/bin/ls $piddir/*.pid 2>/dev/null`; do
          if [ -s $pidf ]; then
                kill `cat $pidf` >/dev/null 2>&1
         fi
         rm -f $pidf
      done
       rm -f $lock
        sleep 2
        fi

    rm -f $piddir/*.pid
        cd $work

      # Start every .conf in $work and run .sh if exists
 errors=0
   successes=0
        for c in `/bin/ls *.conf 2>/dev/null`; do
      bn=${c%%.conf}
     if [ -f "$bn.sh" ]; then
               . ./$bn.sh
     fi
         rm -f $piddir/$bn.pid
            # Handle backward compatibility, see Red Hat Bugzilla ID #458594
            script_security=''
            if [ -z "$( grep '^[[:space:]]*script-security[[:space:]]' $c )" ]; then
                script_security="--script-security 2"
            fi
            $openvpn --daemon --writepid $piddir/$bn.pid --config $c --cd $work $script_security
       if [ $? = 0 ]; then
            successes=1
            else
           errors=1
       fi
     done

  if [ $errors = 1 ]; then
       failure; echo
  else
           success; echo
  fi

    if [ $successes = 1 ]; then
            touch $lock
    fi
 ;;
  stop)
     echo -n $"Shutting down openvpn: "
 for pidf in `/bin/ls $piddir/*.pid 2>/dev/null`; do
          if [ -s $pidf ]; then
        kill `cat $pidf` >/dev/null 2>&1
         fi
         rm -f $pidf
      done

  # Run shutdown script, if defined
  if [ -f $work/openvpn-shutdown ]; then
         $work/openvpn-shutdown
 fi

    success; echo
      rm -f $lock
        ;;
  restart)
  $0 stop
    sleep 2
    $0 start
   ;;
  reload)
   if [ -f $lock ]; then
          for pidf in `/bin/ls $piddir/*.pid 2>/dev/null`; do
            if [ -s $pidf ]; then
                  kill -HUP `cat $pidf` >/dev/null 2>&1
          fi
     done
   else
           echo "openvpn: service not started"
        exit 1
 fi
 ;;
  reopen)
   if [ -f $lock ]; then
          for pidf in `/bin/ls $piddir/*.pid 2>/dev/null`; do
            if [ -s $pidf ]; then
                  kill -USR1 `cat $pidf` >/dev/null 2>&1
         fi
     done
   else
           echo "openvpn: service not started"
        exit 1
 fi
 ;;
  condrestart)
      if [ -f $lock ]; then
          $0 stop
            # avoid race
       sleep 2
            $0 start
       fi
 ;;
  status)
   if [ -f $lock ]; then
          for pidf in `/bin/ls $piddir/*.pid 2>/dev/null`; do
            if [ -s $pidf ]; then
                  kill -USR2 `cat $pidf` >/dev/null 2>&1
         fi
     done
       echo "Status written to /var/log/messages"
     else
           echo "openvpn: service not started"
        exit 1
 fi
        ;;
  *)
 echo "Usage: openvpn {start|stop|restart|condrestart|reload|reopen|status}"
        exit 1
     ;;
esac
exit 0
anthrax

¿ Qué error te da ?

🗨️ 4
vukits

es que para obtener una traza, debo ejecutarlo con 'bash -x' .. pero claro, si lo ejecuto con 'bash' , pues funciona :P

..

nada, lo voy a invocar con bash y punto pelota (un feo hack al estilo Debian)..

saludos

vukits

problema solucionado... las rutas de centos hay que ponerlas absolutas.. y me da pereza pelearme con PATHs .. lo que daba error era esto.. (vamos, que el restart no iba)

$0 stop
sleep 2
$0 start
🗨️ 2
vukits

joder.. llevo horas y horas.... al final parece que es un lío de selinux .. si hago 'setenforce 0', se ejecuta todo bien :(

🗨️ 1
vukits

pu*o selinux ..

¡hala! toca leer los manuales :P