Qu'est-ce qui pourrait faire apparaître le message "La demande d'exécution a échoué sur le canal 0"


9

J'essaie d'envoyer une commande ssh de manière non interactive au proxy d'un serveur d'automatisation HP, et bien que je puisse ssh entrer et entrer interactivement parfaitement bien, je reçois toujours le message "la demande d'exécution a échoué sur le canal 0" lorsque j'essaie d'envoyer le commande de manière non interactive. Y a-t-il quelque chose que je pourrais changer du côté client pour me permettre d'envoyer la commande? Il n'y a pas grand-chose que je puisse changer côté serveur.

entrez la description de l'image ici

Apparemment, c'est possible, mais je ne peux tout simplement pas le faire fonctionner sur mon installation (voir le lien: https://community.hpe.com/t5/Network-Automation-Practitioners/Is-there-a-way-to-issue- a-command-to-an-NA-proxy-using-SSH-non / mp / 6935003 / highlight / false # M2821 )

Au cas où cela aiderait, voici les détails de la version de mon système d'exploitation et de la version openssh:

OpenSSH_7.2p2, OpenSSL 1.0.2j-fips  26 Sep 2016

NAME="openSUSE Leap"
VERSION="42.2"
ID=opensuse
ID_LIKE="suse"
VERSION_ID="42.2"
PRETTY_NAME="openSUSE Leap 42.2"
ANSI_COLOR="0;32"
CPE_NAME="cpe:/o:opensuse:leap:42.2"
BUG_REPORT_URL="https://bugs.opensuse.org"
HOME_URL="https://www.opensuse.org/"

Je vous remercie

Réponses:


1

Le serveur vous permet d'ouvrir un shell interactif mais pas l' execappel système pour exécuter une commande sans pseudo-terminal. Utilisez le -tcommutateur comme suit pour forcer l'allocation pseudo-terminale.

ssh austin@127.0.0.1 -p 8022 -t show version

Vous pouvez également utiliser expectpour écrire une interaction avec le point de terminaison distant. Voir cette réponse pour un exemple.

Références:


0

Généralement parce que le client demande un tty et que le serveur refuse. Essayez de ne PAS demander tty avec unssh -T ......


-1

Avez-vous quelque chose dans votre rcfile shell (.bashrc, .zshrc, etc.) ou .login, .profile, etc. qui vérifie que le shell est interactif avant de s'exécuter? Sinon, c'est là que réside votre problème.

Mon conseil est de renommer temporairement des choses comme .profile, .bashrc, .login et .bash_profile pour être .profile.off (et ainsi de suite) et voir si le problème persiste.

Si ce n'est pas le cas, vous avez besoin de code dans le fichier rc incriminé qui vérifiera que le shell est interactif avant de s'exécuter.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.