Connexion ssh via shell
Fermé
Utilisateur anonyme
-
30 janv. 2017 à 20:05
mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 - 2 févr. 2017 à 10:13
mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 - 2 févr. 2017 à 10:13
A voir également:
- Connexion ssh via shell
- Gmail connexion - Guide
- Gmail connexion autre compte - Guide
- Hotmail connexion - Guide
- Facebook connexion - Guide
- Connexion chromecast - Guide
1 réponse
mamiemando
Messages postés
33446
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 décembre 2024
7 812
31 janv. 2017 à 10:33
31 janv. 2017 à 10:33
Bonjour
Je vais appeler client la machine qui lance le script et donc la commande ssh, et serveur la machine à laquelle tu te connecte en ssh.
Au moment de lancer ton script, si la commande ssh rate (par exemple à cause d'un problème réseau ou de mot de passe), celle-ci retourne un code d'erreur que tu peux récupérer dans la variable
Tu peux donc côté client facilement vérifier qu'une commande marche ou pas.
Exemple :
Testons :
Tu noteras que dans mon exemple, le programme sort (
Tu peux faire de même avec ta commande
Ensuite, si la connexion réussie, alors ce n'est plus ton script client qui "affiche" du texte mais la machine côté serveur. Note que tant que ta commande ssh est en cours, le script côté client est "en pause", puisque cette instruction n'est pas finie.
Côté serveur, le fichier
Tu peux aussi écrire sur le compte ssh atteint un fichier
Ensuite tout dépend de ce que doit faire ton script. Si par exemple c'est copier un fichier qui vient du serveur (ou vers le serveur), ou lancer une commande sur le serveur, alors peut être qu'il faut écrire un truc du genre :
Il peut aussi être intéressant de configurer une clé ssh pour que le script s'exécute sans avoir à demander de mot de passe à chaque commande ssh ou scp.
Bonne chance
Je vais appeler client la machine qui lance le script et donc la commande ssh, et serveur la machine à laquelle tu te connecte en ssh.
Au moment de lancer ton script, si la commande ssh rate (par exemple à cause d'un problème réseau ou de mot de passe), celle-ci retourne un code d'erreur que tu peux récupérer dans la variable
$?. La valeur prise par cette variable est spécifiée dans
man ssh, section valeur retournée (appelé code d'erreur ou code d'exécution). Par convention, les commandes retournent
0quand tout va bien et un entier positif non nul sinon.
Tu peux donc côté client facilement vérifier qu'une commande marche ou pas.
Exemple :
#/bin/sh ls ascacsaac if [ $? -ne 0 ] then echo ":(" 1>&2 exit 1 fi exit 0
Testons :
(mando@velvet) (~) $ sh toto.sh
ls: impossible d'accéder à 'ascacsaac': Aucun fichier ou dossier de ce type
:(
Tu noteras que dans mon exemple, le programme sort (
exit) avec un code d'erreur. Ce qui permet à quelqu'un qui appellerait
toto.shde récupérer lui aussi un code d'exécution.
Tu peux faire de même avec ta commande
ssh.
Ensuite, si la connexion réussie, alors ce n'est plus ton script client qui "affiche" du texte mais la machine côté serveur. Note que tant que ta commande ssh est en cours, le script côté client est "en pause", puisque cette instruction n'est pas finie.
Côté serveur, le fichier
/etc/motdsert à écrire un message de bienvenue, mais il est global à tous les utilisateurs et toutes les connexions à cette machine (par ssh ou en console).
Tu peux aussi écrire sur le compte ssh atteint un fichier
~/.bash_loginou
~/.bashrc(il sera alors limité à cette utilisateur, mais suppose qu'il utilise un shell bash). Si un autre shell est utilisé, il faut trouver le nom du fichier équivalent.
Ensuite tout dépend de ce que doit faire ton script. Si par exemple c'est copier un fichier qui vient du serveur (ou vers le serveur), ou lancer une commande sur le serveur, alors peut être qu'il faut écrire un truc du genre :
scp toto@serveur:/chemin/vers/fichier /repertoire/destination
ssh toto@serveur ma_commande
Il peut aussi être intéressant de configurer une clé ssh pour que le script s'exécute sans avoir à demander de mot de passe à chaque commande ssh ou scp.
Bonne chance
31 janv. 2017 à 12:22
Une dernière chose, un point que je n'arrive pas du tout à éclaircir...
J'ai mon script admin, avec un case qui me permet en 1 de me connecter en ssh sur un de mes serveurs.
Suite à cela, un script se lance (.bashrc), dans ce script j'ai aussi un case avec certaines commandes, dont une qui me permet de le quitter, et aussi de quitter le serveur pour revenir sur mon menu administration.
Seulement, à cette commande, il termine juste l'exécution du script et ne me delog pas, je mets un exit ou exit 0 rien n'y fait.
Aurais-tu une idée/solution?
1 févr. 2017 à 10:31
1 févr. 2017 à 11:04
Aujourd'hui mon exit fonctionne et me kick bien de la session.
Reste une colle à résoudre, sur la session à laquelle j'accède à distance via ssh, je mets dans mon .bashrc un
if -test -e $SSH_TTY
Cheminscript.sh
fi
Cela fonctionne quand je me connecte en ssh, mais plante ma session en locale, je ne comprends pas pourquoi.
2 févr. 2017 à 10:13