Je me demande si quelqu'un a des idées là-dessus. J'ai un script bash qui devrait mettre ma clé ssh sur une machine distante. Adoptée à partir here, le script lit,Commande shell python - pourquoi ça ne marchera pas?
#!/usr/bin/sh
[email protected]
KEY="$HOME/.ssh/id_rsa.pub"
KEYCODE=`cat $KEY`
ssh -q $REMOTEHOST "mkdir ~/.ssh 2>/dev/null; chmod 700 ~/.ssh; echo "$KEYCODE" >> ~/.ssh/authorized_keys; chmod 644 ~/.ssh/authorized_keys"
Cela fonctionne. Le script python équivalent doit être
#!/usr/bin/python
import os
os.system('ssh -q %(REMOTEHOST)s "mkdir ~/.ssh 2>/dev/null; chmod 700 ~/.ssh; echo "%(KEYCODE)s" >> ~/.ssh/authorized_keys; chmod 644 ~/.ssh/authorized_keys"' %
{'REMOTEHOST':'[email protected]',
'KEYCODE':open(os.path.join(os.environ['HOME'],
'.ssh/id_rsa.pub'),'r').read()})
Mais dans ce cas, je reçois que
sh: line 1: >> ~/.ssh/authorized_keys; chmod 644 ~/.ssh/authorized_keys: No
such file or directory
Qu'est-ce que je fais mal? J'ai essayé d'échapper aux citations les plus internes mais le même message d'erreur ... Merci d'avance pour vos réponses.
Arg! Donc c'était * la citation ... Je suppose que j'aurais pu aussi faire '...' ... '' ... '' ... '' ... '' mais j'ai été momentanément confondue avec la solution bash de le web qui a fonctionné avec les deux ensembles de doubles guillemets imbriqués ... En tout cas merci pour l'admonestation. Je vais aller lire sur sous-processus. – hatmatrix