Création d'un script shell et exécution

Résolu/Fermé
Nicekloe Messages postés 79 Date d'inscription lundi 30 octobre 2017 Statut Membre Dernière intervention 31 mai 2018 - Modifié le 12 mars 2018 à 11:33
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 16 mars 2018 à 18:56
Bonjour à tous

Très heureuse de vous revenir, bien que ma journée ne soit pas très bonne.
Je travaille en ce moment sur un projet sur l'OS Linux : Ubuntu et il me faut connecter deux machines virtuelles avec ssh, distribuer à chacune des deux une les clé privé/publique et ensuite écrire un script shell sur l'une des machines qui devra être exécuté par l'autre. Le script devra principalement servir à éteindre l'autre mv à un moment précis.

J'ai déjà fait les 3/4 du projet en je but sur la création du script shell ainsi que les commandes qui devront me servir à éteindre l'autre machine (genre j'ai MV1 et MV2. MV1 contient un script shell qui devra être envoyé à MV2 avec comme instruction "éteins-toi MV2 à 10h00"). Je suis néophyte en ce qui concerne l'univers Linux et j'avoue que je n'ai même pas d'idée sur où commencer.

Toute assistance serait la bienvenu et merci d'avance !
A voir également:

2 réponses

UnGnU Messages postés 1158 Date d'inscription lundi 2 mai 2016 Statut Contributeur Dernière intervention 22 décembre 2020 157
12 mars 2018 à 11:39
Salut,

Si la partie clé privée/publique est en place et fonctionnelle, une simple connexion ssh suivie de la commande adéquate devrait suffire amplement ;-)

ssh xxx@autre_machine 'shutdown -h now'


Bien évidemment, le compte "xxx" devra avoir les droits nécessaires pour éteindre ladite machine.
0
Nicekloe Messages postés 79 Date d'inscription lundi 30 octobre 2017 Statut Membre Dernière intervention 31 mai 2018 1
12 mars 2018 à 11:45
Bonjour UnGnU
Merci de m'avoir répondu aussi vite

Déjà j'ai essayer avec cette commande mais dès que je valide, c'est la mv courante qui s'éteint et non l'autre.

En plus, je souhaite plutôt automatisé les choses, de sorte que je n'ai pas besoin de me connecter à la MV2 chaque fois et de taper la commande pour qu'elle s'éteigne. Il faudrait que la tâche soit automatique, genre chaque jour à 22h00, le script contenant la commande pour éteindre la MV2 est exécuté et celle-ci est immédiatement éteinte, sans mon intervention.

C'est d'ailleurs pour ça que je parle d'écrire un script shell qui le fera
0
UnGnU Messages postés 1158 Date d'inscription lundi 2 mai 2016 Statut Contributeur Dernière intervention 22 décembre 2020 157 > Nicekloe Messages postés 79 Date d'inscription lundi 30 octobre 2017 Statut Membre Dernière intervention 31 mai 2018
12 mars 2018 à 13:17
Déjà j'ai essayer avec cette commande mais dès que je valide, c'est la mv courante qui s'éteint et non l'autre.
Tu dois mal t'y prendre. Je viens de refaire un test chez moi (avec la commande
hostname -s
à la place de
shutdown
, et c'est bien le nom de la machine distante qui s'affiche et non celui de la machine d'où est lancée la connexion ssh.

De plus cette commande
ssh autre_machine 'shutdown -h now'
est idéale puisqu'il suffit de configurer la crontab avec juste cette commande en paramètre pour que l'action désirée (extinction) de la machine se fasse à l'heure voule.
0
Nicekloe Messages postés 79 Date d'inscription lundi 30 octobre 2017 Statut Membre Dernière intervention 31 mai 2018 1
12 mars 2018 à 15:18
Désolée de déranger autant, mais c'est quoi la crontab??
0
Nicekloe Messages postés 79 Date d'inscription lundi 30 octobre 2017 Statut Membre Dernière intervention 31 mai 2018 1
12 mars 2018 à 15:18
Un exemple concret serait la bienvenue stp
0
UnGnU Messages postés 1158 Date d'inscription lundi 2 mai 2016 Statut Contributeur Dernière intervention 22 décembre 2020 157 > Nicekloe Messages postés 79 Date d'inscription lundi 30 octobre 2017 Statut Membre Dernière intervention 31 mai 2018
12 mars 2018 à 15:32
Test depuis un raspberry pi dénommé "pi-ole".
En gras les commandes, en italique le résultat des commandes.

