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
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 !
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:
- Création d'un script shell et exécution
- Script vidéo youtube - Guide
- Creation compte gmail - Guide
- Création compte google - Guide
- Media creation tool - Télécharger - Systèmes d'exploitation
- Création site web - Guide
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
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 ;-)
Bien évidemment, le compte "xxx" devra avoir les droits nécessaires pour éteindre ladite machine.
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.
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
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é.
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é.
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
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
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
Danelectro
Messages postés
1737
Date d'inscription
samedi 25 février 2012
Statut
Membre
Dernière intervention
29 mars 2018
371
14 mars 2018 à 11:50
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)
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
1737
Date d'inscription
samedi 25 février 2012
Statut
Membre
Dernière intervention
29 mars 2018
14 mars 2018 à 12:02
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??
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??
Danelectro
Messages postés
1737
Date d'inscription
samedi 25 février 2012
Statut
Membre
Dernière intervention
29 mars 2018
371
Modifié le 14 mars 2018 à 14:16
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)
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²
Pour le script c'est tout simple, comme l'a dit @UnGnU, tu ouvres un éditeur de texte (nano), tu y écris :
Puis tu l'enregistres et tu fermes nano (
Pour tester :
Pour en faire une tâche planifiée :
Tu y entres :
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
² 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
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
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
1737
Date d'inscription
samedi 25 février 2012
Statut
Membre
Dernière intervention
29 mars 2018
14 mars 2018 à 14:14
14 mars 2018 à 14:14
D'accord
J'y vais tout de suite je te reviens stp
J'y vais tout de suite je te reviens stp
12 mars 2018 à 11:45
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
12 mars 2018 à 13:17
De plus cette commande 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.
12 mars 2018 à 15:18
12 mars 2018 à 15:18
12 mars 2018 à 15:32
En gras les commandes, en italique le résultat des commandes.
Je lance la commande " " (qui renvoie le nom de la machine) depuis le PC pi-ole :
Je lance maintenant une connexion ssh vers un autre PC (dénommé brikabrak) avec en paramètre la commande " " :
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.