Commande SSH sur équipement distant avec confirmation interactive

Bonjour,

J’utilise le plugin Script et je crée des scripts PHP qui se connectent en SSH a certains équipements du réseau local. Je souhaite éteindre ou redémarrer un équipement (c’est un Firewall). Lorsque la ligne de commande est envoyée en SSH à l’équipement, celui-ci me demande une confirmation interactive « êtes vous bien sur … nianiania » et je dois confirmer au clavier par « yes/no ».

La question : comment faire via un script pour répondre a cette question « yes/no » interactive ? La commande sur l’équipement ne supporte pas d’option pour forcer l’éxécution sans confirmation interactive : pas de « shutdown -force » ou option similaire.

Mon script utilise pour l’instant les fonctions PHP ssh2_connect, ssh2_exec.
Cela ne permet pas de répondre de manière interactive a la commande en cours.

Merci pour votre aide et bonne journée a tous :slight_smile:

bonjour
et avec l’ajout --yes
ex:

ssh pi@192.168.0.150 --yes
1 « J'aime »

Suite a cette réponse, je pense que j’ai peut-être mal expliqué mon probleme.
En plus de l’explication initiale, j’ajoute ces informations complémentaires :

  • J’execute un script créé via le plugin script
  • C’est un script PHP qui se connecte en SSH a un équipement distant
  • Une fois connecté, je demande l’exécution de la commande ‹ shutdown ›
  • L’équipement me réponds « êtes vous sur de vouloir eteindre l’équipement ? » et je dois répondre par « yes » ou « no »
  • Via la session SSH ouverte avec PHP, je ne sais pas répondre par « yes ». Mon équipement ne redémarre donc pas. Logique.

J’anticipe certaines questions :

  • Si je sais envoyer la commande « shutdown » a mon équipement, alors je sais également envoyer une commande « yes » de la meme facon. Evidemment ca ne marche pas. Il faut rester dans le flux de la commande SSH shutdown et y apporter une entrée complémentaire. Ca n’a rien a voir avec envoyer une commande « shutdown » puis envoyer une commande « yes ».

Merci pour vos suggestions et aides.

ben si ton equipement ne connait pas la commande shutdown --yes ou un equivalent…
et comme on sait pas de quel equipement tu parles…

Montre nous ton script au format texte avec </> pour que ce soit clean

C’est l’exemple que l’on trouve partout pour envoyer une commande SSH via PHP.

<?php
$ssh = ssh2_connect('monequipement', 22);
ssh2_auth_password($ssh, 'username', 'password');
$stream = ssh2_exec($ssh, 'shutdown');

fclose($stream);
ssh2_disconnect($ssh);
?>

met un shebang et écrit en shell direct

Peux-tu créer un script sur ton équipement ?
Si oui, tente de créer un script du genre

shutdown << EOF
yes
EOF

Puis lance ce script via ssh

Salut,
J’ai pas fait dans ce sens de mon côté, tu pourrais par exemple faire un bash sur ton FW et à distance l’exécuter.
Pour moi ça parait plus simple et tu géreras en local l’ensemble des commandes que tu veux faire.
Autre solution, si ton FW à certains trucs en API, tu peux le faire avec. Exemple, sur Fortinet c’est possible.