Kann ich SSH in ein bestimmtes Verzeichnis?

9

Ich SSH in eine Vielzahl von verschiedenen Servern jeden Tag 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 möchte (weil ich sehr selten darin sein möchte ~).

Ich verwende Fabric-Dateien, um alle meine Aktionen zu automatisieren (Pushing auf Git, automatisiertes SSH auf den Server, um von Git abzurufen, Neustart der Webanwendung, Ändern von Abhängigkeiten usw.). Daher habe ich mich gefragt, ob ich nicht auch sagen kann, dass ich es möchte zu SSH in das richtige Verzeichnis, damit ich laufen fab sshund in einer normalen SSH-Sitzung sein kann, genau am richtigen Ort und sofort mit der Arbeit beginnen kann.

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

Also wie kann ich sshauf cdin ein bestimmtes Verzeichnis auf Login -Daten ?

Hinweis: Dies kann kein Server oder eine benutzerweite Sache sein. Ich habe auf einigen Servern mehrere Websites unter einem Benutzer, daher ~/.bashrcwürde es für mich nicht funktionieren , etwas einzustecken.

Oli
quelle

Antworten:

9

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

ssh user@server -t "cd /websites/website ; /bin/bash"

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


Ich habe gesagt, dass es nichts mit dem Stoff zu tun hat, aber hier ist auch der neue Teil meines Stoffskripts, 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 Symlink das gleiche Skript um so die Variablen ( server_host, server_portund remote_dir) Wechsel von Ort zu Ort.

Da Fabric die ausgehende Verbindung verarbeiten kann, können Sie dies auch einfach 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 aus Fabric vorangestellt. Dies hat die Eingabeaufforderung über 80 Zeichen lang gemacht und obwohl ich eine Menge Auflösung habe, ist das zu viel für mich :)

Oli
quelle