我可以通过 SSH 进入特定目录吗?

我可以通过 SSH 进入特定目录吗?

我每天都会通过 SSH 访问大量不同的服务器,其中一些服务器的网站文件系统结构不同。每次更换服务器时,我都必须弄清楚要从哪里获取我真正想要的文件(因为我很少想访问~)。

我使用 Fabric 文件来自动化我的所有操作(推送到 git、自动通过 SSH 连接到服务器以从 git 拉取、重新启动 Web 应用程序、更改依赖项等),所以我想知道我是否不能告诉它我想通过 SSH 进入正确的目录,这样我就可以运行fab ssh并进入正常的 SSH 会话,就在正确的位置并立即开始工作。

不过,这与 Fabric 无关;请忽略它。Fabric 只是在运行一批命令。我的论点是命令ssh。这就是我要告诉 Fabric 运行的内容。

那么我如何在登录时ssh进入cd特定目录?

注意:不能是服务器或用户范围内的事情。我在某些服务器上的一个用户下有多个网站,因此将某些东西插入其中~/.bashrc对我来说不起作用。

答案1

我知道我可以在登录时运行某些东西,但我知道运行后它会立即退出。我现在记得的是,我可以在远程服务器上随意运行。您可以将命令链接在一起!

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

现在我只要告诉 fabric 执行此操作就可以了。很简单。


我确实说过这与 Fabric 无关,但这也是基于上述内容的我的 Fabric 脚本的新部分:

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

我对同一个脚本进行符号链接,因此变量(server_hostserver_portremote_dir)在不同站点间变化。

因为 Fabric 可以处理出站连接,所以您也可以这样做:

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

这确实有效,但输出前面添加了来自 Fabric 的字符串。这使得提示符长度超过 80 个字符,虽然我有很多解析度,但这对我来说太过分了 :)

相关内容