Page 1 sur 1

Scripter des lignes de commande SSH

Publié : 13 nov. 2018, 18:48
par lebretla
Bonjour
tout d'abord désolé si je ne suis pas au bon endroit pour cette demande et si celle-ci a déjà fait l'objet de discussion mais je ne sais ni par ou commencer, ni quoi taper dans la recherche sur le forum.

Voici mon problème :
Je dispose d'un raspberry raccordé à un écran de portable qui fait office de tableau de bord en lançant automatiquement ma page design jeedom adhoc.

Parfois au lieu d'afficher d'afficher ma page webdesign, le raspberry me sers de cadre photo autonome (cad non connecté au lan de la maison) et un diaporama se lance en affichant les photos stockées sur la carte sd du raspberry.

Pour basculer d'une conf à l'autre, je me connecte en ssh sur le raspberry et lance la commande suivante pour éditer le fichier autostart de lxde : sudo nano ~/.config/lxsession/LXDE-pi/autostart
dans ce fichier je commente/décommente la ligne qui lance ma page web design jeedom ou l'appli qiv pour le diaporama.
Ensuite, j'enregistre les modifs et je reboote le raspberry.

Mon idée/besoin/demande serai de scripter ces actions pour qu'ensuite via un virtuel ou un scénario ou un cron, jeedom bascule d'une conf à l'autre.
Si c'est plus simple a scripter, je pourrais avoir 3 fichiers autostart (autosart, autostart_jeedom et autostart_diapo) et au lieu d'éditer le fichier autostart, je pourrai copier autostart_jeedom vers autostart lorsque je veux lancer la conf jeedom au reboot.

Mais voilà, je ne sais pas par ou commencer dans jeedom pour faire ceci.
merci

Re: Scripter des lignes de commande SSH

Publié : 13 nov. 2018, 19:34
par kerdale
avec le plugin script

Re: Scripter des lignes de commande SSH

Publié : 13 nov. 2018, 19:39
par lebretla
merci pour cette première piste qui confirme que mon post est au bon endroit ;-)
je vais éplucher la doc du plugin pour trouver comment me connecter en ssh au raspberry et passer mes commandes alors.

Re: Scripter des lignes de commande SSH

Publié : 13 nov. 2018, 20:06
par Jeandhom
Tu as un exemple ici en php : viewtopic.php?f=59&t=38112&p=645827#p645827

Re: Scripter des lignes de commande SSH

Publié : 14 nov. 2018, 13:26
par lebretla
J'avance, je cherche et parfois je trouve pas.
j'ai donc créé mon script avec le plugin script, pour l'instant, je teste un simple envoi de la commande sudo reboot mais j'ai le message d'erreur suivant lorsque je veux sauvegarder mon script :
Erreur dans l'exécution du terminal, la valeur retournée est : 255. Détails : Array ( [0] => Host key verification failed. )
je trouve rien de probant pour me dépatouiller de cette erreur sans doute un truc tellement simple que personne ne là ;-)

Re: Scripter des lignes de commande SSH

Publié : 14 nov. 2018, 14:49
par coke
salut
tu peut utiliser ce script
tu l'apelle "ssh_command.php"

tu copie colle ce qui suit a l'interieur:

Code : Tout sélectionner

#!/usr/bin/php
<?php
//s'utilise en ajoutant en argument @ip login pwd commande
$Hostname=$argv[1];
$Username=$argv[2];
$Password=$argv[3]; 
$Command=$argv[4];
  
$ssh = ssh2_connect($Hostname, 22);
ssh2_auth_password($ssh, $Username, $Password);
$stream = ssh2_exec($ssh, $Command);
stream_set_blocking($stream, true);

//renvoi la sortie de la commande si besoin
$response = '';
while($buffer = fread($stream, 4096)) {
$response .= $buffer;
}
 
fclose($stream);
echo $response;
?>
ensuite dans la requete tu met ssh-command.php @IP user pass Tacommande

Re: Scripter des lignes de commande SSH

Publié : 14 nov. 2018, 16:03
par lebretla
oui j'ai également essayé avec ce script et il ne se passes rien,
voici ma requête

