Cacher complètement le retour d'une commande

Bonjour,

Je vous explique rapidement. Je suis amené à me connecter très souvent sur des serveurs windows. J’utilise “rdesktop” et j’ai toute une liste d’alias dans mon fichier .zshrc.
Jusqu’il y a peu, je tapais le mot de passe à chaque fois que je me connectais à un serveur. Mais à raison d’au moins 25 fois par jour, ça commence à devenir lourd…

J’ai donc voulu rajouter le mot de passe dans les alias (je précise que j’ai modifié le code) :

[code]pass=echo XfJg52fFJHgfd7442K | base64 -d

alias rd_LESERVEUR=“rdesktop -u LOGIN -p $pass -d DOMAINE -x lan -g 1280x1000 -r disk:moi=/home/moi/DossiersPartages/LESERVEUR/ IP.DE.MON.SERVEUR > /dev/null 2>&1 &”[/code]

Ça marche, je gagne du temps. Cependant, le password apparait en clair quand je ferme la fenêtre de rdesktop.

moi@ordi $ rd_LESERVEUR [2] 32100 moi@ordi $ [2] + 32100 exit 62 rdesktop -u LOGIN -p PASSWORD-EN-CLAIR -d DOMAINE -x lan -g 1280x1000 -r moi@ordi $

Questions :

  • Comment empêcher que la ligne apparaissent à la fermeture de la session ?
  • Connaissez vous une autre méthode pour intégrer un mot de passe dans un script/zshrc/bashrc/… qui soit plus propre et plus sécurisée ?

Merci d’avance,

[Edit: Résolu grâce à screen, voir plus bas.

Personne n’a une petite idée pour me permettre d’avancer sur ce point ?

J’espère que ce n’est pas parce que j’ai [strike]prononcé[/strike] écrit “windows”… Je préfèrerais aussi me connecter en ssh à des serveurs Debian mais on choisi pas toujours. :unamused:

Tout simplement, peut-être, parce qu’on n’a pas la réponse :wink:

L’affichage de ta commande est due à l’utilisation du ‘&’ final lors de son lancement. Mais je ne sais pas comment l’éviter.

EDIT :

[quote]-p
The password to authenticate with. Note that this may have no
effect if “Always prompt for password” is enabled on the server.
WARNING: if you specify a password on the command line it may be
visible to other users when they use tools like ps. Use -p - to
make rdesktop request a password at startup (from standard
input).
[/quote]
Il semblerait que ce soit une limitation du logiciel lui-même. Même si le mot de passe n’est pas affiché lors du lancement du script, il sera facile à trouver pour qui a un accès à ta machine (pas forcément un accès physique, pas forcement un accès priviliégié, même un utilisateur “basique” pourra voir le mot de passe via top/htop/ps/etc.).

Et l’usage de nohup ?

Bonjour

En utilisant screen https://www.debian-administration.org/article/34/Using_GNU_Screen sans le ‘&’, cela te permettrait également de debogger ta session rdesktop au cas ou :wink:

Merci à tous pour vos réponses. :wink:

Je précise deux trois détails :
Les mots de passe que je cherche à cacher ne sont pas “critiques”. Mes collègues ont accès aux mêmes machines que moi. Je veux surtout éviter qu’ils n’apparaissent en clair sur le terminal… Personne n’a d’accès sur ma machine pour faire un top/ps/autre et le disque dur est chiffré donc même si je suis pas là et que quelqu’un tente de booter sur une clé usb, ça devrait tenir.

Le ‘&’ final me permet de lancer plusieurs rdesktop à la suite sans devoir faire différents onglets/fenêtres dans le terminal. C’est assez pratique… Mais effectivement, si je le retire je n’ai pas le retour de la commande avec le mot de passe en clair.

Quand je mets nohup au début de mon alias, avec ‘&’ à la fin, ça ne change rien. J’ai toujours un message avec le mot de passe en clair quand je ferme la fenêtre rdesktop.

Quand je mets nohup sans ‘&’, je ne récupère par la main sur le terminal après avoir lancé la commande. Peut-être que je loupe quelque chose… Mais jusqu’ici ça ne résout pas mon problème.

Pas mal ! J’ai déjà utilisé screen mais ça fait un moment, je n’y avais pas pensé. Je n’ai pas encore réussis à lancer directement screen avec la commande rdesktop pour que ça quitte automatiquement la session “screen” quand je ferme la fenêtre. Mais il doit y avoir moyen.

Sinon, j’ai trouvé disown qui pourrait convenir à mon besoin :

$ rdesktop (...) & [1] 7265 $ disown %1
(trouvé via les commentaires là : tux-planet.fr/utilisation-de … nde-nohup/ )

Il faut juste que je trouve comment récupérer automatiquement le numéro entre crochet pour compléter mes alias et obtenir quelque chose comme :

[Edit un peu plus tard :

#AVANT alias rd_LESERVEUR="rdesktop -u LOGIN -p $pass -d DOMAINE -x lan -g 1280x1000 -r disk:moi=/home/moi/DossiersPartages/LESERVEUR/ IP.DE.MON.SERVEUR > /dev/null 2>&1 &" #MAINTENANT alias rd_LESERVEUR="screen -S LESERVEUR -d -m rdesktop -u LOGIN -p $pass -d DOMAINE -x lan -g 1280x1000 -r disk:moi=/home/moi/DossiersPartages/LESERVEUR/ IP.DE.MON.SERVEUR"

Je supprime donc ce qui est à la fin ( > /dev/null 2>&1 & ) et je rajoute l’appel à screen au début de l’alias ( screen -S nom-du-screen -d -m ).

Je n’ai plus du tout de message quand je lance ma commande ou quand je quitte la fenêtre et je peux éventuellement voir la session avec un “screen -R” :

$ rd_LESERVEUR $ screen -ls There is a screen on: 8651.LESERVEUR (06/08/15 15:02:31) (Detached) 1 Socket in /var/run/screen/S-moi. $ screen -R LESERVEUR

Quand je quitte la fenêtre, la session screen ferme automatiquement. (Pour ceux qui veulent, on peut utiliser -D à la place de -d si on veut garder le screen ouvert même quand la commande est terminée.)

Génial, top, super! Résolu! Merci ! :clap: