Bonjour,
J'ai installé un serveur distant sur lequel je peux accéder par ssh.
Mais parfois, faut avouer que c'est plus agréable avec une session graphique, alors je peux y démarrer un serveur vnc.
J'aimerais créer un petit script sur mon client pour ouvrir une session VNC en une commande. Mon problème est que quand je démarre le serveur VNC (TightVNC), s'il y en avait un autre d'actif, le port utilisé est le prochain inutilisé. Je voudrais donc récupérer ce numéro de port dans une variable.
Voici l'idée :
tunnelize-ssh :
scrPort=-1
$ip_locale=<ip_locale>
$ip_disante=<ip_serveur>
if [ "$#" = 0 ]; then
scrPort=1
elif [ $1 = "-p" ] || [ $1 = "--port" ]; then
if ! [[ $2 =~ ^[0-9]$ ]]; then
echo "Paramètre invalide, le port doit être un nombre entre 0 et 9"
exit
else
scrPort=$2
fi
fi
let scrPort+=5900
echo "Tunnelisation SSH sur le port $scrPort..."
echo "Tapez lsof -ti:$scrPort | xargs kill -9 pour arrêter"
echo
ssh -p 1023 -L $scrPort:$ip_locale:$scrPort -f -C -N -l $USER $ip_distante
script
#!/bin/bash
# Connection au serveur SSH pour démarrer un serveur VNC
ssh -p <port> <ip_serveur> << ESESS
vncserver
# renvoie un résultat de la forme :
# New 'X' desktop is <serveur>:<port alloué>
# Starting applications specified in /etc/X11/Xvnc-session
# Log file is /home/anard/.vnc/<serveur>:<port alloué>.log
# Je voudrais récupérer <port alloué> dans une variable, par exemple $allocPort
exit
ESESS
# Tunnellisation via le script précédent sur le port alloué précédemment
tunnelize-ssh -p $allocPort
# Ouverture de Remmina et connection au serveur VNC
remmina -c ~/.remmina/vnc-server.remmina
# Fermeture de la session
lsof -ti:$allocPort | xargs kill -9
ssh -p <port> <ip_serveur> << ESERV
vncserver -kill :$allocPort
exit
ESERV
exit
Malheureusement, je n'arrive pas à récupérer la sortie de vncserver.
Même connecté en ssh sur le serveur (sans l'intermédiaire du script), j'obtiens une variable vide :
$ var=$(vncserver)
New 'X' desktop is serveur:1
Starting applications specified in /etc/X11/Xvnc-session
Log file is /home/anard/.vnc/serveur:1.log
$ echo $var
$
Pourriez-vous m'aider à récupérer cette variable ?
Dernière modification par Anard (22-10-2019 12:09:48)
"iMack" : GA-H97M-D3H, Intel i5 4460, 16Go RAM / Bootloader Clover - macOS Mojave / Gentoo-Xfce
"Serveur" : Dell Optiplex 360, Intel Q8200, 2Go RAM / Debian Bullseye
"Portable" : Asus E502NA, Intel N4200, 8Go RAM / DebianFacile Bullseye