Jun 18, 2026, 10:20 AM
This commit is contained in:
@@ -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
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user