tester la présence d'une session vnc

tester la présence d'une session vnc - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 16-09-2008 à 22:07:10    

bonsoir,
je voudrai depuis un poste client tester la présence d'une session vnc sur un serveur
pour cela dans un script j'effectue ceci :
 


    echo "test1"
    msg=$(vncviewer serveur:1 2>&1 1>/dev/null)
    echo "test2"
    if [ "$msg" ]
    then
        ssh serveur "vnc4server -geometry 1010x700"
        vncviewer serveur:1
    fi
 


 
en gros si la session vnc est ouverte je m'y connecte sinon j'en ouvre une via ssh
si la session n'est pas encore démarré mon script fonction en revanche si elle existe déjà sur le serveur
le script se fige entre les deux echo, soit à la ligne msg=$(vncviewer serveur:1 2>&1 1>/dev/null)
je suppose qu'il y a mieux pour tester la présence d'une session vnc...
 
merci de votre aide


---------------
dam's (debianer), ma galerie Flickr
Reply

Marsh Posté le 16-09-2008 à 22:07:10   

Reply

Marsh Posté le 17-09-2008 à 09:06:20    

J'ai pas bien compris mais, un petit coup de $(ps aux | grep -i vncviewer | grep -v grep) devrais te dire si tu a une session vnc d'ouverte.

Reply

Marsh Posté le 17-09-2008 à 09:56:50    

le truc c'est que je veux faire le test depuis le poste client (mon portable) donc je sais pas si un :
ssh serveur "ps aux | grep -i vncviewer"
va me renvoyer un résultat exploitable pour le client
mais je testerai quand même ce soir
 
merci


---------------
dam's (debianer), ma galerie Flickr
Reply

Marsh Posté le 17-09-2008 à 10:11:48    

Tu veu tester sur le client si le serveur est ouvert?

Reply

Marsh Posté le 17-09-2008 à 11:00:11    

oué si une session vnc est ouverte sur le serveur, pour éviter d'en démarrer une seconde
 
--
sinon je pense à un truc,
à la rigueur je peux passer une commande en ssh au serveur qui va démarrer une session vnc que s'il n'y en a pas
comme ça pour le client quand il récupère la main il est sûr qu'une session et une seule est ouverte


Message édité par dams78 le 17-09-2008 à 11:01:58

---------------
dam's (debianer), ma galerie Flickr
Reply

Marsh Posté le 17-09-2008 à 11:18:34    

Un petit coup de scan de port et c'est regler:
nmap server -p5901 | grep open
 
Les deux solutions sont a envisager, c'est a toi de voir apres...

Reply

Marsh Posté le 17-09-2008 à 11:27:22    

normalement cette commande lancée depuis le client devrait ouvrir une session vnc seulement si elle n'existe pas déjà
ssh serveur "if [ ! '$(ps aux | grep -i vnc | grep -v grep)' ]; then vnc4server -geometry 1010x700; fi;"
 
je sais pas si nmap marcherai car le port est normalement bloqué par iptable ce qui me fait passer par un tunnel ssh dès que je ne suis plus sur mon réseau local


Message édité par dams78 le 17-09-2008 à 11:27:59

---------------
dam's (debianer), ma galerie Flickr
Reply

Marsh Posté le 18-09-2008 à 11:34:28    

bon en fait la commande  :  
ssh serveur "if [ ! '$(ps aux | grep -i vnc | grep -v grep)' ]; then vnc4server -geometry 1010x700; fi;"  
ne fonctionne pas si aucune session est démarrée, je pense que le grep doit tout de même renvoyer quelque chose, ce qui "brouille" mon if (j'ai aussi essayer de faire un test si égal null, etc... mais sans succès)
 
merci


Message édité par dams78 le 18-09-2008 à 11:34:51

---------------
dam's (debianer), ma galerie Flickr
Reply

Marsh Posté le 18-09-2008 à 11:57:19    

ssh serveur "if [ \"$(ps aux | grep -i vnc | grep -v grep)\" == \"\" ]; then vnc4server -geometry 1010x700; fi;"  
 
Essaye sa.
 
 A noter que j'ai échapper les " dans la commande ssh.

Reply

Marsh Posté le 18-09-2008 à 13:32:39    

je suis trop con... dans $HOME/.vnc il y a un fichier toto:1.pid qui n'est présent que si la session vnc est lancée
ya plus qu'à faire le test dessus ;)
 
--
"normalement" cette commande est la bonne...
ssh serveur "if [ ! -f $HOME/.vnc/lanfeust:1.pid ]; then vnc4server -geometry 1010x700; fi;"


Message édité par dams78 le 18-09-2008 à 13:43:06

---------------
dam's (debianer), ma galerie Flickr
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed