LINUX.ORG.RU
ФорумAdmin

Копия Asterisk на том же хосте.

 ,


0

1

Всем привет!

Есть надобность запустить копию Asterisk на хосте, где уже работает Asterisk. На хосте: Debian 8.7 и Asterisk 13.12.

Основной астер нормально запускается, проблем нет, а копия не запускается

Unable to connect to remote asterisk (does /var/run/asterisk_copy/asterisk.ctl exist?)
пишет попытке подключения в консоль.

В asterisk_copy.conf:

[directories]
astetcdir => /etc/asterisk_copy
astmoddir => /usr/lib/asterisk/modules
astvarlibdir => /var/lib/asterisk_copy
astdbdir => /var/lib/asterisk_copy
astkeydir => /var/lib/asterisk_copy
astdatadir => /var/lib/asterisk_copy
astagidir => /var/lib/asterisk_copy/agi-bin
astspooldir => /var/spool/asterisk_
astrundir => /var/run/asterisk_copy
astlogdir => /var/log/asterisk_copy
astsbindir => /usr/sbin
....

[options]
....
runuser = asterisk
rungroup = asterisk 

Права:

ls -la /var/run/
drwxr-xr-x  2 asterisk    asterisk      40 ноя 16 15:12 asterisk
drwxr-xr-x  2 asterisk    asterisk      60 ноя 16 15:15 asterisk_copy

Такая же конструкция работает в Debian6 и Asterisk 1.8.

Подскажите пожалуйста, в чем может быть проблема?

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

init.d скрипт

/etc/init.d/asterisk_copy start

Вот сам скрипт:

#! /bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
NAME=asterisk_copy
DESC="Asterisk_copy PBX"
# Full path to asterisk binary
DAEMON=/usr/sbin/asterisk
ASTVARRUNDIR=/var/run/asterisk_copy
ASTETCDIR=/etc/asterisk_copy
TRUE=/bin/true
AST_USER=asterisk
ALTCONF=/etc/asterisk_copy/asterisk.conf
### BEGIN INIT INFO
# Provides:             asterisk
# Required-Start:    $network $syslog $named $local_fs $remote_fs
# Required-Stop:     $network $syslog $named $local_fs $remote_fs
# Should-Start:      dahdi misdn lcr wanrouter mysql postgresql
# Should-Stop:       dahdi misdn lcr wanrouter mysql postgresql
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description:    Asterisk PBX
# Description:          the Asterisk Open Source PBX
### END INIT INFO

set -e

if ! [ -x $DAEMON ] ; then
        echo "ERROR: $DAEMON not found"
        exit 0
fi

if ! [ -d $ASTETCDIR ] ; then
        echo "ERROR: $ASTETCDIR directory not found"
        exit 0
fi

# Use the LSB standard functions for services management
. /lib/lsb/init-functions

# Allow configuration overrides in /etc/default/asterisk
CONFIG0=`readlink $0 || :` # readlink returns 1 when something isn't a symlink
if [ "$CONFIG0" = "" ]; then
        CONFIGFILE=/etc/default/`basename $0`
else
        CONFIGFILE=/etc/default/`basename $CONFIG0`
fi
[ -r $CONFIGFILE ] && . $CONFIGFILE

