Skip to content
PhilippeLeroux edited this page Oct 9, 2018 · 9 revisions

Table of contents


plelib.sh last modified : 08/10/2018

  • Publics functions : 53
  • Undocumented functions : 0
  • Privates functions : 13

Public functions

Public function set_terminal_title

$1 title or default

Public function move_log_to_server

Si le script est lancé par l'utilisateur oracle, la log, déclenchée par
ple_enable_log est copié dans ~/log

Public function ple_enable_log

$1 nom de la log sans le chemin (facultatif), par défaut nom du script appelant
ou/et -params $*
Exemple : ple_enable_log -params $*

Public function clean_log_file

Remove all visual makers from file $1

Public function hide_cursor

Hide cursor

Public function show_cursor

Show cursor

Public function term_cols

print to stdout number of col for the terminal. if no terminal print 80

Public function must_be_executed_on_server

$1 server name
exit 1 if curent server name is different.
Variable $ME must be initialised with $0 (name of the script)

Public function must_be_user

$1 user list (separator space) Ex : "root" or "root grid"
exit 1 if curent user name is different.
Variable $ME must be initialised with $0 (name of the script)

Public function error

Print error message

Public function warning

Print warning message

Public function debug

Affiche les informations de debug.
Actif uniquement si la variable DEBUG_MODE==ENABLE est définie.
Fonctionne sur le même principe que info.

Public function info

Print normal message
Options
  -n no new line
  -f don't print info marker. (Useful after info -n)

Public function line_separator

line_separator [car]
Fill line with charactere = or specified charactere

Public function LN

New line

Public function ask_for

Paramètres :

-reply_list="y n" liste des réponses séparées par un espace, par défaut "y n"
   * Pour la touche 'return' utiliser -reply_list=CR
   * Maximum 3 réponses possibles.

-print="y/n ?" les réponses à afficher, par défaut "y/n ?"

Les autres paramètres forment la question.

Codes retours :
	0	pour la première réponse.
	1	pour la seconde réponse.
	3	pour la troisième réponse.

Public function confirm_or_exit

Pour les paramètres voir ask_for
Si l'utilisateur répond non (la 2ième réponse) le script est terminé par un exit 1

Public function replace_paths_by_shell_vars

Modifie '$@' et affiche le résultat sur stdout.
	Remplace le chemin correspondand à HOME par $HOME
	Remplace le chemin correspondand à TNS_ADMIN par $TNS_ADMIN
	Remplace le chemin correspondand à ORACLE_HOME par $ORACLE_HOME
	Remplace le chemin correspondand à ORACLE_BASE par $ORACLE_BASE

Public function fake_exec_cmd

Fake exec_cmd command
Command printed but not executed.
return :
   1 if EXEC_CMD_ACTION = NOP
   0 if EXEC_CMD_ACTION = EXEC

Public function unquote