Je lance la commande "
hostname -s
" (qui renvoie le nom de la machine) depuis le PC pi-ole :
pi@pi-ole ~ $ hostname -s
pi-ole

Je lance maintenant une connexion ssh vers un autre PC (dénommé brikabrak) avec en paramètre la commande "
hostname -s
" :
pi@pi-ole ~ $ ssh -p 2224 admin@192.168.10.201 'hostname -s'
brikabrak

Le nom renvoyé est bien celui de la machine distante. Donc la commande a bien été exécutée sur la machine distante et non sur la machine locale.
0
UnGnU Messages postés 1158 Date d'inscription lundi 2 mai 2016 Statut Contributeur Dernière intervention 22 décembre 2020 157
14 mars 2018 à 11:37
Salut,

Juste un truc auquel je n'avais pas pensé... lors de la génération des clés, as-tu mis une passphrase ?

Si oui, c'est cette passphrase qu'il te faut donner lorsque le mot de passe t'es demandé.

0
Nicekloe Messages postés 79 Date d'inscription lundi 30 octobre 2017 Statut Membre Dernière intervention 31 mai 2018 1
14 mars 2018 à 11:41
Bonjour UnGnU
Oui j'ai mis une passphrase et j'ai aussi essayer avec la passphrase lorsque le mdp m'a été demandé, mais le résultat est pareil
0
Danelectro Messages postés 1723 Date d'inscription samedi 25 février 2012 Statut Membre Dernière intervention 29 mars 2018 369
14 mars 2018 à 11:50
Si tu veux que ton script soit automatique il ne faut pas mettre de passphrase (c'est sécurisé mais je ne connais pas d'autre manière de faire)
0
Nicekloe Messages postés 79 Date d'inscription lundi 30 octobre 2017 Statut Membre Dernière intervention 31 mai 2018 1 > Danelectro Messages postés 1723 Date d'inscription samedi 25 février 2012 Statut Membre Dernière intervention 29 mars 2018
14 mars 2018 à 12:02
Bonjour Danelectro
En réalité vu que je suis bloqué au niveau de la génération des clés pour l'authentification, je n'ai même pas encore écrit de script (ce sur quoi je n'ai même pas encore d'idée).
Alors, ce que tu me conseilles de faire c'est de réessayer la génération de clés pour l'authentification mais cette fois ci en ne mettant pas de passphrase??
0
Danelectro Messages postés 1723 Date d'inscription samedi 25 février 2012 Statut Membre Dernière intervention 29 mars 2018 369
Modifié le 14 mars 2018 à 14:16
Oui, en gros tu vas faire :

Génération des clés dans /home/ton_user/.ssh (sans passphrase)
$ ssh-keygen
¹
Copie de ta clé publique sur la machine distante pour permettre la connexion sans mdp (basée sur user@machine) - on te demandera le mot de passe de la machine distante²
$ ssh-copy-id login_machine_distante@ip_machine_distante

Pour le script c'est tout simple, comme l'a dit @UnGnU, tu ouvres un éditeur de texte (nano), tu y écris :
#!/bin/bash
ssh login_machine_distante@ip_machine_distante 'shutdown -h now'

Puis tu l'enregistres et tu fermes nano (
Ctrl+O > nom_du_script.sh > Ctrl+X
)

Pour tester :
$ ./nom_du_script.sh


Pour en faire une tâche planifiée :
$ crontab -e

Tu y entres :
0 22 * * * /chemin/vers/ton/script.sh

Ca veut dire "exécute le script à 22h00 quelque soit le jour, le mois, et le jour de la semaine".
Tu fermes nano comme tout à l'heure et voilà !


¹ N'écris pas le
$
, c'est pour représenter ton prompt
² ssh-copy-id est en fait un script qui se connecte en SSH à la machine distante et copie ta clé publique dans .ssh/authorized_keys, il a donc besoin de ta clé publique (par défaut : ~/.ssh/id_rsa.pub), et du login/mdp de la machine distante
0
Nicekloe Messages postés 79 Date d'inscription lundi 30 octobre 2017 Statut Membre Dernière intervention 31 mai 2018 1 > Danelectro Messages postés 1723 Date d'inscription samedi 25 février 2012 Statut Membre Dernière intervention 29 mars 2018
14 mars 2018 à 14:14
D'accord
J'y vais tout de suite je te reviens stp
0