case "$1" in
  start)
        # Check if Asterisk is already running.  If it is, then bug out, because
        # starting up Asterisk when Asterisk is already running is very bad.
        VERSION=`${DAEMON} -C /etc/asterisk_copy/asterisk.conf -rx 'core show version' 2>/dev/null || ${TRUE}`
        if [ "`echo $VERSION | cut -c 1-8`" = "Asterisk" ]; then
                echo "Asterisk is already running.  $0 will exit now."
                exit 0
        fi

        log_begin_msg "Starting $DESC: $NAME"
        if [ ! -d $ASTVARRUNDIR ]; then
                mkdir -p $ASTVARRUNDIR
        fi
        if [ $AST_USER ] ; then
                ASTARGS="-U $AST_USER "
                chown $AST_USER $ASTVARRUNDIR
        fi
        if [ $AST_GROUP ] ; then
                ASTARGS="$ASTARGS -G $AST_GROUP"
                chgrp $AST_GROUP $ASTVARRUNDIR
        fi
        if [ $ALTCONF ]; then
                ASTARGS="$ASTARGS -C $ALTCONF"
        fi
        if [ "x$COREDUMP" = "xyes" ]; then
                ASTARGS="$ASTARGS -g"
        fi
        if [ "0$MAXLOAD" -gt "0" ]; then
                ASTARGS="$ASTARGS -L $MAXLOAD"
        fi
        if [ "0$MAXCALLS" -gt "0" ]; then
                ASTARGS="$ASTARGS -M $MAXCALLS"
        fi
        if [ "0$VERBOSITY" -gt "0" ]; then
                for i in `seq 1 $VERBOSITY`; do
                        ASTARGS="$ASTARGS -v"
                done
                # -v implies -f, so we override that implicit specification here
                ASTARGS="$ASTARGS -F"
        fi
        if [ "x$INTERNALTIMING" = "xyes" ]; then
                ASTARGS="$ASTARGS -I"
        fi
        if [ "x$TEMPRECORDINGLOCATION" = "xyes" -o "x$TMPRECORDINGLOCATION" = "xyes" ]; then
                ASTARGS="$ASTARGS -t"
        fi
        if test "x$COLOR" = "xno" ; then
                ASTARGS="$ASTARGS -n"
        fi
        # "start-stop-daemon --oknodo" returns 0 even if Asterisk was already running (as LSB expects):
        start-stop-daemon --start --oknodo --pid /var/run/asterisk_copy/asterisk.pid --startas $DAEMON -- $ASTARGS
        log_end_msg $?
        ;;
  stop)
        log_begin_msg "Stopping $DESC: $NAME"
        # "start-stop-daemon --oknodo" returns 0 even if Asterisk was already stopped (as LSB expects):
        start-stop-daemon --stop --oknodo --pid /var/run/asterisk_copy/asterisk.pid --startas $DAEMON
        log_end_msg $?
        ;;
  reload)
        echo "Reloading $DESC configuration files."
        $DAEMON  -C /etc/asterisk_copy/asterisk.conf -rx 'module reload' > /dev/null 2> /dev/null
        ;;
  restart|force-reload)
        $0 stop
        sleep 2  # It needs some time to really be stopped.
        $0 start
        # "restart|force-reload" starts Asterisk and returns 0 even if Asterisk was stopped (as LSB expects).
        ;;
  status)
       status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?

       ;;
  *)
        N=/etc/init.d/$NAME
        echo "Usage: $N {start|stop|restart|reload|force-reload|status}" >&2
        exit 1
        ;;
esac

borschov ()

Плюсую вопрос про порты. Плюс надо смотреть, что в логах /var/log/syslog и /var/log/asterisk_copy/full.

HerrWeigel ★★★★ ()
Последнее исправление: HerrWeigel (всего исправлений: 1)
Ответ на: комментарий от HerrWeigel

эм... Какие порты вы имеете в виду? Астер же не стартует, соответственно и логи не ведутся.

borschov ()
Ответ на: комментарий от borschov

единственное кусок вывода strace:

getcwd("/etc/init.d", 4096)             = 12
stat("/etc/init.d", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
geteuid()                               = 1001
getegid()                               = 1001
getuid()                                = 1001
getgid()                                = 1001
access("/etc/init.d", R_OK|X_OK)        = 0
chdir("/")                              = 0
socket(PF_LOCAL, SOCK_STREAM, 0)        = 3
connect(3, {sa_family=AF_LOCAL, sun_path="/var/run/asterisk_copy/asterisk.ctl"}, 110) = -1 ENOENT (No such file or directory)
close(3)                                = 0
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7fc709512a50) = 10822
exit_group(0)                           = ?
+++ exited with 0 +++

borschov ()
Ответ на: комментарий от borschov

Ну, порты SIP, H.323 и т.п.

Два сервиса не могут занимать одни и те же порты.

HerrWeigel ★★★★ ()
Ответ на: комментарий от HerrWeigel

А... Эти порты)))))))

Вот команды и их вывод, в порядке использования:

1. root@pbx2:~# /etc/init.d/asterisk_copy start
[ ok ] Starting Asterisk_copy PBX: asterisk_copy.
2.root@pbx2:~# ps aux | grep aster
root     11805  0.0  0.1  12752  2264 pts/0    S+   10:48   0:00 grep aster
3. root@pbx2:~# netstat -apn | grep aster


Стартуем сервис
Видим, что сервис не работает,
И порты никакие не слушаются.

Основной Астер и не запускаю, только с копией мучаюсь.

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