571 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			571 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
 | |
| 
 | |
| ######################################################################
 | |
| # Gestion des processus
 | |
| 
 | |
| function wo_pidof() {
 | |
|     # obtenir le(s) pid de l'instance $1
 | |
| 
 | |
|     # attention! on doit avoir un ps non legacy (cf sysinc/system_caps)
 | |
|     ps_all | grep "\-[W]OApplicationName $1 " | awk '{ print $1 }'
 | |
| 
 | |
|     # note: on met [W] entre crochet pour que le processus associé à grep ne
 | |
|     # soit pas pris dans la liste
 | |
| 
 | |
|     # note: on met un espace après le nom de l'application pour ne matcher que
 | |
|     # celle-là.
 | |
| }
 | |
| 
 | |
| ######################################################################
 | |
| # Services basés sur le parcours du fichier SiteConfig.xml
 | |
| 
 | |
| AWK_FUNCTIONS='
 | |
| function get_value(line) {
 | |
|     match(line, /^[^<]*<[^<>]*>/); line = substr(line, RSTART + RLENGTH)
 | |
|     match(line, /<.*$/); line = substr(line, 1, RSTART - 1)
 | |
|     return line
 | |
| }
 | |
| 
 | |
| function get_attr_value(attr, line) {
 | |
|     match(line, attr "=\""); line = substr(line, RSTART + RLENGTH)
 | |
|     match(line, /".*$/); line = substr(line, 1, RSTART - 1)
 | |
|     return line
 | |
| }
 | |
| '
 | |
| 
 | |
| function siteconf_dump_hosts() {
 | |
|     # Retourner la liste des hôtes configurés
 | |
|     # Chaque ligne est de la forme:
 | |
|     #     host type
 | |
|     [ -f "$WOCONFIGURATION/SiteConfig.xml" ] || return 1
 | |
| 
 | |
|     awk <"$WOCONFIGURATION/SiteConfig.xml" "$AWK_FUNCTIONS"'
 | |
| BEGIN {
 | |
|     in_hosts = 0
 | |
| }
 | |
| 
 | |
| !in_hosts && $0 ~ /<hostArray / { in_hosts = 1 }
 | |
| in_hosts && $0 ~ /<\/hostArray>/ { in_hosts = 0 }
 | |
| 
 | |
| in_hosts && $0 ~ /<element / {
 | |
|     name = ""
 | |
|     type = ""
 | |
| }
 | |
| in_hosts && $0 ~ /<\/element>/ {
 | |
|     print name " " type
 | |
| }
 | |
| 
 | |
| in_hosts && $0 ~ /<name / { name = get_value($0) }
 | |
| in_hosts && $0 ~ /<type / { type = get_value($0) }
 | |
| '
 | |
| }
 | |
| 
 | |
| function get_pathName() {
 | |
|     local system pathName
 | |
|     for system in Linux SunOS; do
 | |
|         [ "$system" == "$SYSTEM_NAME" ] && pathName=unixPath
 | |
|     done
 | |
|     for system in Darwin; do
 | |
|         [ "$system" == "$SYSTEM_NAME" ] && pathName=macPath
 | |
|     done
 | |
|     for system in Cygwin Mingw; do
 | |
|         [ "$system" == "$SYSTEM_NAME" ] && pathName=windowsPath
 | |
|     done
 | |
|     [ -n "$pathName" ] && echo "$pathName"
 | |
| }
 | |
| 
 | |
| function siteconf_dump_applications() {
 | |
|     # Retourner la liste des mapplications configurées
 | |
|     # Chaque ligne est de la forme:
 | |
|     #     name autoRecover debuggingEnabled path
 | |
|     [ -f "$WOCONFIGURATION/SiteConfig.xml" ] || return 1
 | |
| 
 | |
|     pathName="$(get_pathName)"
 | |
|     awk -v pathName="$pathName" <"$WOCONFIGURATION/SiteConfig.xml" "$AWK_FUNCTIONS"'
 | |
| BEGIN {
 | |
|     in_applications = 0
 | |
| }
 | |
| 
 | |
| 
 | |
| !in_applications && $0 ~ /<applicationArray / { in_applications = 1 }
 | |
| in_applications && $0 ~ /<\/applicationArray>/ { in_applications = 0 }
 | |
| 
 | |
| in_applications && $0 ~ /<element / {
 | |
|     name = ""
 | |
|     autoRecover = ""
 | |
|     debuggingEnabled = ""
 | |
|     path = ""
 | |
| }
 | |
| in_applications && $0 ~ /<\/element>/ {
 | |
|     print name " " autoRecover " " debuggingEnabled " " path
 | |
| }
 | |
| 
 | |
| in_applications && $0 ~ /<name / { name = get_value($0) }
 | |
| in_applications && $0 ~ /<autoRecover / { autoRecover = get_value($0) }
 | |
| in_applications && $0 ~ /<debuggingEnabled / { debuggingEnabled = get_value($0) }
 | |
| in_applications && $0 ~ "<" pathName " " { path = get_value($0) }
 | |
| '
 | |
| }
 | |
| 
 | |
| function siteconf_dump_instances() {
 | |
|     # Retourner la liste des minstances configurées
 | |
|     # Chaque ligne est de la forme:
 | |
|     #     applicationName id hostName port autoRecover debuggingEnabled path
 | |
|     [ -f "$WOCONFIGURATION/SiteConfig.xml" ] || return 1
 | |
| 
 | |
|     awk -v pathName="$pathName" <"$WOCONFIGURATION/SiteConfig.xml" "$AWK_FUNCTIONS"'
 | |
| BEGIN {
 | |
|     in_instances = 0
 | |
| }
 | |
| 
 | |
| 
 | |
| !in_instances && $0 ~ /<instanceArray / { in_instances = 1 }
 | |
| in_instances && $0 ~ /<\/instanceArray>/ { in_instances = 0 }
 | |
| 
 | |
| in_instances && $0 ~ /<element / {
 | |
|     applicationName = ""
 | |
|     id = ""
 | |
|     hostName = ""
 | |
|     port = ""
 | |
|     autoRecover = ""
 | |
|     debuggingEnabled = ""
 | |
|     path = ""
 | |
| }
 | |
| in_instances && $0 ~ /<\/element>/ {
 | |
|     print applicationName " " id " " hostName " " port " " autoRecover " " debuggingEnabled " " path
 | |
| }
 | |
| 
 | |
| in_instances && $0 ~ /<applicationName / { applicationName = get_value($0) }
 | |
| in_instances && $0 ~ /<id / { id = get_value($0) }
 | |
| in_instances && $0 ~ /<hostName / { hostName = get_value($0) }
 | |
| in_instances && $0 ~ /<port / { port = get_value($0) }
 | |
| in_instances && $0 ~ /<autoRecover / { autoRecover = get_value($0) }
 | |
| in_instances && $0 ~ /<debuggingEnabled / { debuggingEnabled = get_value($0) }
 | |
| in_instances && $0 ~ /<path / { path = get_value($0) }
 | |
| '
 | |
| }
 | |
| 
 | |
| function get_instances_for_woa() {
 | |
|     # lister les instances qui correspondent à l'application $1
 | |
|     # $1 peut être de la forme App.woa ou /path/to/App.woa
 | |
|     if [[ "$1" == /* ]]; then
 | |
|         local path="$1"
 | |
|     else
 | |
|         local path="$WOAPPLICATIONS/$(basename "$1")"
 | |
|     fi
 | |
|     local app="$(basename "$path")"
 | |
|     local appname="$(basename "$app" .woa)"
 | |
|     local appscript="$path/$appname"
 | |
| 
 | |
|     siteconf_dump_applications | uawk -v appscript="$appscript" '$4 == appscript { print $1 }'
 | |
| }
 | |
| 
 | |
| function get_instances_for_framework() {
 | |
|     # lister les instances qui correspondent aux applications qui utilisent le framework $1
 | |
|     # $1 doit être de la forme Fw.framework
 | |
|     local fwname="$(basename "$1")" fwnames appnames appname app
 | |
|     appnames="$(list_dirs "$WOAPPLICATIONS" "*.woa")"
 | |
|     while next_arg appnames appname; do
 | |
|         app="$WOAPPLICATIONS/$appname"
 | |
|         array_from_lines fwnames "$(dump_frameworks "$app")"
 | |
|         if array_contains fwnames "$fwname"; then
 | |
|             get_instances_for_woa "$app"
 | |
|         fi
 | |
|     done
 | |
| }
 | |
| 
 | |
| function siteconf_get_monitor_password() {
 | |
|     # Lire le mot de passe dans le fichier SiteConfig.xml
 | |
|     [ -f "$WOCONFIGURATION/SiteConfig.xml" ] || return 1
 | |
| 
 | |
|     awk <"$WOCONFIGURATION/SiteConfig.xml" '
 | |
| $0 ~ /<password/ {
 | |
|     #print gensub("^.*>([^<]*)<.*$", "\\1", 1)
 | |
|     match($0, /^[^<]*<[^<>]*>/); $0 = substr($0, RSTART + RLENGTH)
 | |
|     match($0, /<.*$/); $0 = substr($0, 1, RSTART - 1)
 | |
|     print
 | |
| }
 | |
| '
 | |
| }
 | |
| 
 | |
| function siteconf_get_instance_data_for_updateWotaskd() {
 | |
|     # obtenir les informations au format XML pour les instances données, à
 | |
|     # utiliser avec <updateWotaskd>
 | |
|     # Les informations sont retournées pour chaque minstance, une par ligne.
 | |
|     [ -f "$WOCONFIGURATION/SiteConfig.xml" ] || return 1
 | |
|     [ -n "$*" ] || return 1
 | |
| 
 | |
|     script='
 | |
| BEGIN {
 | |
|     found_instances = 0
 | |
|     found_element = 0
 | |
| }
 | |
| 
 | |
| $0 ~ /<instanceArray/ {
 | |
|     found_instances = 1
 | |
| }
 | |
| 
 | |
| found_instances && $0 ~ /<element/ {
 | |
|     found_element = 1
 | |
|     name = ""
 | |
|     data = ""
 | |
|     next
 | |
| }
 | |
| 
 | |
| found_element && $0 ~ /<applicationName/ {
 | |
|     #name = gensub("^.*>([^<]*)<.*$", "\\1", 1)
 | |
|     name = $0
 | |
|     match(name, /^[^<]*<[^<>]*>/); name = substr(name, RSTART + RLENGTH)
 | |
|     match(name, /<.*$/); name = substr(name, 1, RSTART - 1)
 | |
| }
 | |
| 
 | |
| found_element && $0 ~ /<\/element/ {
 | |
|     if ('
 | |
| 
 | |
|     local instance notfirst=
 | |
|     for instance in "$@"; do
 | |
|         script="$script${notfirst:+|| }name == \"$(quote_awk "$instance")\""
 | |
|         notfirst=1
 | |
|     done
 | |
|     script="$script"') {
 | |
|         print data
 | |
|     }
 | |
|     found_element = 0
 | |
|     next
 | |
| }
 | |
| 
 | |
| found_element {
 | |
|     match($0, /^[\t]*/)
 | |
|     $0 = substr($0, RSTART + RLENGTH)
 | |
|     data = data $0
 | |
| }
 | |
| 
 | |
| found_instances && $0 ~ /<\/instanceArray/ {
 | |
|     found_element = 0
 | |
|     found_instances = 0
 | |
| }
 | |
| '
 | |
| 
 | |
|     awk <"$WOCONFIGURATION/SiteConfig.xml" "$script"
 | |
| }
 | |
| 
 | |
| function siteconf_get_instance_data_for_commandWotaskd() {
 | |
|     # obtenir les informations au format XML pour les instances données, à
 | |
|     # utiliser avec <commandWotaskd>
 | |
|     # Les informations sont retournées pour chaque minstance, une par ligne.
 | |
|     [ -f "$WOCONFIGURATION/SiteConfig.xml" ] || return 1
 | |
| 
 | |
|     script='
 | |
| BEGIN {
 | |
|     found_instances = 0
 | |
|     found_element = 0
 | |
| }
 | |
| 
 | |
| $0 ~ /<instanceArray/ {
 | |
|     found_instances = 1
 | |
| }
 | |
| 
 | |
| found_instances && $0 ~ /<element/ {
 | |
|     found_element = 1
 | |
|     id = ""
 | |
|     port = ""
 | |
|     name = ""
 | |
|     hostName = ""
 | |
|     next
 | |
| }
 | |
| 
 | |
| found_element && $0 ~ /<id/ {
 | |
|     #id = gensub("^.*>([^<]*)<.*$", "\\1", 1)
 | |
|     id = $0
 | |
|     match(id, /^[^<]*<[^<>]*>/); id = substr(id, RSTART + RLENGTH)
 | |
|     match(id, /<.*$/); id = substr(id, 1, RSTART - 1)
 | |
| }
 | |
| found_element && $0 ~ /<port/ {
 | |
|     #port = gensub("^.*>([^<]*)<.*$", "\\1", 1)
 | |
|     port = $0
 | |
|     match(port, /^[^<]*<[^<>]*>/); port = substr(port, RSTART + RLENGTH)
 | |
|     match(port, /<.*$/); port = substr(port, 1, RSTART - 1)
 | |
| }
 | |
| found_element && $0 ~ /<applicationName/ {
 | |
|     #name = gensub("^.*>([^<]*)<.*$", "\\1", 1)
 | |
|     name = $0
 | |
|     match(name, /^[^<]*<[^<>]*>/); name = substr(name, RSTART + RLENGTH)
 | |
|     match(name, /<.*$/); name = substr(name, 1, RSTART - 1)
 | |
| }
 | |
| found_element && $0 ~ /<hostName/ {
 | |
|     #hostName = gensub("^.*>([^<]*)<.*$", "\\1", 1)
 | |
|     hostName = $0
 | |
|     match(hostName, /^[^<]*<[^<>]*>/); hostName = substr(hostName, RSTART + RLENGTH)
 | |
|     match(hostName, /<.*$/); hostName = substr(hostName, 1, RSTART - 1)
 | |
| }
 | |
| 
 | |
| found_element && $0 ~ /<\/element/ {
 | |
|     if ('
 | |
| 
 | |
|     local instance notfirst=
 | |
|     for instance in "$@"; do
 | |
|         script="$script${notfirst:+|| }name == \"$(quote_awk "$instance")\""
 | |
|         notfirst=1
 | |
|     done
 | |
|     script="$script"') {
 | |
|         print "<id type=\"NSNumber\">" id "</id><port type=\"NSNumber\">" port "</port><applicationName type=\"NSString\">" name "</applicationName><hostName type=\"NSString\">" hostName "</hostName>"
 | |
|     }
 | |
|     found_element = 0
 | |
|     next
 | |
| }
 | |
| 
 | |
| found_element {
 | |
|     match($0, /^[\t]*/)
 | |
|     $0 = substr($0, RSTART + RLENGTH)
 | |
|     data = data $0
 | |
| }
 | |
| 
 | |
| found_instances && $0 ~ /<\/instanceArray/ {
 | |
|     found_element = 0
 | |
|     found_instances = 0
 | |
| }
 | |
| '
 | |
| 
 | |
|     awk <"$WOCONFIGURATION/SiteConfig.xml" "$script"
 | |
| }
 | |
| 
 | |
| function get_autostart() {
 | |
|     # Afficher le chemin vers le fichier $WOCONFIGURATION/AutoStart.txt
 | |
|     echo "$WOCONFIGURATION/AutoStart.txt"
 | |
| }
 | |
| 
 | |
| function apply_autostart_order() {
 | |
|     # Reordonner les instances du tableau $1 selon la liste données dans le
 | |
|     # fichier $WOCONFIGURATION/AutoStart.txt
 | |
|     local autostart_="$(get_autostart)"
 | |
|     [ -r "$autostart_" ] || return
 | |
| 
 | |
|     local -a oinsts_ srcname_ dest_
 | |
|     local oinst_
 | |
|     array_from_lines oinsts_ "$(<"$autostart_" filter_conf)"
 | |
| 
 | |
|     srcname_="$1"
 | |
|     for oinst_ in "${oinsts_[@]}"; do
 | |
|         if array_contains "$srcname_" "$oinst_"; then
 | |
|             array_add dest_ "$oinst_"
 | |
|             array_del "$srcname_" "$oinst_"
 | |
|         fi
 | |
|     done
 | |
|     array_extend dest_ "$srcname_"
 | |
| 
 | |
|     array_copy "$srcname_" dest_
 | |
| }
 | |
| 
 | |
| ######################################################################
 | |
| # Services basés sur wotaskd, sans mot de passe
 | |
| 
 | |
| function wotaskd_dump_woconfig() {
 | |
|     # afficher la configuration de wotaskd sur l'hôte $1 (par défaut
 | |
|     # $FQDNHOST). Il s'agit de la liste, pour chacune des instances, des
 | |
|     # minstances qui tournent actuellement.
 | |
|     # cette fonction n'a pas besoin de mot de passe pour fonctionner.
 | |
|     local host="${1:-$FQDNHOST}"
 | |
|     dumpurl -X "http://$host:1085/cgi-bin/WebObjects/wotaskd.woa/wa/woconfig"
 | |
| }
 | |
| 
 | |
| function wotaskd_dump_running_instances() {
 | |
|     wotaskd_dump_woconfig | awk "$AWK_FUNCTIONS"'
 | |
| BEGIN {
 | |
|     in_application = 0
 | |
| }
 | |
| 
 | |
| !in_application && $0 ~ /<application / {
 | |
|     in_application = 1
 | |
|     name = get_attr_value("name", $0)
 | |
|     id = ""
 | |
|     port = ""
 | |
|     host = ""
 | |
| }
 | |
| in_application && $0 ~ /<\/application>/ { in_application = 0 }
 | |
| 
 | |
| in_application && $0 ~ /<instance / {
 | |
|     id = get_attr_value("id", $0)
 | |
|     port = get_attr_value("port", $0)
 | |
|     host = get_attr_value("host", $0)
 | |
|     print name " " id " " port " " host
 | |
| }'
 | |
| }
 | |
| 
 | |
| function wotaskd_get_running_instances() {
 | |
|     # Obtenir la liste des instances (une par ligne) qui tournent actuellement
 | |
|     # sur l'hôte $1 (par défaut $FQDNHOST).
 | |
|     # cette fonction n'a pas besoin de mot de passe pour fonctionner.
 | |
|     wotaskd_dump_woconfig "$1" | awk '
 | |
| $0 ~ /<application/ {
 | |
|     #print gensub("^.*name=\"([^\"]*)\".*$", "\\1", 1)
 | |
|     match($0, /^.*name="/); $0 = substr($0, RSTART + RLENGTH)
 | |
|     match($0, /".*$/); $0 = substr($0, 1, RSTART - 1)
 | |
|     print
 | |
| }
 | |
| '
 | |
| }
 | |
| 
 | |
| ######################################################################
 | |
| # Services basés sur wotaskd, avec mot de passe
 | |
| # note: pour le fonctions de cette section, si un mot de passe est configuré
 | |
| # pour le moniteur, la fonction doit être appelée avec le bon mot de passe
 | |
| # (option -P). Pour obtenir le mot de passe, on peut utiliser la fonction
 | |
| # siteconf_get_monitor_password()
 | |
| 
 | |
| function _getopt_host_and_password() {
 | |
|     # obtenir du code qui initialise l'hôte et le mot de passe à partir des
 | |
|     # arguments de la ligne de commande. Il faut utiliser ce code de cette
 | |
|     # manière:
 | |
|     #    eval "$(_getopt_host_and_password)"
 | |
|     # l'option -h permet de spécifier l'hôte ($FQDNHOST par défaut)
 | |
|     # l'option -P permet de spécifier le mot de passe
 | |
|     # l'option -o permet de spécifier un fichier de sortie
 | |
| 
 | |
|     echo '
 | |
| local done= host="$FQDNHOST" password="$(siteconf_get_monitor_password)" outputfile="/dev/null"
 | |
| while [ -n "$1" ]; do
 | |
|     case "$1" in
 | |
|     --)
 | |
|         shift
 | |
|         done=1
 | |
|         ;;
 | |
| 
 | |
|     -h)
 | |
|         shift
 | |
|         host="$1"
 | |
|         ;;
 | |
| 
 | |
|     -P)
 | |
|         shift
 | |
|         password="$1"
 | |
|         ;;
 | |
| 
 | |
|     -o)
 | |
|         shift
 | |
|         outputfile="$1"
 | |
|         ;;
 | |
| 
 | |
|     -*)
 | |
|         #ewarn "option non reconnue: $1"
 | |
|         ;;
 | |
| 
 | |
|     *)
 | |
|         done=1
 | |
|         ;;
 | |
|     esac
 | |
|     [ -n "$done" ] && break
 | |
|     shift
 | |
| done
 | |
| '
 | |
| }
 | |
| 
 | |
| function wotaskd_command() {
 | |
|     # lancer une commande wotask $1 avec le mot de passe $2 sur l'hôte $3
 | |
|     dumpurl -X -m POST "$1" ${2:+-H password "$2"} "http://$3:1085/cgi-bin/WebObjects/wotaskd.woa/wa/monitorRequest" ||
 | |
|     echo "ERROR: mot de passe incorrect ou dumpurl non disponible"
 | |
| }
 | |
| 
 | |
| function wotaskd_dump_instances() {
 | |
|     # afficher la configuration des mapplications (instances) de wotaskd sur un
 | |
|     # hôte. Il s'agit de la liste des instances qui sont configurées.
 | |
|     eval "$(_getopt_host_and_password)"
 | |
|     wotaskd_command '<monitorRequest type="NSDictionary"><queryWotaskd type="NSString">APPLICATION</queryWotaskd></monitorRequest>' "$password" "$host"
 | |
| }
 | |
