#!/bin/bash declare distexe_env_is_subshell; declare distexe_env_file="${HOME}/.distexe_env"; #-----[ distexe_env_usage ]--------------------------------- function distexe_env_usage() { echo "${0} option"; echo " -h : print this message"; echo " -d : load default DISTEXE_HOSTS"; echo " -t : from DISTEXE_HOSTS, test hosts"; echo " -s : save DISTEXE_HOSTS in file ${distexe_env_file} (if -t, save after test host)"; echo " -l : load file ${distexe_env_file} and set DISTEXE_HOSTS"; echo ""; echo " 2 methode to set DISTEXE_HOSTS : "; echo " * 1) \". $0\""; echo " * 2) DISTEXE_HOSTS=\$($0);"; # exit 1; } #-----[ distexe_env_default ]------------------------------- function distexe_env_default () { export DISTEXE_HOSTS=""; export DISTEXE_HOSTS="${DISTEXE_HOSTS} bip/4" ; # serveur recherche export DISTEXE_HOSTS="${DISTEXE_HOSTS} bop/4" ; # serveur recherche export DISTEXE_HOSTS="${DISTEXE_HOSTS} houla/8" ; # serveur recherche export DISTEXE_HOSTS="${DISTEXE_HOSTS} hop/8" ; # serveur recherche export DISTEXE_HOSTS="${DISTEXE_HOSTS} fox/2" ; # serveur recherche export DISTEXE_HOSTS="${DISTEXE_HOSTS} trot/2" ; # serveur recherche #export DISTEXE_HOSTS="${DISTEXE_HOSTS} polka/1" ; # serveur recherche - réservé #export DISTEXE_HOSTS="${DISTEXE_HOSTS} debussy/1" ; # serveur enseignement export DISTEXE_HOSTS="${DISTEXE_HOSTS} do/2" ; # serveur recherche export DISTEXE_HOSTS="${DISTEXE_HOSTS} re/2" ; # serveur recherche export DISTEXE_HOSTS="${DISTEXE_HOSTS} mi/2" ; # serveur recherche export DISTEXE_HOSTS="${DISTEXE_HOSTS} fa/2" ; # serveur recherche #export DISTEXE_HOSTS="${DISTEXE_HOSTS} berlioz/1" ; # serveur enseignement - g++ 3.4.6 export DISTEXE_HOSTS="${DISTEXE_HOSTS} roll/1" ; # serveur recherche #export DISTEXE_HOSTS="${DISTEXE_HOSTS} rock/1" ; # serveur recherche - g++ 3.4.6 export DISTEXE_HOSTS="${DISTEXE_HOSTS} waller/1" ; # desktop export DISTEXE_HOSTS="${DISTEXE_HOSTS} lin/1" ; # desktop export DISTEXE_HOSTS="${DISTEXE_HOSTS} eric/1" ; # desktop export DISTEXE_HOSTS="${DISTEXE_HOSTS} amouri/1" ; # desktop #export DISTEXE_HOSTS="${DISTEXE_HOSTS} cherry/1" ; # desktop export DISTEXE_HOSTS="${DISTEXE_HOSTS} gamoudi/1" ; # desktop #export DISTEXE_HOSTS="${DISTEXE_HOSTS} grunge/1" ; # desktop #export DISTEXE_HOSTS="${DISTEXE_HOSTS} mitra/1" ; # desktop #export DISTEXE_HOSTS="${DISTEXE_HOSTS} pronky/1" ; # desktop #export DISTEXE_HOSTS="${DISTEXE_HOSTS} babylone/1" ; # desktop if test ${1} -eq 1; then echo "${DISTEXE_HOSTS}"; fi; } #-----[ distexe_env_load ]---------------------------------- function distexe_env_load () { if test -f ${distexe_env_file}; then DISTEXE_HOSTS=$(cat ${distexe_env_file}); fi; } #-----[ distexe_env_save ]---------------------------------- function distexe_env_save () { echo ${DISTEXE_HOSTS} > ${distexe_env_file}; } #-----[ distexe_env_test ]---------------------------------- function distexe_env_test () { local hosts="${DISTEXE_HOSTS}"; # re init DISTEXE_HOSTS export DISTEXE_HOSTS=""; for line in ${hosts}; do host=$(echo ${line} | cut -d/ -f1); if test ${1} -eq 0; then echo -n " * station : ${host} ... "; fi; # ping host ... ping -w 1 ${host} &> /dev/null; if test "$?" -eq "0"; then # ... if ok, reinsert if test ${1} -eq 0; then echo "online"; fi; export DISTEXE_HOSTS="${DISTEXE_HOSTS} ${line}"; else if test ${1} -eq 0; then echo "offline"; fi; fi; done; if test ${1} -eq 1; then echo "${DISTEXE_HOSTS}"; fi; } #-----[ distexe_env ]--------------------------------------- function distexe_env () { if test "${0}" = "$(basename ${SHELL})"; then distexe_env_is_subshell=0; else distexe_env_is_subshell=1; fi; local exec_distexe_env_default=0; local exec_distexe_env_test=0; local exec_distexe_env_save=0; local exec_distexe_env_load=0; local exec_distexe_env_usage=0; local no_option=1; set -- $(getopt :sldth "$@") for arg do case "$arg" in -d) exec_distexe_env_default=1; no_option=0; ;; -t) exec_distexe_env_test=1; no_option=0; ;; -s) exec_distexe_env_save=1; no_option=0; ;; -l) exec_distexe_env_load=1; no_option=0; ;; -h) exec_distexe_env_usage=1; break; ;; --) if test $no_option -eq 1; then exec_distexe_env_usage=1; fi; break;; esac done if test $exec_distexe_env_usage -eq 1; then distexe_env_usage ${*}; if test ${distexe_env_is_subshell} -eq 1; then exit 1; fi; else if test $exec_distexe_env_default -eq 1; then if test $exec_distexe_env_test -eq 1; then distexe_env_default 0; else distexe_env_default ${distexe_env_is_subshell}; fi; fi; if test $exec_distexe_env_load -eq 1; then distexe_env_load; fi; if test $exec_distexe_env_test -eq 1; then distexe_env_test ${distexe_env_is_subshell}; fi; if test $exec_distexe_env_save -eq 1; then distexe_env_save; fi; fi; unset distexe_env_file; unset distexe_env_is_subshell; } #-----[ Corps ]--------------------------------------------- distexe_env ${*};