Salut à tout le monde,
Après de longue recherche, j'ai réalisé un script pour injecter ma clé publique sur les clients pour ensuite les commander avec Fabric sans retaper mon mdp :
Code :
- #SYNTAXE
- # fab -f fichier.py PROCEDURE -H IP.IP.IP.IP
- import sys
- import os
- from fabric.api import env, run, settings
- #DECLARATION DES VARIABLES
- SSH_HOME = "~/.ssh"
- AUTH_KEYS = "~/.ssh/authorized_keys"
- PUB_KEY = "~/.ssh/id_rsa.pub"
- #PROCEDURE SILENCIEUSE D'OBTENTION DE LA CLE A PARTIR DU FICHIER SUR LE MASTER
- def _get_public_key(key_file):
- with open(os.path.expanduser(key_file)) as fd:
- key = fd.readline().strip()
- return key
- #PROCEDURE SILENCIEUSE QUI PERMET D'INJECTER LA CLE DANS LE FICHIER CLIENT
- def _add_key(filename=PUB_KEY):
- commands = (
- "mkdir -p %s;"
- "chmod 700 %s;"
- """echo "%s" >> %s;"""
- "chmod 644 %s;"
- )
- t = (SSH_HOME,SSH_HOME,_get_public_key(filename),AUTH_KEYS,AUTH_KEYS)
- command = commands % t
- run(command)
- #PROCEDURE A APPELER AFIN DE VERIFIER LA PRESENCE OU NON DE LA CLE SUR LE CLIENT
- def key_in_file(filename=PUB_KEY):
- with settings(warn_only=True):
- result = run('grep "%s" /root/.ssh/authorized_keys' % _get_public_key(filename))
- if result.return_code != 0:
- _add_key(filename=PUB_KEY)
- print ("key injected ==> []" )
- else:
- print ("!! key already injected !!" )
|
ref :
http://stackoverflow.com/questions [...] mote-shell
http://www.fabfile.org/
Message édité par nomiss le 23-04-2014 à 10:36:37