| 
 | |
| function wotaskd_dump_minstances() {
 | |
|     # afficher la configuration des minstances de wotaskd sur un hôte. Il
 | |
|     # s'agit de la liste des instances qui sont configurées
 | |
|     eval "$(_getopt_host_and_password)"
 | |
|     wotaskd_command '<monitorRequest type="NSDictionary"><queryWotaskd type="NSString">INSTANCE</queryWotaskd></monitorRequest>' "$password" "$host"
 | |
| }
 | |
| 
 | |
| function dump_minstances_stats_from_stdin() {
 | |
|     # Afficher les statistiques pour les instances de la ligne de commande à
 | |
|     # partir de la sortie de wotaskd_dump_minstances
 | |
|     # Les lignes affichées sont de la forme:
 | |
|     #   applicationName id port runningState activeSessions transactions startedAt avgTransactionTime averageIdlePeriod
 | |
|     script="$AWK_FUNCTIONS"'
 | |
| BEGIN {
 | |
|     in_instances = 0
 | |
| }
 | |
| 
 | |
| !in_instances && $0 ~ /<instanceResponse / { in_instances = 1 }
 | |
| in_instances && $0 ~ /<\/instanceResponse>/ { in_instances = 0 }
 | |
| 
 | |
| in_instances && $0 ~ /<element / {
 | |
|     applicationName = ""
 | |
|     id = ""
 | |
|     port = ""
 | |
|     runningState = ""
 | |
|     activeSessions = ""
 | |
|     transactions = ""
 | |
|     startedAt = ""
 | |
|     avgTransactionTime = ""
 | |
|     averageIdlePeriod = ""
 | |
| }
 | |
| in_instances && $0 ~ /<\/element>/ {
 | |
|     if (applicationName != ""'
 | |
|     local mapp filter
 | |
|     for mapp in "$@"; do
 | |
|         filter="${filter:+$filter || }applicationName == \"$mapp\""
 | |
|     done
 | |
|     [ -n "$filter" ] && filter="&& ($filter)"
 | |
|     script="$script$filter"') {
 | |
|         print applicationName " " id " " port " " runningState " " activeSessions " " transactions " " startedAt " " avgTransactionTime " " averageIdlePeriod
 | |
|     }
 | |
| }
 | |
| 
 | |
| in_instances && $0 ~ /<applicationName / { applicationName = get_value($0) }
 | |
| in_instances && $0 ~ /<id / { id = get_value($0) }
 | |
| in_instances && $0 ~ /<port / { port = get_value($0) }
 | |
| in_instances && $0 ~ /<runningState / { runningState = get_value($0) }
 | |
| in_instances && $0 ~ /<activeSessions / { activeSessions = get_value($0) }
 | |
| in_instances && $0 ~ /<transactions / { transactions = get_value($0) }
 | |
| in_instances && $0 ~ /<startedAt / { startedAt = get_value($0) }
 | |
| in_instances && $0 ~ /<avgTransactionTime / { avgTransactionTime = get_value($0) }
 | |
| in_instances && $0 ~ /<averageIdlePeriod / { averageIdlePeriod = get_value($0) }
 | |
| '
 | |
|     uawk -v minst="$1" "$script"
 | |
| }
 | |
