Je me connecte chaque jour en SSH à une multitude de serveurs différents et certains d'entre eux ont des structures de système de fichiers différentes pour leurs sites Web. Chaque fois que je change de serveur, je dois déterminer où je vais accéder aux fichiers que je veux vraiment (car c'est très rarement que je veux être dans ~
).
J'utilise des fichiers Fabric pour automatiser toutes mes actions (pousser vers git, SSH automatisé vers le serveur pour extraire de git, redémarrer l'application Web, changer les dépendances, etc.), donc je me demandais si je ne pouvais pas aussi lui dire que je veux pour SSH dans le bon répertoire afin que je puisse exécuter fab ssh
et soyez dans une session SSH normale, juste au bon endroit et commencez à travailler immédiatement.
Il ne s'agit pas de tissu cependant; veuillez l'ignorer. Fabric exécute simplement un lot de commandes. Mon argument est avec le ssh
commande. C'est ce que je vais dire à Fabric d'exécuter.
Alors, comment puis-je obtenir ssh
vers cd
dans un répertoire spécifique lors de la connexion ?
Remarque :cela ne peut pas être un serveur ou une chose à l'échelle de l'utilisateur. J'ai plusieurs sites Web sous un seul utilisateur sur certains serveurs, donc je colle quelque chose dans ~/.bashrc
ne fonctionnerait pas pour moi.
Réponse acceptée :
Eh bien, je savais que je pouvais exécuter quelque chose lors de la connexion, mais je savais que cela se terminerait immédiatement après l'exécution. Ce dont je me souviens maintenant, c'est que je peux exécuter autant que je veux sur un serveur distant. Vous pouvez simplement enchaîner les commandes !
ssh [email protected] -t "cd /websites/website ; /bin/bash"
Maintenant, je peux juste dire à Fabric de faire ça et nous sommes partis. Simple.
J'ai bien dit que cela n'avait rien à voir avec le tissu, mais voici également la nouvelle partie de mon script de tissu, basé sur ce qui précède :
def ssh():
''' SSH into the remote server at the correct directory '''
local('ssh -t -p%(port)s %(server)s "cd %(remote_dir)s ; /bin/bash"' % {
'server': server_host,
'port': server_port,
'remote_dir': remote_dir,
})
Je crée un lien symbolique autour du même script pour que les variables (server_host
, server_port
et remote_dir
) changer d'un site à l'autre.
Étant donné que Fabric peut gérer la connexion sortante, vous pouvez également procéder comme suit :
def ssh():
''' SSH into the remote server at the correct directory '''
run('cd %s ; /bin/bash' % remote_dir)
Cela fonctionne mais la sortie est précédée d'une chaîne de Fabric. Cela a rendu l'invite de plus de 80 caractères et même si j'ai des tonnes de résolution, c'est trop pour moi 🙂
Connexe :Unity équivalent à la fonctionnalité "commentaires" de KDE ?