for creole's zephir2 branch
This commit is contained in:
344
lib/eole/diagnose.sh
Normal file
344
lib/eole/diagnose.sh
Normal file
@ -0,0 +1,344 @@
|
||||
. /usr/lib/eole/ihm.sh
|
||||
|
||||
len_pf=26
|
||||
|
||||
Inactif() {
|
||||
printf ". %${len_pf}s => " "$1"
|
||||
EchoOrange "Désactivé"
|
||||
}
|
||||
|
||||
NoConfig() {
|
||||
printf ". %${len_pf}s => " "$1"
|
||||
EchoOrange "Non configuré"
|
||||
}
|
||||
|
||||
TestIP() {
|
||||
len=$((len_pf-7))
|
||||
printf "%-9s %${len}s => " "$2:" "$1"
|
||||
/usr/bin/fping -t50 -r2 $1 > /dev/null 2>&1
|
||||
if [ $? -eq 0 ]
|
||||
then
|
||||
EchoVert "Ok"
|
||||
else
|
||||
EchoRouge "Erreur"
|
||||
fi
|
||||
}
|
||||
|
||||
TestIP2() {
|
||||
# présentation normale ;)
|
||||
printf ". %${len_pf}s => " "$2"
|
||||
/usr/bin/fping -t50 -r2 $1 > /dev/null 2>&1
|
||||
if [ $? -eq 0 ]
|
||||
then
|
||||
EchoVert "Ok"
|
||||
else
|
||||
EchoRouge "Erreur"
|
||||
fi
|
||||
}
|
||||
|
||||
TestARP() {
|
||||
if [ -z "$3" ]; then
|
||||
# recherche de l'interface reseau + test
|
||||
interface=`ip route get $1 2> /dev/null|sed -ne '/ via /! s/^.* dev \([^ ]\+\) \+src \+.*$/\\1/p;Q'`
|
||||
[ "$interface" = "" ] && EchoRouge " Erreur interne impossible de determiner l'interface"
|
||||
/sbin/ifconfig $interface > /dev/null 2>&1
|
||||
[ ! $? = 0 ] && EchoRouge " Erreur interne impossible de determiner l'interface"
|
||||
else
|
||||
interface=$3
|
||||
fi
|
||||
|
||||
# utilisation d'arping
|
||||
printf ". %${len_pf}s => " "$2"
|
||||
/usr/bin/arping -w 1 -c 1 -f $1 -I $interface > /dev/null 2>&1
|
||||
if [ $? -eq 0 ]
|
||||
then
|
||||
EchoVert "Ok"
|
||||
else
|
||||
EchoRouge "Erreur"
|
||||
fi
|
||||
}
|
||||
|
||||
TestService() {
|
||||
printf ". %${len_pf}s => " "$1"
|
||||
CMD="/usr/bin/tcpcheck 2 $2 2> /dev/null | grep -q \" alive\""
|
||||
if [ ! "$3" = "" ]; then
|
||||
CreoleRun "$CMD" "$3"
|
||||
ret=$?
|
||||
else
|
||||
CreoleRun "$CMD"
|
||||
ret=$?
|
||||
fi
|
||||
if [ $ret -eq 0 ]
|
||||
then
|
||||
EchoVert "Ok"
|
||||
return 0
|
||||
else
|
||||
EchoRouge "Erreur"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
TestUDP() {
|
||||
printf ". %${len_pf}s => " "$1"
|
||||
CMD="netstat -unl | grep -q \":$2 \""
|
||||
if [ ! "$3" = "" ]; then
|
||||
CreoleRun "$CMD" "$3"
|
||||
ret=$?
|
||||
else
|
||||
CreoleRun "$CMD"
|
||||
ret=$?
|
||||
fi
|
||||
if [ $ret -eq 0 ]
|
||||
then
|
||||
EchoVert "Ok"
|
||||
return 0
|
||||
else
|
||||
EchoRouge "Erreur"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
TestPid() {
|
||||
printf ". %${len_pf}s => " "$1"
|
||||
pidof "$2" > /dev/null
|
||||
if [ $? -eq 0 ];then
|
||||
EchoVert "Ok"
|
||||
return 0
|
||||
else
|
||||
EchoRouge "Erreur"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
TestDns() {
|
||||
printf ". %${len_pf}s => " "DNS $1"
|
||||
/usr/bin/host -W2 -tA $2 $1 > /dev/null 2>&1
|
||||
if [ $? -eq 0 ];then
|
||||
EchoVert "Ok"
|
||||
return 0
|
||||
else
|
||||
EchoRouge "Erreur"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
TestNTP() {
|
||||
printf ". %${len_pf}s => " "Statut NTP"
|
||||
/usr/bin/ntpstat > /dev/null 2>&1
|
||||
if [ $? -eq 0 ]
|
||||
then
|
||||
EchoVert "Synchronisé"
|
||||
elif [ $? -eq 1 ]
|
||||
then
|
||||
EchoRouge "Désynchronisé"
|
||||
for ntp in $1;do
|
||||
printf ". %${len_pf}s => " "NTP $ntp"
|
||||
/usr/sbin/ntpdate -q $ntp > /dev/null 2>&1
|
||||
if [ $? -eq 0 ]; then
|
||||
EchoVert "Ok"
|
||||
else
|
||||
EchoRouge "Erreur"
|
||||
fi
|
||||
done
|
||||
else
|
||||
EchoRouge "Erreur"
|
||||
fi
|
||||
}
|
||||
|
||||
TestHTTPPage() {
|
||||
printf ". %${len_pf}s => " "$1"
|
||||
/usr/bin/httping -g $2 -c 1 > /dev/null 2>&1
|
||||
if [ $? -eq 0 ]
|
||||
then
|
||||
EchoVert "Ok"
|
||||
else
|
||||
EchoRouge "Erreur"
|
||||
fi
|
||||
}
|
||||
|
||||
TestWeb() {
|
||||
WGET_OPTIONS="-t2 --connect-timeout=3 --delete-after"
|
||||
WARN_MSG=""
|
||||
PROXIES_TESTS="PROXY:"
|
||||
if [ "$(CreoleGet activer_proxy_client)" == "oui" ]
|
||||
then
|
||||
PROXIES_TESTS="PROXY:http://$(CreoleGet proxy_client_adresse):$(CreoleGet proxy_client_port)"
|
||||
fi
|
||||
|
||||
for PROXY_LOOP in $PROXIES_TESTS
|
||||
do
|
||||
PROXY=$(echo $PROXY_LOOP | sed -e 's/^PROXY://')
|
||||
export http_proxy=$PROXY
|
||||
if [ -n "$PROXY" ]
|
||||
then
|
||||
Proxy=` echo $http_proxy | sed -e 's!http://!!' `
|
||||
TestService "Serveur Proxy" $Proxy
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
#EchoRouge "Erreur"
|
||||
#return 1
|
||||
export http_proxy=
|
||||
fi
|
||||
fi
|
||||
# Test 1er site
|
||||
wget -q $WGET_OPTIONS $2
|
||||
if [ $? -eq 0 ]
|
||||
then
|
||||
printf ". %${len_pf}s => " "$1"
|
||||
EchoVert "Ok"
|
||||
return 0
|
||||
fi
|
||||
if [ "$3" != "" ]
|
||||
then
|
||||
# Test second site
|
||||
msg=$(wget -nv $WGET_OPTIONS $3 2>&1)
|
||||
ret=$?
|
||||
if [ $ret -eq 0 ]
|
||||
then
|
||||
printf ". %${len_pf}s => " "$1"
|
||||
EchoVert "Ok"
|
||||
return 0
|
||||
elif [ $ret -eq 8 ]
|
||||
then
|
||||
WARN_MSG="$msg"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
printf ". %${len_pf}s => " "$1"
|
||||
if [ -n "$WARN_MSG" ]
|
||||
then
|
||||
EchoOrange "$WARN_MSG"
|
||||
else
|
||||
EchoRouge "Erreur"
|
||||
fi
|
||||
return 1
|
||||
}
|
||||
|
||||
TestCerts() {
|
||||
CERTFILE=$1
|
||||
|
||||
# CODEERROR and MESSAGE not used now
|
||||
# ref #22341
|
||||
#CODEERROR=$2
|
||||
#man verify for CODEERROR
|
||||
#MESSAGE=$3
|
||||
#
|
||||
|
||||
if [ -z "$4" ]; then
|
||||
echo "$CERTFILE" | grep -q '^/etc/ipsec.d/'
|
||||
[ $? = 0 ] && CAFILE=/etc/ipsec.d/cacerts/CertifCa.pem || CAFILE=/etc/ssl/certs/ca.crt
|
||||
else
|
||||
# Fichier de CA spécifié, on désactive l'utilisation
|
||||
# des autres autorités installées sur le système.
|
||||
CAFILE=$4
|
||||
fi
|
||||
FAKE_CAPATH="/usr/lib/ssl/no_certs"
|
||||
TMPFILE=$(mktemp)
|
||||
mkdir -p "$FAKE_CAPATH"
|
||||
if [[ -d ${CAFILE} ]]
|
||||
then
|
||||
cat ${CAFILE}/* > ${TMPFILE}
|
||||
CAFILE=${TMPFILE}
|
||||
fi
|
||||
ssl_cmd="/usr/bin/openssl verify -CAfile $CAFILE -CApath $FAKE_CAPATH -purpose any $CERTFILE"
|
||||
printf ". %${len_pf}s => " `basename $CERTFILE`
|
||||
if [ -e $CAFILE ]; then
|
||||
if [ -e $CERTFILE ]; then
|
||||
if [ ! -s $CAFILE ] || [ ! -s $CERTFILE ]; then
|
||||
EchoRouge "fichier vide"
|
||||
else
|
||||
sslmsg="`$ssl_cmd 2>&1`"
|
||||
ERR_MSG=$(printf "$sslmsg" |grep "^error [0-9]* at ")
|
||||
RETCODE=$?
|
||||
# supression du répertoire temporaire
|
||||
rm -rf "$FAKE_CAPATH"
|
||||
if [ $RETCODE -eq 0 ]; then
|
||||
#EchoRouge "Erreur openssl"
|
||||
ERR_MSG=$(cut -d':' -f2 <<< $ERR_MSG)
|
||||
EchoRouge "Erreur : $ERR_MSG"
|
||||
return 1
|
||||
else
|
||||
EchoVert "Ok"
|
||||
printf ". %${len_pf}s => " "DNS reconnus"
|
||||
openssl x509 -in $CERTFILE -noout -text \
|
||||
| sed -n -e '/X509v3 Subject Alternative Name/{n;p;}' \
|
||||
| sed -e 's/^ *//' -e 's/DNS://g' -e 's/,//g' \
|
||||
-e 's/IP Address:[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+//g'
|
||||
return 0
|
||||
fi
|
||||
fi
|
||||
else
|
||||
EchoRouge "$CERTFILE inexistant"
|
||||
fi
|
||||
else
|
||||
EchoRouge "$CAFILE inexistant"
|
||||
fi
|
||||
}
|
||||
|
||||
TestConnexion() {
|
||||
connexions=( `/bin/netstat -a --$2 -p -n | grep $1 | grep $3` )
|
||||
retour=1
|
||||
if [ "$2" = "tcp" ]; then
|
||||
sens=$4
|
||||
|
||||
if [ "$sens" = "reception" ]; then
|
||||
pos=3
|
||||
incr=2
|
||||
cond='LISTEN'
|
||||
elif [ "$sens" = "envoi" ]; then
|
||||
pos=4
|
||||
incr=1
|
||||
cond='ESTABLISHED'
|
||||
fi
|
||||
for indice in `seq $pos 7 ${#connexions[*]}`; do
|
||||
if [[ ${connexions[$indice]} == *$3* ]]; then
|
||||
if [[ ${connexions[$(( $indice + $incr ))]} == $cond ]]; then
|
||||
retour=0
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
elif [ "$2" = "udp" ]; then
|
||||
if [ ${#connexions[*]} -gt 1 ]; then
|
||||
retour=0
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ $retour == 0 ]]; then
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
#
|
||||
# @NAME : TestMailQ
|
||||
# @AIM : Tester si la file d'attente du mailer a des messages "frozen"
|
||||
# @PARAMS : None
|
||||
#
|
||||
function TestMailQ()
|
||||
{
|
||||
ckqueue="exiqgrep -i"
|
||||
# Nombre de messages "Frozen"
|
||||
printf ". %${len_pf}s => " "File d'attente"
|
||||
mailq=$(CreoleRun "${ckqueue} 2>&1 | wc -l" mail)
|
||||
if [[ ${mailq} -eq 0 ]]
|
||||
then
|
||||
EchoVert "0 message"
|
||||
else
|
||||
EchoOrange "${mailq} message(s)"
|
||||
fi
|
||||
|
||||
frozen="exiqgrep -z -i"
|
||||
# Nombre de messages "Frozen"
|
||||
printf ". %${len_pf}s => " "Messages \"Frozen\""
|
||||
mailfrz=$(CreoleRun "${frozen} 2>&1 | wc -l" mail)
|
||||
if [[ ${mailfrz} -eq 0 ]]
|
||||
then
|
||||
EchoVert "0 message"
|
||||
else
|
||||
EchoOrange "${mailfrz} message(s)"
|
||||
fi
|
||||
}
|
132
lib/eole/ihm.sh
Normal file
132
lib/eole/ihm.sh
Normal file
@ -0,0 +1,132 @@
|
||||
#!/bin/bash
|
||||
|
||||
TPUT=/usr/bin/tput
|
||||
#test si TPUT est utilisable
|
||||
if [ ! "$TERM" = "" ] && $TPUT hpa 60 >/dev/null 2>&1 && $TPUT setaf 1 >/dev/null 2>&1; then
|
||||
FANCYTTY=1
|
||||
else
|
||||
FANCYTTY=0
|
||||
fi
|
||||
|
||||
Pause() {
|
||||
if [ "$ModeTxt" == "yes" ];then
|
||||
echo
|
||||
elif [ "$ModeEad" == "yes" ];then
|
||||
echo "<br>"
|
||||
else
|
||||
[ $FANCYTTY = 1 ] && $TPUT setaf 6
|
||||
echo " Appuyez sur Entrée pour continuer ..."
|
||||
[ $FANCYTTY = 1 ] && $TPUT sgr0
|
||||
read BiDon
|
||||
fi
|
||||
}
|
||||
|
||||
Echo() {
|
||||
if [ "$ModeEad" != "yes" ];
|
||||
then
|
||||
echo "$1"
|
||||
else
|
||||
echo "$1<br>"
|
||||
fi
|
||||
}
|
||||
|
||||
EchoColor() {
|
||||
if [ "$ModeTxt" = "yes" ];then
|
||||
echo "$1"
|
||||
elif [ "$ModeEad" = "yes" ];then
|
||||
echo "<FONT color=\"$3\"> $1 </FONT><br>"
|
||||
else
|
||||
[ "$FANCYTTY" = 1 ] && $TPUT setaf $2
|
||||
echo "$1"
|
||||
[ "$FANCYTTY" = 1 ] && $TPUT sgr0
|
||||
fi
|
||||
}
|
||||
|
||||
EchoRouge() {
|
||||
EchoColor "$1" "1" "red"
|
||||
}
|
||||
|
||||
EchoVert() {
|
||||
EchoColor "$1" "2" "green"
|
||||
}
|
||||
|
||||
EchoOrange() {
|
||||
EchoColor "$1" "3" "orange"
|
||||
}
|
||||
|
||||
EchoBleu() {
|
||||
EchoColor "$1" "4" "blue"
|
||||
}
|
||||
|
||||
EchoMagenta() {
|
||||
EchoColor "$1" "5" "magenta"
|
||||
}
|
||||
|
||||
EchoCyan() {
|
||||
EchoColor "$1" "6" "cyan"
|
||||
}
|
||||
|
||||
EchoBlanc() {
|
||||
EchoColor "$1" "7" "white"
|
||||
}
|
||||
|
||||
EchoGras() {
|
||||
if [ "$ModeTxt" == "yes" ];then
|
||||
echo "$1"
|
||||
elif [ "$ModeEad" == "yes" ];then
|
||||
echo "<b> $1 </b><br>"
|
||||
else
|
||||
[ $FANCYTTY = 1 ] && $TPUT bold
|
||||
echo "$1"
|
||||
[ $FANCYTTY = 1 ] && $TPUT sgr0
|
||||
fi
|
||||
}
|
||||
|
||||
Clear() {
|
||||
if [ "$ModeEad" != "yes" -a "$ModeTxt" != "yes" ];then
|
||||
clear
|
||||
fi
|
||||
}
|
||||
|
||||
Question_ouinon() {
|
||||
#attention, il faut synchroniser les modifications avec /usr/share/pyshared/pyeole/ihm.py
|
||||
question=$1
|
||||
[ "$2" = "" ] && interactive='True' || interactive=$2
|
||||
[ "$3" = "" ] && default="non" || default=$3
|
||||
[ "$4" = "" ] && level="info" || level=$4
|
||||
[ "$5" = "" ] && default_uninteractive=$default || default_uninteractive=$5
|
||||
[ ! "$interactive" = "True" ] && [ ! "$interactive" = "False" ] && echo "Question_ouinon : interactive doit être True ou False" && exit 1
|
||||
[ ! "$default" = "oui" ] && [ ! "$default" = "non" ] && echo "Question_ouinon : default doit etre oui ou non" && exit 1
|
||||
[ ! "$default_uninteractive" = "oui" ] && [ ! "$default_uninteractive" = "non" ] && echo "Question_ouinon : default_uninteractive doit etre oui ou non" && exit 1
|
||||
[ ! "$level" = "info" ] && [ ! "$level" = "warn" ] && [ ! "$level" = "err" ] && echo "Question_ouinon : level doit etre info, warn ou err" && exit 1
|
||||
#non interactive
|
||||
if [ "$interactive" = "False" ]; then
|
||||
Rep=default_uninteractive
|
||||
else
|
||||
question="$question [oui/non]"
|
||||
if [ $level = "info" ]; then
|
||||
echo "$question"
|
||||
elif [ $level = "warn" ]; then
|
||||
EchoOrange "$question"
|
||||
else
|
||||
EchoRouge "$question"
|
||||
fi
|
||||
echo -n "[$default] : "
|
||||
read Rep
|
||||
#passe en minuscule
|
||||
Rep=`echo $Rep | tr A-Z a-z`
|
||||
fi
|
||||
if [ "$default" = "non" ]; then
|
||||
if [ "$Rep" = "oui" -o "$Rep" = "o" -o "$Rep" = "yes" -o "$Rep" = "y" ];then
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
else
|
||||
if [ "$Rep" = "non" -o "$Rep" = "n" -o "$Rep" = "no" ];then
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
fi
|
||||
fi
|
||||
}
|
64
lib/eole/utils.sh
Normal file
64
lib/eole/utils.sh
Normal file
@ -0,0 +1,64 @@
|
||||
. /usr/lib/eole/ihm.sh
|
||||
|
||||
TestFile()
|
||||
{
|
||||
[ -f "$1" ] && return 0
|
||||
EchoRouge "* Erreur : fichier $1 absent"
|
||||
echo
|
||||
return 1
|
||||
}
|
||||
|
||||
TestDir()
|
||||
{
|
||||
[ -d "$1" ] && return 0
|
||||
EchoRouge "* Erreur : répertoire $1 absent"
|
||||
echo
|
||||
return 1
|
||||
}
|
||||
|
||||
#
|
||||
# @NAME : TestCreoled
|
||||
# @AIM : Tester si Creoled fonctionne
|
||||
# @PARAMS : None
|
||||
#
|
||||
function TestCreoled()
|
||||
{
|
||||
var_name='eole_version'
|
||||
if ! CreoleGet ${var_name} > /dev/null
|
||||
then
|
||||
EchoRouge "* Erreur : Creoled n'est pas actif"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
function wait_true_retcode()
|
||||
{
|
||||
# teste une commande en boucle jusqu'à ret_code=0
|
||||
# ou $tries boucles
|
||||
# exemple : wait_true_retcode "texte" "commande param1 param2"
|
||||
tries=120
|
||||
ret_code=1
|
||||
i=0
|
||||
echo -n $1
|
||||
until [ $ret_code -eq 0 ] || [ $i -ge $tries ]
|
||||
do
|
||||
i=`expr $i + 1`
|
||||
sleep 1
|
||||
eval $2
|
||||
ret_code=$?
|
||||
echo -n "."
|
||||
done
|
||||
echo
|
||||
if [ $i -eq $tries ]
|
||||
then
|
||||
EchoRouge "L'action '$1' n'a pas aboutie."
|
||||
exit $ret_code
|
||||
fi
|
||||
}
|
||||
|
||||
function only_root()
|
||||
{
|
||||
[ ! $(id -u) = 0 ] && echo "$0 ne peut être exécuté qu'en root" && exit 1
|
||||
}
|
||||
|
||||
|
28
lib/eole/zephir.sh
Normal file
28
lib/eole/zephir.sh
Normal file
@ -0,0 +1,28 @@
|
||||
# Les Fonctions Zephir
|
||||
# Trois parametres
|
||||
# Code Etat (ex INIT;FIN)
|
||||
# Message (Libéllé)
|
||||
# Type de procédure(ex MAj,RECONFIGURE, INSTANCE)
|
||||
|
||||
ProgZephir=${RepZephir="/usr/share/zephir/scripts"}
|
||||
|
||||
Zlog(){
|
||||
$RepZephir/Zlog.py "$1" "$2" "$3"
|
||||
}
|
||||
|
||||
Zephir() {
|
||||
$RepZephir/Zephir.py "$1" "$2" "$3"
|
||||
}
|
||||
|
||||
# Verifie si une fonction est bloquée par Zephir
|
||||
# Une erreur retourne OK pour ne pas bloquer la procédure
|
||||
Init() {
|
||||
ProgZephir=$RepZephir/Zinit.py
|
||||
if [ -x $ProgZephir ];then
|
||||
$ProgZephir $1
|
||||
return $?
|
||||
else
|
||||
echo "Avertissement : $ProgZephir non trouvé"
|
||||
return 0
|
||||
fi
|
||||
}
|
Reference in New Issue
Block a user