Création d'un script shell et exécution
Résolu
Nicekloe
Messages postés
82
Statut
Membre
-
zipe31 Messages postés 38797 Statut Contributeur -
zipe31 Messages postés 38797 Statut Contributeur -
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
- Classic shell - Télécharger - Personnalisation
- Script vidéo youtube - Guide
- Creation compte gmail - Guide
- Création site web - Guide
- Création d'un compte google - Guide
2 réponses
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.
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é.
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??
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
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
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.
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.