我每天通过 SSH 连接到许多不同的服务器,其中一些服务器的网站具有不同的文件系统结构。每次我更换服务器时,我都必须弄清楚我要去哪里访问我真正想要的文件(因为我很少想要进入~)。
我使用 Fabric 文件来自动化我的所有操作(推送到 git、自动 SSH 到服务器以从 git 中提取、重新启动 Web 应用程序、更改依赖项等),所以我想知道我是否也不能告诉它我想要SSH 到正确的目录,这样我就可以运行fab ssh并处于正常的 SSH 会话中,就在正确的位置并立即开始工作。
不过,这与 Fabric 无关;请忽略它。Fabric 只是在运行一批命令。我的论点是ssh命令。这就是我要告诉 Fabric 运行的内容。
ssh给cd到上登录一个特定的目录?注意:这不能是服务器或用户范围的事情。我在某些服务器上的一个用户下有多个网站,因此粘贴某些~/.bashrc内容对我不起作用。
好吧,我知道我可以在登录时运行一些东西,但我知道它会在运行后直接退出。我现在记得的是,我可以在远程服务器上随心所欲地运行。您可以将命令链接在一起!
ssh user@server -t "cd /websites/website ; /bin/bash"
Run Code Online (Sandbox Code Playgroud)
现在我可以告诉 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,
})
Run Code Online (Sandbox Code Playgroud)
我对相同的脚本进行符号链接,因此变量 ( server_host,server_port和remote_dir) 从站点到站点更改。
因为 Fabric 可以处理出站连接,所以您也可以这样做:
def ssh():
''' SSH into the remote server at the correct directory '''
run('cd %s ; /bin/bash' % remote_dir)
Run Code Online (Sandbox Code Playgroud)
这确实有效,但输出前面带有来自 Fabric 的字符串。这使得提示超过 80 个字符,虽然我有很多分辨率,但这对我来说太多了:)
| 归档时间: |
|
| 查看次数: |
10941 次 |
| 最近记录: |