Re: Scripter des lignes de commande SSH

Publié : 14 nov. 2018, 16:12
par coke
cela doit être a cause de ton sudo il doit attendre un mot de passe

Re: Scripter des lignes de commande SSH

Publié : 14 nov. 2018, 16:20
par lebretla
pourtant il est caché sous mon gribouilli noir donc il est normalement envoyé par le script ssh_command

Re: Scripter des lignes de commande SSH

Publié : 14 nov. 2018, 16:28
par coke
si tu te connecte en ssh sur ta machine et que tu tape ta commande sudo reboot en principe tu verra qu'il te demande le mot de pass root pour executer ta commande c'est ce que demande sudo..

Re: Scripter des lignes de commande SSH

Publié : 14 nov. 2018, 16:51
par lebretla
pour l'instant j'utilise putty et je me connecte en ssh et je m'authentifie
ensuite quand je tape sudo reboot, il ne me redemande pas le mdp root.

Re: Scripter des lignes de commande SSH

Publié : 15 nov. 2018, 11:11
par coke
tu peut essayer de mettre ta commande dans un fichier .sh sur ton linux..
et avec le script sous jeedom tu appelle ce .sh qui lui executera ce qu'il faut.

Re: Scripter des lignes de commande SSH

Publié : 15 nov. 2018, 15:11
par BaaTuuC
Wahoo ... pourquoi faire compliquer quand on peut faire simple ? ^^ pourquoi mettre du PHP la dedans ? :-o
Le plugin script est tout a fait capable de gérer le ssh ...

conseille: créer ton script bash depuis ton jeedom et test le (y compris connexion) pour qu'il soit executé.
Ensuite tu crées ton objet scrip dans ton jeedom. Le plugin ne fait qu'une surcouche de "présentation de ton script".
Petite particularité .. jeedom est executé par l'utilisateur www-data. C'est donc lui qui executera le script.

si tu dois faire du ssh je te conseille de faire de l'authentification par clé: attention il faut valider l'authent une premièere fois ..

Je résume:

1- tu fais ton script fonctionnelle qui répond a ton besoin connexion / modification fichier / reboot
2- tu crée une paire de clé a ton utilisateur www-data (attention par défaut il n'a pas de shell affecté)
3- tu lances une connexion manuelle avec www-data vers ton rpi
4- tu déplaces ton script dans le dossier du plugin script et tu crée ton objet script dans jeedom

et ca roule :)

Re: Scripter des lignes de commande SSH

Publié : 19 nov. 2019, 21:45
par pifou
Bonjour,
J'ai cherché la doc du plugin script :
https://jeedom.github.io/plugin-script/ ... Anchor-1-8
j'ai trouvé aussi ce post intéressant pour du ssh sur une machine distante :
viewtopic.php?t=22557
Mais je n'ai pas trouvé l'astuce pour lancer un script local (pas distant en ssh) mais à qui je souhaite transmettre les droits root - donc une commande que je devrais lancer avec sudo en ligne de commande... Pourtant ça doit bien être possible ?

Re: Scripter des lignes de commande SSH

Publié : 20 nov. 2019, 17:14
par Salvialf
Mais je n'ai pas trouvé l'astuce pour lancer un script local (pas distant en ssh) mais à qui je souhaite transmettre les droits root - donc une commande que je devrais lancer avec sudo en ligne de commande... Pourtant ça doit bien être possible ?
Salut,

Tu ne pourrais pas créer un script local contenant les droits root (*.sh par exemple) que tu appelles via le plugin script ? Il me semble que j'avais fait ça à une époque pour mettre à jour et redémarrer automatiquement mon raspi 1 fois par mois...

Re: Scripter des lignes de commande SSH

Publié : 20 nov. 2019, 19:37
par pifou
Salut,
en effet ça a marché, je ne savais pas c omment mettre le passwd dans le script mais en fait, il faut pas :) juste mettre "sudo" devant toutes les commandes qui le méritent, et mettre le login / passwd root (en l'occurence pi) dans le panel jeedom c'est suffisant.
merci!