$@ string
print to stdout string without quotes ( ' or " )

Public function exec_cmd

exec_cmd
if EXEC_CMD_ACTION
   == NOP  : command is printed (No Operation)
   == EXEC : command is printed & executed

If command failed stop the scripts.

Parameters:
	-f  EXEC_CMD_ACTION is ignored.
	-c  continue on error.
	-ci like -c.
	-h  hide command except on error.
	-hf like -h.
	-novar path not replaced by variable name.

Show execution time after PLE_SHOW_EXECUTION_TIME_AFTER seconds

Les paramètres -ci et -hf ne sont plus pris en compte (je ne sais pas pourquoi)
mais ils sont encore utilisés dans plusieurs scripts. Leurs effets étaient
uniquement sur l'affichage.
En regardant l'historique git, les actions de ces paramètres ont disparus il
4 mois (date du reset du repository) donc je ne sais pas vraiment ce qui
c'est passé avec ces paramètres.
Morale de l'histoire ne jamais faire de reset de dépôt :(

Public function add_dynamic_cmd_param

[-nvsr]	No Var Shell Replacement
$@ parameter to add.

Public function exec_dynamic_cmd

run command '$@' with parameters define by add_dynamic_cmd_param
	[-confirm] a prompt is printed to confirm or not execution.
	[-c] continue on error.

Public function exit_if_file_not_exists

exit_if_file_not_exists <name> [message]
if file <name> not exists, script aborted.
Print [message] if specified.

Public function exit_if_dir_not_exists

exit_if_dir_not_exists <name> [message]
if directory <name> not exits, script aborted.
Print [message] if specified.

Public function update_variable

update_variable <var> <value> <file>
Update variable <var> from file <file> with value <value>
If variable doesn't exist, it's added.
If value = empty reset value but not remove variable.

Format ^var\s*=\s*value

If file doesn't exist script aborted.

Public function remove_variable

remove_variable <var> <file>

Remove variable <var> from file <file>
	Format ^var\s*=.*

If file doesn't exist script aborted.

Public function exit_if_param_undef

exit_if_param_undef <var> [message]

Script aborted if var == undef or == -1 or empty

Public function exit_if_param_invalid

exit_if_param_invalid var_name val_list [message]

Script aborted if var
	= undef or -1
	not in the list val_list

Public function double_symbol_percent

Double symbol % from $@.

Public function escape_symbol_nl

Escape \n from $@

Public function escape_2xquotes

Escape " from $@

Public function escape_slash

Escape / from $@

Public function escape_anti_slash

Escape \ from $@

Public function to_upper

Upper case "$@"

Public function to_lower

Lower case "$@"

Public function initcap

Upper case the first caractere of $1

Public function fill

fill <car> <#>
Print to stdout a buffer filled with #characteres car

Public function pause_in_secs

pause_in_secs <seconds>
Fait une pause de <seconds> secondes.
Le décompte du temps écoulé sera affiché à la position courante du curseur.
Retourne la longueur utilisée pour afficher le décompte ce qui permet
d'effacer l'affichage.

Public function timing

Temporisation pendant $1 secondes
$1 temps en secondes
$2 msg par défaut pas de message.

Public function script_start

script_start
A appelé en début de script.

Public function script_stop

script_stop <nom du script>
$1 est le nom du script
$@ les autres paramètres sont des messages
Affiche le temps écoulé depuis le dernier appel à script_start
Doit être appelé en fin de script

Public function compute

Eval an arithmetic expression
Flags
   -l# : use real numbers with # number decimals
   -i : remove all decimals

Public function fmt_seconds

formate $1 seconds to the better format

Public function fmt_number

Format number $1 english or french, use LANG to define the format.

Public function to_mb

Convert $1 in Mb
	Last digits is the unit : G, Gb, M, Mb, Kb or K, b or B

Public function to_bytes

Convert value $1 to bytes
Units can be b,k,m or g (or upper case)

Public function fmt_bytes_2_better

Convert value $1 to better.
Units can be b,k,m or g (or upper case)

1024K == 1Mb
1024M == 1Gb

Public function is_number

$1 variable value
return 0 if is a number, else return 1

Public function command_exists

return 0 if cmd $1 exists else return 1

Public function rpm_update_available

return 0 if rpm update available, else return 1
[$1 -show] show all update
check update on server $1 or $2 or local server if server name is missing.

Public function get_os_memory_mb

print to stdout total os memory

Public function notify

[$1] -t# '#' is time out in ms, default 5s (5000ms)
$1 or $2 message to notify (message is also displayed to stdout)
Work if notify-send exists

Private functions

Private function enable_markers

Active les effets visuels couleurs et autres.

Private function disable_markers

Désactive les effets visuels couleurs et autres.

Private function clean_plelib_log_file

Remove all visual makers for log file generate by plelib

Private function ctrl_c

Show cursor on Ctrl+c

Private function my_echo

Used by fonctions info, warning and error.
Action depand of PLELIB_OUTPUT
	DISABLE : no visual effects.
	ENABLE	: visual effects
	FILE	: write into $PLELIB_LOG_FILE without any effects and canal 1 with visual effects.

Private function simplify_cmd

Convertie les tabulations et supprime les espaces en trop de "$@"

Private function get_tt

Affiche sur stdout le timestamp à utiliser pour l'exécution d'une commande.
Si la longueur d'affichage change adapter la variable ple_param_margin

Private function shorten_command

$1|$@ commande, est utilisé par la fonction exec_cmd.
Si la commande utilise ssh|sudo|su affiche sur stdout la commande appelée.

Private function exists_var

Test if a variable exists, format ^vars{0,}=s{0,}value
1	variable name
2	file name

Private function change_value

change_value <var> <value> <file>
Format ^var\s*=\s*value

Private function add_new_variable

add_new_variable <var> <value> <file>
Format : var=value
If <value> == empty no value specified.

Private function test_pause

Sert pour le debuggage.
Si des paramètres sont passés il sont affiché comme un message.
Pour que la fonction soit active il faut positionner la variable PAUSE à ON
$1 message (optionnel)

Private function get_initiator_for

get_initiator_for <db> <#node>
return initiator name for <db> and node <#node>

Clone this wiki locally