#1 Le 29/05/2013, à 22:40
- morane
[RESOLU] Afficher un feu rouge ou un feu vert - etat serveur
Bonsoir,
J'ai fait le petit script suivant qui me dit si mon serveur est en marche ou pas à partir d'un PC client.
#!/bin/bash
# script testant l'ip du serveur et affichant un message s'il est en marche
# et un autre dans le cas contraire
ping -c3 192.168.2.160
TEST=$?
if [ $TEST -ne 0 ]
then
zenity --info\
--text="Le serveur est à l'arret"
else
zenity --info\
--text="Le serveur est en marche"
fi
En fait, j'aimerais que:
le script se lance tout seul toutes les minutes par exemple
le script ne demande pas une réponse ou une validation
le script affiche un feu vert ou un feu rouge en fonction de la réponse
Même si j'ai fait un peu de programmation dans le passé, je découvre les scripts sur Ubuntu, et donc un bon coup de main me débloquerait.
Merci de l'aide
Dernière modification par morane (Le 01/06/2013, à 00:15)
Ubuntu 18.04 et 20.04 MATE installés en dual boot avec Seven et Win 8 sur plusieurs PC différents
Un serveur raid avec Ubuntu 18.04
Bricole sur Ubuntu depuis la version 7.04
Hors ligne
#2 Le 29/05/2013, à 23:48
- Zakhar
Re : [RESOLU] Afficher un feu rouge ou un feu vert - etat serveur
Tu ne penses pas que ça risque d'être assez pénible pour toi de prendre une fenêtre modale dans la figure toutes les minutes !..
Du coup, comme à chaque fois, il vaudrait mieux affiner ton besoin.
Sinon:
-1) Tu fais un "cron"
-2) Si tu tiens à avoir une grosse fenêtre modale... regarde les options de Zenity, il y a une option "time-out" qui va fermer automatiquement la fenêtre même si tu ne réponds pas. Mais probablement tu voudrais plutôt une notification (notify-send) voire même seulement une notification quand ça va mal.
-3) Pour ça tu peux plutôt utiliser les notifications de Zenity. On peut changer l'icone qui s'affiche... mais faut fouiller un peu, je n'ai pas en tête l'option !
"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)
Hors ligne
#3 Le 30/05/2013, à 03:16
- Otyugh
Re : [RESOLU] Afficher un feu rouge ou un feu vert - etat serveur
S'il se lance pas à une heure précise, ce serait pas plus "intuitif" de juste utiliser une "while true" et un "sleep 60" dedans ? (n'y connaissant pas grand chose en "comment bien faire" ^^)
Hors ligne
#4 Le 30/05/2013, à 08:44
- morane
Re : [RESOLU] Afficher un feu rouge ou un feu vert - etat serveur
Bonjour à tous,
Effectivement Zakhar, après avoir écrit ce topic, j'ai fait un peu de recherche et je me suis intéressé à Cron. J'aime bien aussi l'idée de Otyugh, car un "while true" permettrait d'avoir un script "horloge" indépendant (ne demandant pas de bidouillage d'un fichier de configuration externe comme dans le cas de Cron). Je vais tester les deux idées ce soir si j'ai un peu de temps.
Je ne veux pas voir de grande fenêtre apparaitre sur mon PC client, qui est en fait un vieux portable Omnibook 6100 avec Ubuntu 8.04, me servant uniquement de lecteur multimédia (relié à la chaine hifi du salon). Sur le bureau de ce portable, j'ai deux lanceurs: le premier pour démarrer le serveur et le deuxième pour l'éteindre. Le problème, c'est qu'un utilisateur lambda (autre membre de la famille) ne sait jamais si le serveur est en marche ou pas, au moment où il souhaite écouter de la musique (via rhytmbox). Donc je souhaite avoir une espèce d'icone, ressemblant à un feu rouge (ou autre), disposée quelque part sur l'écran et indiquant l'état du serveur.
J'ai bidouillé un peu mon scrip en ajoutant des instructions pour faire apparaitre une notification, mais je n'ai pas réussi à faire apparaitre quoique ce soit.
Ubuntu 18.04 et 20.04 MATE installés en dual boot avec Seven et Win 8 sur plusieurs PC différents
Un serveur raid avec Ubuntu 18.04
Bricole sur Ubuntu depuis la version 7.04
Hors ligne
#5 Le 30/05/2013, à 14:40
- Otyugh
Re : [RESOLU] Afficher un feu rouge ou un feu vert - etat serveur
Encore une fois, je ne peut proposer que mon amateurisme en la matière, mais il me semble que conky pourrait faire ce que tu désires.
Il permet "facilement" d'afficher sur ton fond d'écran des informations, et notamment, exécutées par un script. Je vais peut-être justement tenter moi-même un script, mais plutôt pour avoir une pastille qui m'indique si le ping est "bon" ou "mauvais" sur ma connexion ^^ -Je te tiens au jus si personne de plus formé ne sort de sa boîte
Hors ligne
#6 Le 30/05/2013, à 17:12
- xavier4811
Re : [RESOLU] Afficher un feu rouge ou un feu vert - etat serveur
Amusant ça, plein de possibilités différentes rien qu'avec while true.
ou alors conky devrait aussi être une bonne alternative.
#!/bin/bash
VERT="\\033[1;32m"
ROUGE="\\033[1;31m"
NORMAL="\\033[0m"
FEU_ROUGE="feu_rouge.jpg"
FEU_VERT="feu_vert.jpg"
ADDRESS="192.168.2.160"
# Télécharge un feu rouge et un feu vert pour Eye of Gnome et Zenity, a changer ou supprimer si ...
if [[ ! -e /home/${USER}/${FEU_VERT} ]]
then
wget -nd http://www.qualitec.ch/gfx/graphic/feu_vert.jpg -p /home/${USER}
fi
if [[ ! -e /home/${USER}/${FEU_ROUGE} ]]
then
wget -nd http://www.qualitec.ch/gfx/graphic/feu_rouge.jpg -p /home/${USER}
fi
# Boucle sans fin ...
while true
do
ping -c3 "$ADDRESS" > /dev/null
TEST=$?
clear
if [ $TEST -ne 0 ]
then
# Commente les notifications non désirées
# Affichage dans le terminal
echo -e $ROUGE "ARRET" $NORMAL
# Image affichée dans Eye of Gnome, remplace eog par la visionneuse de ton choix
eog /home/${USER}/${FEU_ROUGE} &
# Zenity notification
zenity --notification --window-icon="/home/${USER}/${FEU_ROUGE}" --text="ARRET" --timeout=30
else
# Commente les notifications non désirées
# Affichage dans le terminal
echo -e $VERT "DEMARRE" $NORMAL
# Image affichée dans Eye of Gnome, remplace eog par la visionneuse de ton choix
eog /home/${USER}/${FEU_VERT} &
# Zenity notification
zenity --notification --window-icon="/home/${USER}/${FEU_VERT}" --text="DEMARRE" --timeout=30
fi
sleep 15
# Commente si tu n utilise pas de visionneuse d images,
# kill la visionneuse après le temp de pause précédent
killall eog
# Au total 60 secondes avant de reboucler
sleep 45
done
Hors ligne
#7 Le 30/05/2013, à 22:23
- morane
Re : [RESOLU] Afficher un feu rouge ou un feu vert - etat serveur
Ouah,
Excellent ce script
Merci xavier4811
Seul petit bemol, la visionneuse affiche un petit feu vert au milieu d'un grand carré noir. Existe t'il un moyen d'avoir juste une petite image ?
Otyugh, que veux tu dire en parlant d'une pastille ?
Ubuntu 18.04 et 20.04 MATE installés en dual boot avec Seven et Win 8 sur plusieurs PC différents
Un serveur raid avec Ubuntu 18.04
Bricole sur Ubuntu depuis la version 7.04
Hors ligne
#8 Le 30/05/2013, à 23:11
- morane
Re : [RESOLU] Afficher un feu rouge ou un feu vert - etat serveur
Comme je n'arrivais pas à réduire les images des feux vert et rouge, j'ai cherché un peu et j'ai modifié le script pour qu'il fasse apparaître des notifications
Voici ce que cela donne:
#!/bin/bash
# script testant si le serveur avec l'adresse ip 192.168.2.160 est en marche
# si oui, il affiche un message pendant 5 secondes
# si non, il affiche un autre message pendant 5 secondes
ADDRESS="192.168.2.160"
# Boucle sans fin ...
while true
do
ping -c3 "$ADDRESS" > /dev/null
TEST=$?
clear
if [ $TEST -ne 0 ]
then
# cas où le serveur est à l'arrêt
notify-send --icon="info" "Etat du serveur de musique" "A l'arrêt" --expire-time=5000
else
# cas où le serveur est en marche
notify-send --icon="info" "Etat du serveur de musique" "En marche" --expire-time=5000
fi
sleep 5
# Commente si tu n utilise pas de visionneuse d images,
# kill la visionneuse après le temp de pause précédent
killall eog
# Au total 40 secondes avant de reboucler
sleep 35
done
Merci à tous
Dernière modification par morane (Le 30/05/2013, à 23:11)
Ubuntu 18.04 et 20.04 MATE installés en dual boot avec Seven et Win 8 sur plusieurs PC différents
Un serveur raid avec Ubuntu 18.04
Bricole sur Ubuntu depuis la version 7.04
Hors ligne
#9 Le 30/05/2013, à 23:20
- xavier4811
Re : [RESOLU] Afficher un feu rouge ou un feu vert - etat serveur
Pas trouvé d'autres options pour eog, mais si tu ne l'utilise pas tu peut supprimer la ligne killall eog a la fin.
Hors ligne
#10 Le 30/05/2013, à 23:45
- morane
Re : [RESOLU] Afficher un feu rouge ou un feu vert - etat serveur
je suis en train de chercher comment changer la couleur des notifications ou même d'y mettre une image.
Je sais c'est de la cosmétique, mais bon ...
Ubuntu 18.04 et 20.04 MATE installés en dual boot avec Seven et Win 8 sur plusieurs PC différents
Un serveur raid avec Ubuntu 18.04
Bricole sur Ubuntu depuis la version 7.04
Hors ligne
#11 Le 30/05/2013, à 23:51
- Zakhar
Re : [RESOLU] Afficher un feu rouge ou un feu vert - etat serveur
car un "while true" permettrait d'avoir un script "horloge" indépendant (ne demandant pas de bidouillage d'un fichier de configuration externe comme dans le cas de Cron).
Ca s'appelle un "Whiler" (de l'instruction while sans fin).
Architecturellement c'est moche... et si tu voulais vraiment faire un truc précis à la minute c'est raté parce que le sleep 60 va se rajouter au temps des autres instructions, contrairement au 'cron'
Mais de façon pratique, oui bien sûr, ça fonctionne aussi, c'est juste que le cron est plus "propre".
Tu as aussi une différence que peut te faire pencher plutôt pour l'un ou l'autre :
- cron s'exécute en root, puisqu'il dépend de la machine et pas de/des l'utilisateur(s) logé(s)
- un "whiler", en général tu vas le lancer avec la session (dans l'init c'est très très très moche !) et donc il va plutôt s'exécuter avec les droits de la session en cours.
Donc si tu veux faire des choses qui nécessitent des droits root (ce qui n'est probablement pas le cas ici), tu n'a guère que le cron de "propre". Dans ton cas, probablement que les deux sont possibles, et si tu n'es pas trop sûr de ne pas faire de bêtises avec ton script, autant faire un whiler, ça limitera la casse en cas de problème.
P.S.: le ping te dit juste que ton serveur est en vie... pas que les services qui doivent y tourner fonctionnent encore !.. Selon les services désirés, tu peux affiner, par exemple faire un wget si tu t'attends à avoir un serveur web "en vie".
Dernière modification par Zakhar (Le 30/05/2013, à 23:53)
"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)
Hors ligne
#12 Le 31/05/2013, à 00:02
- Otyugh
Re : [RESOLU] Afficher un feu rouge ou un feu vert - etat serveur
Il pourrait aussi faire un un "fork" pour lancer le traitement de son programme, le whileur se contentant d'attendre et de lancer le fork, justement, comme ça la boucle des 60 secondes pour lancer le programme serait plus précis à la nanoseconde peut-être ? ^^
NB : par pastille c'est pareil que le feu je voulais dire, hein. Juste un truc rond coloré, qu'importe en fait.
Dernière modification par Otyugh (Le 31/05/2013, à 00:05)
Hors ligne
#13 Le 31/05/2013, à 08:51
- morane
Re : [RESOLU] Afficher un feu rouge ou un feu vert - etat serveur
Bonjour à tous et merci de vos explications et arguments.
Effectivement, le cron semble ressembler au coucou suisse (ou franc comtois) et le whiler au sablier, mais dans mon cas le PC client ne sert que comme lecteur multimédia. Il n'y a donc pas des tonnes d'instructions à réaliser et si l'ensemble se décale de quelques secondes, ce n'est pas grave.
Par ailleurs, c'est vrai que le ping montre que le serveur est au moins en phase de démarrage mais qu'il n'est pas forcément opérationel. Quelle serait par exemple la ligne d'instruction avec wget ?
Qu'est ce qu'un fork ?
Ubuntu 18.04 et 20.04 MATE installés en dual boot avec Seven et Win 8 sur plusieurs PC différents
Un serveur raid avec Ubuntu 18.04
Bricole sur Ubuntu depuis la version 7.04
Hors ligne
#14 Le 31/05/2013, à 17:06
- Otyugh
Re : [RESOLU] Afficher un feu rouge ou un feu vert - etat serveur
Je n'emploie pas les bons mots ^^
Ce que je voulais pointer, c'est que la critique de Zakhar était juste, et qu'un moyen simple de bricoler pour que les 60 secondes soit précises, c'est, en gardant le sablier "whiler" mais de lancer le traitement en fond de tache (./pingandputfeurougeoufeuvert.sh &). Fin... C'est pas important du tout, désolé de t'embrouiller avec de l'abstrait, je n'ai toujours pas eu le cœur de me lancer x)
Hors ligne
#15 Le 31/05/2013, à 18:38
- xavier4811
Re : [RESOLU] Afficher un feu rouge ou un feu vert - etat serveur
Selon les services a tester, curl est plus polyvalent que wget.
La liste des codes d'erreur illustre bien les possibilités.
$ curl -m 10 -s "http://192.168.2.160" > /dev/null
$ echo $?
28
$ curl -m 10 -s "http://127.0.0.1" > /dev/null
$ echo $?
0
$ man curl | awk ' { if(match($0,"EX")){x=1}; if(match($0,"AU")){ x=0 }; if(x){ if($0){ print } } }'
EXIT CODES
There are a bunch of different error codes and their corresponding
error messages that may appear during bad conditions. At the time of
this writing, the exit codes are:
1 Unsupported protocol. This build of curl has no support for this
protocol.
2 Failed to initialize.
3 URL malformed. The syntax was not correct.
5 Couldn’t resolve proxy. The given proxy host could not be
resolved.
6 Couldn’t resolve host. The given remote host was not resolved.
7 Failed to connect to host.
8 FTP weird server reply. The server sent data curl couldn’t
parse.
9 FTP access denied. The server denied login or denied access to
the particular resource or directory you wanted to reach. Most
often you tried to change to a directory that doesn’t exist on
the server.
11 FTP weird PASS reply. Curl couldn’t parse the reply sent to the
PASS request.
13 FTP weird PASV reply, Curl couldn’t parse the reply sent to the
PASV request.
14 FTP weird 227 format. Curl couldn’t parse the 227-line the
server sent.
15 FTP can’t get host. Couldn’t resolve the host IP we got in the
227-line.
17 FTP couldn’t set binary. Couldn’t change transfer method to
binary.
18 Partial file. Only a part of the file was transferred.
19 FTP couldn’t download/access the given file, the RETR (or simi-
lar) command failed.
21 FTP quote error. A quote command returned error from the server.
22 HTTP page not retrieved. The requested url was not found or
returned another error with the HTTP error code being 400 or
above. This return code only appears if -f/--fail is used.
23 Write error. Curl couldn’t write data to a local filesystem or
similar.
25 FTP couldn’t STOR file. The server denied the STOR operation,
used for FTP uploading.
26 Read error. Various reading problems.
27 Out of memory. A memory allocation request failed.
28 Operation timeout. The specified time-out period was reached
according to the conditions.
30 FTP PORT failed. The PORT command failed. Not all FTP servers
support the PORT command, try doing a transfer using PASV
instead!
31 FTP couldn’t use REST. The REST command failed. This command is
used for resumed FTP transfers.
33 HTTP range error. The range "command" didn’t work.
34 HTTP post error. Internal post-request generation error.
35 SSL connect error. The SSL handshaking failed.
36 FTP bad download resume. Couldn’t continue an earlier aborted
download.
37 FILE couldn’t read file. Failed to open the file. Permissions?
38 LDAP cannot bind. LDAP bind operation failed.
39 LDAP search failed.
41 Function not found. A required LDAP function was not found.
42 Aborted by callback. An application told curl to abort the oper-
ation.
43 Internal error. A function was called with a bad parameter.
45 Interface error. A specified outgoing interface could not be
used.
47 Too many redirects. When following redirects, curl hit the maxi-
mum amount.
48 Unknown TELNET option specified.
49 Malformed telnet option.
51 The peer’s SSL certificate or SSH MD5 fingerprint was not ok.
52 The server didn’t reply anything, which here is considered an
error.
53 SSL crypto engine not found.
54 Cannot set SSL crypto engine as default.
55 Failed sending network data.
56 Failure in receiving network data.
58 Problem with the local certificate.
59 Couldn’t use specified SSL cipher.
60 Peer certificate cannot be authenticated with known CA certifi-
cates.
61 Unrecognized transfer encoding.
62 Invalid LDAP URL.
63 Maximum file size exceeded.
64 Requested FTP SSL level failed.
65 Sending the data requires a rewind that failed.
66 Failed to initialise SSL Engine.
67 The user name, password, or similar was not accepted and curl
failed to log in.
68 File not found on TFTP server.
69 Permission problem on TFTP server.
70 Out of disk space on TFTP server.
71 Illegal TFTP operation.
72 Unknown TFTP transfer ID.
73 File already exists (TFTP).
74 No such user (TFTP).
75 Character conversion failed.
76 Character conversion functions required.
77 Problem with reading the SSL CA cert (path? access rights?).
78 The resource referenced in the URL does not exist.
79 An unspecified error occurred during the SSH session.
80 Failed to shut down the SSL connection.
82 Could not load CRL file, missing or wrong format (added in
7.19.0).
83 Issuer check failed (added in 7.19.0).
XX More error codes will appear here in future releases. The exist-
ing ones are meant to never change.
Dernière modification par xavier4811 (Le 31/05/2013, à 18:39)
Hors ligne
#16 Le 31/05/2013, à 19:37
- Zakhar
Re : [RESOLU] Afficher un feu rouge ou un feu vert - etat serveur
wget -ou curl que j'utilise préférentiellement, d'accord avec toi xavier4811- c'est si ton PC multimedia sert ses fichiers via un serveur Web (Apache ou autre).
L'usage basique est fort simple, tu rajoutes l'URL que tu veux après wget.
Si ça fonctionne, c'est que le serveur répond.
Sinon, le service Web n'est pas démarré ou tu as un autre problème (réseau, autre...)
Exemple:
wget http://www.google.com/index.html -O /dev/null
Bien sûr, tu remplaces le www.google.com/index.html de l'exemple par une URL sur ton PC qui te sert de serveur !
Dans la commande ci-dessus on a un -O /dev/null, parce qu'on se fiche de la page renvoyée par le serveur, on veut juste savoir si ça marche. Sans cela, wget va faire par défaut un fichier correspondant à l'URL demandée. En l'occurrence, dans l'exemple ci-dessus on aurait un fichier index.html sans l'option.
curl (qui n'est pas installé par défaut) a un comportement un peu différent. Par défaut il va envoyer la page sur la sortie standard (stdout) au lieu de la mettre dans un fichier.
Après je ne sais pas ce que tu entends pas "Serveur Multimedia". Si c'est un simple partage de fichier (Samba, NFS,...) il suffit de monter le partage et tester que le montage marche et que tu peux accéder à un fichier que tu sais exister.
Si c'est un serveur DLNA.... bah là je ne sais pas... mais tu dois bien trouver comment vérifier que ça marche plus finement qu'un "ping" en faisant une recherche sur ton moteur préféré.
Dernière modification par Zakhar (Le 31/05/2013, à 19:43)
"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)
Hors ligne
#17 Le 01/06/2013, à 00:14
- morane
Re : [RESOLU] Afficher un feu rouge ou un feu vert - etat serveur
Bonsoir à tous,
Mon serveur est en fait un ancien PC, avec des disques durs montés en raid et auquels j'accède par des partages samba. C'est vraiment quelque chose de simple, qui sert uniquement à faire du stockage.
Le système de notification me convient car il est facile à comprendre pour n'importe qui.
Je considère ce topic comme résolu.
Merci encore
Ubuntu 18.04 et 20.04 MATE installés en dual boot avec Seven et Win 8 sur plusieurs PC différents
Un serveur raid avec Ubuntu 18.04
Bricole sur Ubuntu depuis la version 7.04
Hors ligne