| 
 | |
| function wotaskd_get_configured_instances() {
 | |
|     # afficher la liste des instances configurées sur un hôte.
 | |
|     eval "$(_getopt_host_and_password)"
 | |
| 
 | |
|     wotaskd_dump_instances -h "$host" -P "$password" | awk '
 | |
| $0 ~ /<name/ {
 | |
|     #print gensub("^.*>([^<]*)<.*$", "\\1", 1)
 | |
|     match($0, /^[^<]*<[^<>]*>/); $0 = substr($0, RSTART + RLENGTH)
 | |
|     match($0, /<.*$/); $0 = substr($0, 1, RSTART - 1)
 | |
|     print
 | |
| }
 | |
| '
 | |
| }
 | |
| 
 | |
| function wotaskd_command_instances_from_stdin() {
 | |
|     # lancer une commande pour les instances avec les lignes lues sur stdin
 | |
|     eval "$(_getopt_host_and_password)"
 | |
| 
 | |
|     local COMMAND="$1"; shift
 | |
|     wotaskd_command "$(
 | |
| echo '<monitorRequest type="NSDictionary"><commandWotaskd type="NSArray"><element type="NSString">'"$COMMAND"'</element>'
 | |
| while read element; do
 | |
|     echo '<element type="NSDictionary">'"$element"'</element>'
 | |
| done
 | |
| echo '</commandWotaskd></monitorRequest>'
 | |
| )" "$password" "$host" >&"$outputfile"
 | |
| }
 | |
| 
 | |
| function wotaskd_update_instances_from_stdin() {
 | |
|     # Metttre à jour les instances avec les lignes lues sur stdin
 | |
|     eval "$(_getopt_host_and_password)"
 | |
| 
 | |
|     wotaskd_command "$(
 | |
| echo '<monitorRequest type="NSDictionary"><updateWotaskd type="NSDictionary"><configure type="NSDictionary"><instanceArray type="NSArray">'
 | |
| while read element; do
 | |
|     echo '<element type="NSDictionary">'"$element"'</element>'
 | |
| done
 | |
| echo '</instanceArray></configure></updateWotaskd></monitorRequest>'
 | |
| )" "$password" "$host" >&"$outputfile"
 | |
| }
 |