3 votes

signaux transparents sur ssh

Par transparence, j'entends la transmission de :

  • stdin , stdout y stderr
  • les signaux standard ( SIGHUP o SIGINT serait un bon début)

À titre d'exemple, considérons ces invocations d'une commande locale (inutile) et d'une commande à distance :

$ `cat - > /dev/null; sleep 10` < /local/file
$ ssh user@host "cat - > /dev/null; sleep 10" < /local/file

Je peux interrompre la première avec ^C très bien. Mais si j'essaie de le faire pendant la deuxième, cela n'affecte que les éléments suivants ssh en laissant la commande en cours d'exécution sur le serveur distant si cat est déjà terminée.

Je sais ce qu'est le lancement ssh con -t mais de cette façon, je ne peux pas envoyer de données par l'intermédiaire de stdin . Est-ce possible avec ssh seul ?

0voto

adaptr Points 16431

Les signaux sont le domaine du noyau local ; ils ne sont jamais transportés sur une liaison réseau.

Bien que vous puissiez exécuter des commandes dans une session ssh distante à partir d'un ordinateur local, cela ne rend pas magiquement les événements de niveau système sur l'ordinateur distant disponibles localement.

Vous devriez envelopper le tout dans un script qui piège tous les signaux (possibles) et les communique à travers la connexion ssh, mais même dans ce cas, ils ne redeviendraient pas des signaux comme par magie.

Peut-être quelque chose qui implique nc serait plus approprié pour mélanger std{in|out|err} ; cela non plus ne fait pas partie de la palette d'outils de ssh.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X