GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Ssh in ein bestimmtes Verzeichnis?

Ich nutze täglich SSH für eine Vielzahl verschiedener Server und einige von ihnen haben unterschiedliche Dateisystemstrukturen für ihre Websites. Jedes Mal, wenn ich den Server wechsle, muss ich herausfinden, wo ich zu den Dateien komme, die ich wirklich haben möchte (weil es sehr selten vorkommt, dass ich in ~ sein möchte ).

Ich verwende Fabric-Dateien, um alle meine Aktionen zu automatisieren (Pushen auf Git, automatisiertes SSH zum Server zum Pullen von Git, Neustart der Webanwendung, Ändern von Abhängigkeiten usw.), also habe ich mich gefragt, ob ich ihr nicht auch sagen könnte, dass ich will per SSH in das richtige Verzeichnis, damit ich fab ssh ausführen kann und in einer normalen SSH-Sitzung genau an der richtigen Stelle sein und sofort mit der Arbeit beginnen.

Hier geht es jedoch nicht um Fabric; bitte ignoriere es. Fabric führt nur eine Reihe von Befehlen aus. Mein Argument ist mit dem ssh Befehl. Das werde ich Fabric sagen, dass er laufen soll.

Wie bekomme ich ssh zu cd in ein bestimmtes Verzeichnis beim Login?

Hinweis:Dies kann nicht sei eine server- oder benutzerweite Sache. Ich habe auf einigen Servern mehrere Websites unter einem Benutzer, also stecke etwas in ~/.bashrc würde bei mir nicht funktionieren.

Akzeptierte Antwort:

Nun, ich wusste, dass ich beim Anmelden etwas ausführen konnte, aber ich wusste, dass es direkt nach dem Ausführen beendet werden würde. Woran ich mich jetzt erinnere, ist, dass ich auf einem Remote-Server so viel ausführen kann, wie ich möchte. Sie können die Befehle einfach verketten!

ssh [email protected] -t "cd /websites/website ; /bin/bash"

Jetzt kann ich Fabric einfach sagen, dass er das tun soll, und wir sind weg. Einfach.

Ich habe gesagt, dass es nichts mit dem Fabric zu tun hat, aber hier ist auch der neue Teil meines Fabric-Skripts, basierend auf dem oben Gesagten:

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,
    })

Ich verlinke dasselbe Skript per Symlink, sodass die Variablen (server_host , server_port und remote_dir ) von Seite zu Seite wechseln.

Da Fabric die ausgehende Verbindung handhaben kann, können Sie auch einfach Folgendes tun:

def ssh():
    ''' SSH into the remote server at the correct directory '''
    run('cd %s ; /bin/bash' % remote_dir)

Dies funktioniert, aber der Ausgabe wird eine Zeichenfolge von Fabric vorangestellt. Dadurch wurde die Eingabeaufforderung über 80 Zeichen lang und obwohl ich eine Menge Auflösung habe, ist das zu viel für mich 🙂

Siehe auch:Unity-Äquivalent zur KDE-Kommentarfunktion?
Ubuntu
  1. So klonen Sie ein Git-Repository in einen bestimmten Ordner

  2. Ssh – Beschränken eines Ssh/scp/sftp-Benutzers auf ein Verzeichnis?

  3. Bestimmte Dateien zu einer einzigen Datei verketten?

  4. Ssh, Sudo, dann herunterladen?

  5. Ssh – Versuch, per SSH in den Server zu gelangen und Key_load_public zu erhalten:Kein solcher Datei- oder Verzeichnisfehler?

Wie man SSH in einen laufenden Docker-Container einfügt und Befehle ausführt

So führen Sie SSH in ein bestimmtes Verzeichnis unter Linux aus

So deaktivieren Sie die SSH-Anmeldung für einen bestimmten Benutzer in Linux

Wie man SSH in einen Raspberry Pi einfügt [Anfängertipp]

So führen Sie SSH in einen Docker-Container ein

Ändern Sie das Standardverzeichnis, wenn ich SSH zum Server verwende