[SHELL]
Gopher
-
SKZ81 -
SKZ81 -
Bonjour à tous.
Je suis en train d'écrire un scripts en shell /bin/sh pour plateformes Linux (RH AS3 et Slack).
J'utilise une connexion SSH par échanges de clés.
Je voudrai écrire la clé publique de mes clients (RH AS3) dans le fichier .ssh/authorized_key2 (Slack 10) de manière unique.
En bref, si la clé est déjà dans le fichier, je voudrai ne pas l'écrire de nouveau. Or je n'arrive pas a construire un test valide pour cela.
Ci-dessous une partie de mon script :
Le test ne fonctionne pas et me renvoi "no such file or directory" concernant .ssh/authorized_keys2
Or la commande :
fonctionne parfaitement.
Merci de l'attention que vous porterez à cette question.
PS : Je n'utilise pas ssh-copy-id car il n'est pas disponible sur tous les postes clients.
Je suis en train d'écrire un scripts en shell /bin/sh pour plateformes Linux (RH AS3 et Slack).
J'utilise une connexion SSH par échanges de clés.
Je voudrai écrire la clé publique de mes clients (RH AS3) dans le fichier .ssh/authorized_key2 (Slack 10) de manière unique.
En bref, si la clé est déjà dans le fichier, je voudrai ne pas l'écrire de nouveau. Or je n'arrive pas a construire un test valide pour cela.
Ci-dessous une partie de mon script :
mykey=`cat ${pwdhome}/.ssh/id_rsa.pub`
ssh secure@xxx.xxx.xxx.xxx \
"if [ "$(grep "${mykey}" .ssh/authorized_keys2)" != "" ];then echo "${mykey}" >> .ssh/authorized_keys2;fi"
Le test ne fonctionne pas et me renvoi "no such file or directory" concernant .ssh/authorized_keys2
Or la commande :
ssh secure@xxx.xxx.xxx.xxx \
"grep "${mykey}" .ssh/authorized_keys2)"
fonctionne parfaitement.
Merci de l'attention que vous porterez à cette question.
PS : Je n'utilise pas ssh-copy-id car il n'est pas disponible sur tous les postes clients.
2 réponses
-
Je viens de résoudre mon probleme qui comme a chaque fois qu'un probleme est résolu, parait simple.
Voilà ce que j'ai fini par écrire :ssh secure@xxx.xxx.xxx.xxx "cat .ssh/authorized_keys2 | grep '${mykey}' || echo "${mykey}" >> .ssh/authorized_keys2" &> /dev/null
Je me passe de cette vilaine condition "if" et le remplace par un "||" de réalisation sur échec. Parafait donc .
Merci à ceux qui aurront pris la peine de lire mon post. -
"$(grep "${mykey}" .ssh/authorized_keys2)" != ""
T'as pas l'impression de comparer deux chaines de caractère directement ?
tu voulais pas écrire quelque chose du genre :
`$(grep "${mykey}" .ssh/authorized_keys2)` != ""
(Ceci dis, j'ai rien testé...)