Jun 18, 2026, 10:20 AM

This commit is contained in:
Paweł Domański
2026-06-18 08:20:40 +00:00
parent 2180641c3b
commit 7db6bbeb6f
2 changed files with 232 additions and 0 deletions
@@ -5,6 +5,34 @@
# defunije funkce pushLog() Notify() makePID() removePID() # defunije funkce pushLog() Notify() makePID() removePID()
# autor: Ales Cernik # autor: Ales Cernik
# #
/**
Skrypt init_sets.sh to uniwersalny plik pomocniczy (tzw. plik konfiguracyjny/biblioteczny), który jest wczytywany (poprzez polecenie source lub .) przez inne skrypty Bash, aby zapewnić im standaryzowane środowisko pracy. Z komentarzy wynika, że jest on zarządzany automatycznie przez system Puppet.
Oto co dokładnie robi i jakie funkcje udostępnia:
1. Inicjalizacja zmiennych i środowiska
Ustalenie nazwy uruchomionego skryptu (myScript) w celu ujednolicenia nazewnictwa plików.
Ustalenie katalogu logów (logDir). Skrypt szuka katalogu /opt/log, a jeśli go nie ma, próbuje /srv/log. Jeśli żaden nie istnieje przerywa działanie z błędem.
Ustalenie ścieżki docelowego pliku z logami (logFile), np. /opt/log/nazwa_twojego_skryptu.sh.log.
Pobranie nazwy hosta (myHost) oraz definicja adresu serwera monitoringu Nagios/Centreon (NAGIOSHOST="centreon.bisnode.cz").
Utworzenie ścieżki do pliku blokady/PID w /tmp/ dla danego skryptu (lock_file).
2. Definicje przydatnych funkcji (do użycia w innych skryptach)
Skrypt definiuje cztery główne funkcje, z których mogą korzystać skrypty nadrzędne:
pushLog() Zwykła funkcja logująca, która dopisuje przekazane do niej argumenty (tekst) na koniec zdefiniowanego pliku logu.
Notify() Służy do wysyłania pasywnych powiadomień do systemu monitoringu (Centreon/Nagios). Przyjmuje kod statusu (0=OK, 1=Warning, 2=Error) oraz wiadomość. Zapisuje wiadomość do lokalnego logu używając pushLog, a następnie wysyła alert do serwera Nagios za pomocą narzędzia send_nsca.
makePID() Implementuje mechanizm wyłączności (mutex), zapobiegając równoległemu uruchomieniu kilku instancji tego samego skryptu.
Czyta identyfikator procesu (PID) z pliku blokady.
Sprawdza w systemowym katalogu /proc/, czy proces o takim PID nadal żyje.
Jeśli proces działa funkcja bezgłośnie przerywa działanie kolejnej instancji skryptu.
Jeśli proces nie działa, zapisuje bieżący PID ($$) do pliku blokady i pozwala skryptowi kontynuować działanie. W razie błędu przy zapisie powiadamia Nagiosa i kończy z błędem.
removePID() Funkcja sprzątająca po prostu usuwa plik blokady (PID), aby zwolnić "kolejkę" dla kolejnych uruchomień skryptu.
Podsumowując: Jest to klasyczna "namiastka biblioteki" dla skryptów administracyjnych, ujednolicająca sposób ich logowania, raportowania błędów do systemu monitoringu oraz chroniąca przed zduplikowanym uruchomieniem zadań w tle (cron).
**/
myScript=${0##*/} myScript=${0##*/}
#myPath="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" #" #myPath="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" #"
@@ -0,0 +1,204 @@
#!/bin/bash
############################################################
## DB ORACLE SET
#export datumcas=$(date -d "-7days" +%d%m%Y%H%M%S%N)
export datumcas=$(date '+%Y %b %d %H:%m')
export datumcas7=$( date -d "-7days" +%d%m%Y%H%M%S%N)
export CONNECT_USER="product_run/4_j3d3m"
export CONNECT_IMPORT="import/cekia"
export CONNECT_RPLIMPORT="rplimport/beruska"
export CONNECT_MW_DW="mw_dw/beruska"
export CONNECT_RPLEXPORT="rplexport/beruska"
export CONNECT_MAJITEL="majitel/uz_zase_makam"
export CONNECT_NEOMAG="neomag/beruska"
export CONNECT_TVKNEOMAG="tvkneomag/tvkneomag"
export CONNECT_MGN2NEO="mgn2neo/mgn2neo"
##export CONNECT_SYSTEM="system/"
export CONNECT_MIGRACEDB="migracedb/s0s4k"
export CONNECT_MANAGER="manager/m4n4g3r"
export CONNECT_IDENTIFIER="product"
export BATCH_ID=0
export repl_running_export=/srv/skripty/running/export
export repl_running_import=/srv/skripty/running/import
export repl_running_replikace=/srv/skripty/running/replikace
export repl_running_replikace_solidited=/srv/skripty/running/solidited
export SkriptyPath=/srv/skripty
export SQLPath=/srv/skripty/sql
export SQLConf=/srv/skripty/conf
export dp_dir=/repository/dp_dir
export imp_dir=/repository/imp_dir
export public2_dir=/repository/public2_dir
export dp_backup=/repository/db_backup
export data_bg=/oradata2/mwdw_dir
export csv_dir=/repository/csv_dir
export sol_dir=/repository/solidited
export dbf_dir=/repository/dbf_dir
export albertina_dbf_dir=/repository/albertina_dbf
export skofin_dir=/repository/skofin_dir
export dp_dir_archiv=/repository/dp_dir/archiv
export imp_dir_archiv=/repository/imp_dir/archiv
#export inhouse_archiv=/repository/inhouse_archiv
export inhouse_archiv=/oradata2/dp_dir/inhouse_archiv
export dp_dir_running_file=/repository/dp_dir/running_file
export imp_dir_running_file=/repository/imp_dir/running_file
export CekiaToDnB_global=/repository/CekiaToDnB-global
export archiv_ext_neomag_archiv=/repository/ora_extdata_backup/neomag/archiv
export archiv_ext_neomag=/repository/ora_extdata_backup/neomag
export archiv_ext_import_archiv=/repository/ora_extdata_backup/import/archiv
export archiv_ext_import=/repository/ora_extdata_backup/import
export ora_extdata_neomag=/repository/ora_extdata_neomag
export ora_extdata_import=/repository/ora_extdata_import
export db_backup=/repository/db_backup
export transformace_DNB=/srv/skripty/transformaceDnB
export subject_DnB=/mnt/subj_for_dnb/
export sshreplcopy=/home/oracle/.ssh/id_replcopy
export sol_amalka=/mnt/Soliditet/
export sol_kremilek=/mnt/Soliditet_kremilek/
export sol_kremilek_dbf=/mnt/Soliditet_kremilek/albertina_dbf/
export java_lib=/mnt/java_lib
export synchr_db=/mnt/synchro_oracle_db
export grc_mssql_dir=/repository/grc_mssql_dir
export csob_dir=/oradata2/csob_dir
export csob_albertina_dir=/repository/csob_albertina_dir
export secret_dir=/repository/secret_dir
export ucl_dir=/repository/ucl_dir
export coronaindex_dir=/repository/bisnode_group_coronaindex
## Nastaveni email promenych
export send_mail_hl_pr=stepan.pukl@bisnode.com
export send_mail_admin=stepan.pukl@bisnode.com,martin.sedivy@bisnode.com
export send_mail_cervak=jiri.cervak@bisnode.com
export send_mail_danda=tomas.danda@bisnode.com
export send_mail_export_katastr_sr=udaje@bisnode.com,Michael.Babka@bisnode.com,Stepan.Pukl@bisnode.com
export send_mail_cez_ict=udaje@bisnode.com,stepan.pukl@bisnode.com,jana.kotoucova@bisnode.cz
export send_mail_klv=stepan.pukl@bisnode.com,udaje@bisnode.com,pavel.kral@bisnode.com,Eva.Konradyova@bisnode.com,Tomas.Fuxa@bisnode.com
export send_mail_dnb_db=stepan.pukl@bisnode.com,jiri.cervak@bisnode.com,Kristyna.Kocova@bisnode.com,Eva.Konradyova@bisnode.com,jana.kotoucova@bisnode.com,pavel.kral@bisnode.com,Tomas.Fuxa@bisnode.com,Lenka.Jarosova@bisnode.com,Zuzana.Prokopova@bisnode.com,Martin.Simacek@bisnode.com,Zuzana.Skalova@bisnode.com,Monika.Rehakova@bisnode.com,Nela.Erbanova@bisnode.com,pavel.pastyrik@bisnode.com,bozena.bankova@bisnode.com,kristina.markova@bisnode.com
export send_mail_export_cocacola=terezia.izarova@cchellenic.com,marie.saskova@cchellenic.com,pukls@dnb.com,StuchlikR@dnb.com,kotoucovaj@dnb.com,pavlinam@dnb.com,momuto@dnb.com,bartovae@dnb.com
export send_mail_export_bvd_isir=Radek.Stuchlik@bisnode.com,jana.cechova@bisnode.com,zuzana.prokopova@bisnode.com,dana.cihakova@bisnode.com
## Nastaveni Oracle promenych
ORACLE_BASE=/oracle/product
ORACLE_HOME=/oracle/product/19c
ORACLE_SID=PRODUCT
export ORACLE_BASE ORACLE_HOME ORACLE_SID
PATH=$ORACLE_HOME/bin:$PATH
export PATH
#oksystem_db@bisnode.cz je mail na janik@oksystem.cz
export DBA_MAIL="oracle@public.cekia.cz","oksystem_db@bisnode.cz"
export DBA_MAIL_TEST="oracle@public.cekia.cz","oksystem_db@bisnode.cz"
# Funkce pro centr▒ln▒ logov▒n▒
#parametre:
# BATCH_NAME (optional)
# PARENT_BATCH_ID (optional)
LOG_START_BATCH () {
local batch_name
local parent_batch_id
local status
local retval
#poresim parametry
if [ "$#" -eq 0 ] ; then
batch_name="'$BATCH_NAME'"
parent_batch_id=null
status="'running'"
elif [ "$#" -eq 1 ] ; then
batch_name="'$1'"
parent_batch_id=null
status="'running'"
elif [ "$#" -eq 2 ] ; then
batch_name="'$1'"
parent_batch_id="'$2'"
status="'planned'"
else
exit -3
fi
echo "neomag.log.start_batch($batch_name,null,null,$status,$parent_batch_id);"
#zalozim batch v tabulce neomag.a_control_process_log
#retval=`sqlplus $CONNECT_USER <<EOF
retval=`sqlplus -s /nolog <<EOF
#CONNECT $CONNECT_USER@$CONNECT_IDENTIFIER
CONNECT $CONNECT_USER
SET SERVEROUTPUT ON SIZE 100000
SET FEEDBACK OFF
SET ECHO OFF
declare
batch_id number;
begin
batch_id := neomag.log.begin_batch($batch_name,null,null,$status,$parent_batch_id);
dbms_output.put_line(batch_id);
end;
/
EXIT
/
EOF
`
#vratim hodnotu, pokud se podarilo...
if [ "$retval" -gt 0 ] ; then
export BATCH_ID=$retval
return 0
else
exit -4
fi
}
#parametre:
# BATCH_ID
# STATUS (optional)
# COUNT_CHANGE (optional)
# POZNAMKA (optional)
LOG_END_BATCH () {
local batch_id
local status
local count_change
local poznamka
#poresim parametry
if [ "$#" -eq 0 ] ; then
exit -1
elif [ "$#" -eq 1 ] ; then
batch_id="$1"
status="'ok'"
count_change=null
poznamka=null
elif [ "$#" -eq 2 ] ; then
batch_id="$1"
status="'$2'"
local count_change=null
local poznamka=null
elif [ "$#" -eq 3 ] ; then
batch_id="$1"
status="'$2'"
count_change="$3"
poznamka=null
elif [ "$#" -eq 4 ] ; then
batch_id="$1"
status="'$2'"
count_change="$3"
poznamka="'$4'"
else
exit -2
fi
echo "neomag.log.end_batch($batch_id,$status,$count_change,$poznamka);"
#Zalozim batch v tabulce neomag.a_control_process_log
sqlplus -s /nolog <<EOF
#CONNECT $CONNECT_USER@$CONNECT_IDENTIFIER
CONNECT $CONNECT_USER
SET SERVEROUTPUT ON SIZE 100000
SET FEEDBACK OFF
SET ECHO OFF
declare
begin
neomag.log.end_batch($batch_id,$status,$count_change,$poznamka);
end;
/
EXIT
/
EOF
}