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

crosse1991
la source

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 [email protected] -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:

dragon
la source
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 ......

Sirch
la source
-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.

Dr. JKL
la source