Использование:

Данный сервис позволяет выполнять команды Cocon из shell, не подключаясь к нему, для этого используется следующий формат:

ccnexec -u <User> [-p <Pass>] [<Host>:[<Port>]] [-o <OutputFile>] [-f <Filename> | -c Command [Arg1 Arg2 ...]]

где

  • login - логин для подключения к Cocon;
  • password - пароль для подключения к Cocon;
  • port - порт для подключения к Cocon;
  • OutputFile - файл для вывода;
  • Filename - чтение команд из файла;
  • Command - команда передаваемая в Cocon.

Для того, чтобы вручную не вводить пароль, можно сохранить куки:

ccnexec -u <User> [-p <Pass>] -S <CookieFile> [<Host>:[<Port>]]
ccnexec -u <User> [-p <Pass>] -s [<Host>:[<Port>]]

Ввод команд с использованием cookie(не забудьте установить -rw - - - - - - - разрешения для вашего файла cookie):

ccnexec -k [<Host>:[<Port>]] [-o <OutputFile>] [-f <Filename> | -c Command [Arg1 Arg2 ...]]
ccnexec -K <CookieFile> [<Host>:[<Port>]] [-o <OutputFile>] [-f <Filename> | -c Command [Arg1 Arg2 ...]]

Параметры:

-u <User> - пользователь CoCon
-p <Pass> - пароль пользователя
-k - использовать куки (по умолчанию -  <HomeDir>/.ccn_cookie)
-K <Cookie> - путь + имя файла Cookie
-o <File> - файл для записи вывода
-f <File> - файл, откуда читать список команд (это не одно и то же, как cat <File> | ./ccnexec)
-c <Cmd> [<Args>] - выполнить одну команду, должен быть в конце, т.к. команды args разделены пробелами
-s - сгенерировать новый файл куки и сохранить его в <HomeDir>/.ccn_cookie
-S <Cookie> -сгенерировать новый файл куки и сохранить его в <Cookie>

Дополнительные параметры:
-A - остановить выполнение при ошибке;
-P - читать пароль из файла (если включена опция -f)
-i - интерактивное выполнение (не работает с опцией -с)

Примеры:

Создать куки:

sasha@ecss1:~/ssw1_3.14$ ccnexec -u admin -p password -s 192.168.1.21
Cookie is saved to /home/sasha/.ccn_cookie

Выполнение простой команды:

sasha@ecss1:~/ssw1_3.14$ ccnexec -k -c system-status
Checking...
┌─┬───────────────┬────────────────────────┬───────────────┬─────────────┬──────────┐
│ │     Node      │        Release         │ Erlang nodes  │Mnesia nodes │  Uptime  │
├─┼───────────────┼────────────────────────┼───────────────┼─────────────┼──────────┤
│ │core1@ecss1    │ecss-core-3.14.3.20     │core1@ecss1    │not running  │1d 19h 31m│
│ │ds1@ecss1      │ecss-ds-3.14.3.20       │ds1@ecss1      │ds1@ecss1    │1d 19h 31m│
│ │md1@ecss1      │ecss-mediator-3.14.3.20 │md1@ecss1      │md1@ecss1    │1d 19h 30m│
│ │megaco1@ecss1  │ecss-pa-megaco-3.14.3.20│megaco1@ecss1  │megaco1@ecss1│1d 19h 30m│
│ │mycelium1@ecss1│ecss-mycelium-3.14.3.20 │mycelium1@ecss1│not running  │1d 19h 31m│
│ │sip1@ecss1     │ecss-pa-sip-3.14.3.20   │sip1@ecss1     │sip1@ecss1   │1d 19h 30m│
└─┴───────────────┴────────────────────────┴───────────────┴─────────────┴──────────┘

All services are started.

  Active media resource selected list specific:
┌─────────────┬───────┬───────────┬───────────┬────────────┐
│    Node     │  MSR  │    MSR    │ Cc-status │ Cc-uptime  │
│             │       │  version  │           │            │
├─────────────┼───────┼───────────┼───────────┼────────────┤
│ core1@ecss1 │ msr_1 │ 3.14.3.11 │ connected │ 1 19:28:20 │
│             │ msr_2 │ 3.14.3.11 │ connected │ 1 17:48:39 │
└─────────────┴───────┴───────────┴───────────┴────────────┘

Alarms list on md1:
┌──────┬──────┬──────┬────────┬────────┬────────┬──────────────────────┐
│ Date │Severi│Locati│ Cause  │ Class  │Instance│       Message        │
│      │  ty  │  on  │        │        │        │                      │
├──────┼──────┼──────┼────────┼────────┼────────┼──────────────────────┤
│10.11 │critic│core1@│software│ecss::sy│core1@ec│Error log data updated│
│00:00:│al    │ecss1 │Error   │stem::lo│ss1     │                      │
│00    │      │      │        │g       │        │                      │
└──────┴──────┴──────┴────────┴────────┴────────┴──────────────────────┘
Selected: 1
Total: 1

Установка лицензии с помощью ccnexec - скрипт bash:

#!/bin/bash

ecss_passport_fname='ECSS_test_010079.passp'
ecss_lic_fname='ecss_010079_2019-09.lic'
ip_ecss=192.168.1.21

SCRIPT_FILENAME=`readlink -e "$0"`
SCRIPT_HOME=`dirname "$SCRIPT_FILENAME"` # каталог запуска скрипта

cd $SCRIPT_HOME

if [ -e $ecss_passport_fname ]    # Проверка наличия файла.
  then
   passp=$(cat $ecss_passport_fname)
  else
   echo "passport file "$ecss_passport_fname" not found!"
   exit
fi

if [ -e $ecss_lic_fname ]    # Проверка наличия файла.
  then
   lic=$(cat $ecss_lic_fname)
  else
   echo "License file "$ecss_lic_fname" not found!"
   exit
fi
echo $passp
echo "------------"
echo $lic
echo "----------------"

sudo scp -r $SCRIPT_HOME/_var_lib_ecss/routing/ /var/lib/ecss/
sudo scp -r $SCRIPT_HOME/_var_lib_ecss/adaptation/ /var/lib/ecss/
sudo scp -r $SCRIPT_HOME/_var_lib_ecss/modification/ /var/lib/ecss/

# echo "Restore media-server config"
# cp -pf _etc/ecss/ecss-media-server/config.xml /var/lib/ecss/ecss-media-server/config.xml

sudo chmod 666 /etc/ecss/ecss-media-server/config*

ssh-keygen -f "/home/bsk/.ssh/known_hosts" -R [192.168.1.21]:8023

echo "starting myc & ds.."
sudo systemctl start ecss-mycelium.service
sudo systemctl start ecss-ds.service 

sleep 10

ccnexec -u admin -p password -s $ip_ecss
ccnexec -k -c system-status
sleep 5

echo "set passport"
ccnexec -k -c cluster/storage/ds1/licence/set-passport `echo $passp`
sleep 20

echo "add license $lic"
ccnexec -k -c cluster/storage/ds1/licence/add `echo $lic`
sleep 2
echo "restart nodes..."
./restart_ecss.sh

ccnexec -k -c system-status

echo "Done. Then declare domains..."
BASH

Создание домена:

#!/bin/bash

ccnexec -k -i << EOF
shell-options prompt \l@\n:\p
domain/declare biysk.local

sleep 4

cocon/add-user-to-group admin ecss-biysk.local-domain-admin
cocon/add-user-to-group admin ecss-biysk.local-domain-user
cocon/list users
domain/list
cd domain/biysk.local
./properties/info

sleep 3

./np/declare np_240

./routing/import ecss1 ctx_city_common.xml
./routing/import ecss1 ctx_from_ewsd.xml
./routing/import ecss1 ctx_to_ewsd.xml
./routing/import ecss1 ctx_from_local.xml
./routing/import ecss1 ctx_to_ivr.xml

sleep 5

./cdr/add_cdr_group bsk3 mode time 00:00

sleep 5

./cdr/change_cdr_group bsk3 prefix bsk3
./alias/set-for-domain cdr_group bsk3
./tts/properties/set cdr_type extended
./tts/properties/set sign_cdr_enabled false

/cluster/mediator/md1/properties/rpss/set * dbConnections stat_db mysql database=ecss_statistics host=192.168.1.71 port=3306 user=statistics password=statistics
sleep 2
/cluster/mediator/md1/statistics/add hostResources 5 rpss_db_export stat_db --recovery-dir /var/lib/ecss/statistics/

sleep 3

/cluster/adapter/sip1/sip/network/set ip_set ipset1 listen-ports list = [5060, 5061, 5062, 5063, 5064, 5065, 5070, 5071, 5072, 5073, 5074, 5075]
sleep 5
/cluster/adapter/sip1/sip/network/set ip_set ipset1 node-ip node = sip1@ecss1 ip = 192.168.2.61
/cluster/adapter/sip1/sip/network/set ip_set ipset1 node-ip node = sip1@ecss2 ip = 192.168.2.62
/cluster/adapter/sip1/sip/network/set ip_set ipset1 dscp 24
/cluster/adapter/sip1/sip/network/info

sleep 5

cd /domain/biysk.local

./properties/set public_names add biysk.local
./sip/network/set ip_set [ipset1]

./trunk/sip/declare ctx_from_ewsd smg.gr smg-4 ipset1 static 192.168.2.8 5061 sip-t 5061 --check
./trunk/sip/declare ctx_from_local sbc.gr nsk_sbc ipset1 static 192.168.2.6 5062 sip-t 5062
./trunk/sip/declare ctx_from_local sbc.gr to_sipp ipset1 static 192.168.2.6 5063 sip-t 5063
./trunk/sip/declare ctx_from_local sbc.gr to_aster ipset1 static 192.168.2.6 5064 sip-t 5064

./trunk/sip/declare ctx_from_local ssw.gr ems1 ipset1 static 192.168.2.15 5071 sip-proxy 5071
./trunk/sip/declare ctx_from_local ssw.gr ems2 ipset1 static 192.168.2.15 5072 sip-proxy 5072
./trunk/sip/declare ctx_from_local ssw.gr bsk1 ipset1 static 192.168.2.12 5073 sip-proxy 5073
./trunk/sip/declare ctx_from_local ssw.gr bsk2 ipset1 static 192.168.2.12 5074 sip-proxy 5074

./trunk/sip/set smg.gr smg-4 sip_transport udp_only

./trace/properties/set mode full_compressed
./trace/properties/set backend dets

sleep 2

./access-type/declare admin1 false false false false false false false false false false true true 21 admin
./regime/declare accsusp false false false false false false false false false false true true 21 accsusp

sleep 1

cd /cluster/storage/ds1/ss
./install ds1@ecss1 *
./access-list add biysk.local *

sleep 1

cd /

./system/media/registrar/set common registration-timeout 90
./system/media/registrar/set private core1@ecss1 listen-ip 192.168.2.21
./system/media/registrar/set private core1@ecss2 listen-ip 192.168.2.22

./system/media/resource/declare core1@ecss1 iface msr_1 bond1.2 default local true
./system/media/resource/declare core1@ecss1 iface msr_2 bond1.2 default local true
./system/media/resource/declare core1@ecss2 iface msr_1 bond1.2 default local true
./system/media/resource/declare core1@ecss2 iface msr_2 bond1.2 default local true
./system/media/trace/set backend dets
./system/media/trace/set mode full_compressed

sleep 1

cd /domain/biysk.local/notifier
./set email ecss10biysk@mail.ru
./set email_enable false
./set email_port 465
./set email_username ecss10biysk@mail.ru
./set email_password <passwd>
./set email_server smtp.mail.ru
./set email_protection_connection ssl_tls
./info

sleep 1
cd /domain/biysk.local

./iface/group-set -g loc.gr -p terminal_type basic

./subscriber-portal/properties/set auto_create_account true
./subscriber-portal/properties/set auto_delete_account true
./subscriber-portal/properties/set connection 192.168.1.71:3306 subscribers subscribers ecss_subscribers


sleep 1
cd /domain/biysk.local/properties/restrictions

./set callcenter\enabled true
./set teleconference\enabled true
./set ivr\enabled true

/system/tc/set * mysql_enabled true

/domain/biysk.local/iface/user-set .system .system system:ivr routing.context ctx_from_local
/domain/biysk.local/iface/user-set .system .system system:teleconference routing.context ctx_from_local

EOF
BASH

Создание абонентов(пароли вымышленные):

#!/bin/bash

ccnexec -k -i << EOF

cd domain/biysk.local
./sip/user/declare ctx_from_local loc.gr 240001 alias-as-user qop_authentication login-as-user pw001
./sip/user/declare ctx_from_local loc.gr 240002 alias-as-user qop_authentication login-as-user pw002
./sip/user/declare ctx_from_local loc.gr 240473 alias-as-user qop_authentication login-as-user pw473
./sip/user/declare ctx_from_local loc.gr 240475 alias-as-user qop_authentication login-as-user pw475
./sip/user/declare ctx_from_local loc.gr 240{500-799} alias-as-user qop_authentication login-as-user test_pw
#...

./ss/profile/declare min_ss only_clip_cnip_chold 
sleep 3
./ss/profile/ss-add min_ss chold true true dtmf_sequence_as_flash = false 
sleep 1
./ss/profile/ss-add min_ss clip true true 
sleep 1
./ss/profile/ss-add min_ss clip true true 

sleep 3
./ss/profile/declare work_ss for_office 
sleep 3

./ss/profile/ss-add work_ss clip true true 
./ss/profile/ss-add work_ss cnip true true 
./ss/profile/ss-add work_ss chold true true 
./ss/profile/ss-add work_ss ctr true true 
./ss/profile/ss-add work_ss conference true true 
./ss/profile/ss-add work_ss cf_sip true true 
./ss/profile/ss-add work_ss cc_agent true true 
./ss/profile/ss-add work_ss ml true true 
./ss/profile/ss-add work_ss mcid true true 
./ss/profile/ss-add work_ss intervention true true 
./ss/profile/ss-add work_ss park true true 
./ss/profile/ss-add work_ss meet-me-conference true true 

./ss/enable 24010{0-1} *
./ss/enable 2404{62-75} *
./ss/enable 24010{0-1} *
./ss/enable 2404{62-75} *

./ss/profile/activate work_ss 24000{1-9}
./ss/profile/activate work_ss 2404{62-75}
./ss/profile/activate work_ss 24010{0-1}
BASH