Ouvrir une session ssh avec un titre défini à partir de la ligne de commande

0

J'ai un petit problème avec l'exécution de mastic (à partir de la ligne de commande) avec l' argument -m . Aidez-moi, s'il vous plaît, ou suggérez un meilleur moyen si vous en connaissez un :)

La commande (de "Run"):

putty -ssh user@machine -pw password -m C:\test.txt

Commande "test.txt":

PROMPT_COMMAND='echo -ne "\033]0;'$( ifconfig | head -2 | tail -1 | awk '{print $2}')'\007"'

Le problème:
il ouvre la session puis se ferme immédiatement

Qu'est-ce que cela suppose de faire: Ouvrir une session ssh depuis la ligne de commande avec un titre défini

Merci.

igor
la source
Je n'ai pas encore de ssh pour le tester, mais derkeiler.com/Newsgroups/comp.security.ssh/2012-04/… "Si vous voulez juste que la fenêtre reste ouverte pour vous, regardez, mettez en veille 10 à la fin de votre script pour une attente de 10 secondes. Si vous souhaitez utiliser le shell, utilisez exec / bin / bash à la fin, Shai " superuser.com/questions/587629/… superuser.com/questions/385715/…
barlop

Réponses:

1

Je crois que vous avez essayé de faire quelque chose de similaire à celui de cette réponse . Mais le problème est que les exemples de commandes fournis doivent être exécutés à partir du fichier sur le serveur.

Ils ne peuvent pas être passés en tant que commande (s) à exécuter à l'aide de l'option -m. Ce commutateur de PuTTY doit imiter le comportement du client SSH en ligne de commande Linux:

ssh user@foo command

De cette façon, ssh enregistre a usersur le fooserveur, s’exécute commandet s’arrête. On dirait qu'avec -m, PuTTY fait exactement la même chose.

Ma suggestion

consiste à préparer un script sur le serveur distant et à configurer PuTTY d’une manière différente. Tout d’abord, vous devez créer un fichier avec les commandes que vous souhaitez exécuter après la connexion, appelons-le..title

cat > ~/.title

Ensuite, tapez ou copiez et collez tout ce dont vous avez besoin, puis appuyez sur Ctrl + D. Pour le moment, testons le titre:

echo -ne "\033]0;PuTTY\007"

Vous pouvez même essayer ce qui précède directement dans le terminal. Si le titre de la fenêtre de PuTTY n'est pas modifié, il est probable que votre distribution ait déjà défini la variable PROMPT_COMMAND par défaut . Vous pouvez le confirmer en exécutant les commandes suivantes dans le terminal

echo $PROMPT_COMMAND
unset PROMPT_COMMAND
echo -ne "\033]0;PuTTY test\007"

La clé consiste à annuler la valeur actuelle de la PROMPT_COMMANDvariable. Ensuite, la dernière commande doit définir le titre de la fenêtre sur PuTTY test.

Ma solution

cela fonctionne pour moi est de préparer une session dans PuTTY, avec la boîte "Commande à distance" dans l'interface graphique définie sur:

/bin/bash --rcfile ~/.title

N'oubliez pas de fournir le nom de cette session (par exemple: NomSession) et d'appuyer sur le bouton "Enregistrer" de la première page des paramètres de PuTTY, près de la liste "Sessions enregistrées" :)

Ensuite, vous pouvez démarrer PuTTY et lui dire de charger cette session

putty -load SessionName -l user -pw password

Oui, c'est triste, mais il n'y a pas d'équivalent en ligne de commande de la boîte de dialogue "Commande à distance" pour une session enregistrée. C'est pourquoi il faut surmonter tous ces obstacles :(

Version TL; DR

En supposant que vous exécutiez toutes ces étapes correctement, tout devrait bien fonctionner:

  • créer un ~/.titlescript sur la machine distante
  • préparer une session avec la commande à distance qui exécute Bash qui s'exécutera ~/.title
  • dire à PuTTY de charger la session préparée au démarrage, en spécifiant l'utilisateur et le mot de passe

Pointe pro

Au lieu de spécifier les mots de passe en texte clair sur la ligne de commande (et éventuellement dans les scripts), vous devez apprendre à utiliser les clés SSH et à exécuter «Pageant» (agent d'authentification PuTTY) dans la barre d'état Windows.

wiktor.wandachowicz
la source
Super première réponse. Bienvenue sur Super User.
Anthony Geoghegan le
J'espérais éviter d'exécuter le script sur une machine distante, mais il semble qu'il n'y ait pas d'autre moyen. Merci à tous ceux qui ont répondu, je suis nouvelle ici, donc je ne peux pas encore voter: X
igor
0

Je n'ai pas encore de ssh pour le tester, mais http://www.derkeiler.com/Newsgroups/comp.security.ssh/2012-04/msg00005.html "Si vous voulez simplement que la fenêtre reste ouverte pendant si vous aussi regardez, mettez sommeil 10 à la fin de votre script pour une attente de 10 secondes. Si vous voulez utiliser le shell, utilisez exec /bin/bashà la fin. Shai "

deux autres liens qui offrent un aperçu.

PuTTY: Exécuter une commande à distance après la connexion et garder le shell en marche

Comment choisir ce qui apparaît dans la barre de titre de PuTTY sous Linux?

Ajouté par barlop

Ce qui suit n'utilise pas putty, il utilise openssh dans cygwin. Le a.afichier peut contenir ls ou des commandes permettant de modifier l'invite. C'est local.

$ ssh 127.0.0.1 "cat | bash" < a.a

liées, voir la réponse que je viens de poster à - https://unix.stackexchange.com/questions/87405/how-can-i-execute-local-script-on-remote-machine-and-include-arguments/208952#208952

barlop
la source
Tout d’abord, "exec / bin / bash" a vraiment aidé. Maintenant, il ne ferme pas la session MAIS il n'exécute pas "PROMPT_COMMAND = ..." que j'ai écrit dans la description. La chose étrange est que cela fonctionne avec différentes commandes. Par exemple: si "test.txt" était: "ls -a PROMPT_COMMAND = 'echo ... exec / bin / bash" tout fonctionne, mais pas la commande PROMPT
igor le
@igor si vous mettez le PROMPT_COMMAND après l'exec?
barlop
même résultat :( Il affiche ls -a (je l’ai pris pour exemple), mais n’exécute pas PROMPT
igor le
Important de dire que la commande fonctionne sur une session ouverte. J'ai essayé avec "-t" comme suggéré dans le lien que vous avez envoyé, mais malheureusement les mêmes résultats.
igor
ok maintenant j'ai ssh sur une machine à tester .. et le ./bin/bash ou exec / bin / bash le bloque un peu, il ne provoque pas l'invite. Je vais garder ma "réponse" ici car c'était quelque chose à essayer au moins, et peut-être que les commentaires pourraient intéresser certains.
barlop