GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Ssh dans un répertoire spécifique ?

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 ?
Ubuntu
  1. Comment cloner un référentiel Git dans un dossier spécifique

  2. Autorisations SSH et répertoire personnel ?

  3. Concaténer des fichiers spécifiques en un seul fichier ?

  4. Exécuter une commande spécifique dans un répertoire donné sans y accéder ?

  5. Comment Ssh dans un répertoire spécifique ?

Comment se connecter en SSH à un conteneur Docker en cours d'exécution et exécuter des commandes

Comment SSH dans un répertoire particulier sous Linux

Comment désactiver la connexion SSH à un utilisateur spécifique sous Linux

Comment se connecter en SSH à un Raspberry Pi [Astuce du débutant]

Comment se connecter en SSH à un conteneur Docker

Restreindre la connexion SSH à une adresse IP ou à un hôte spécifique