我经常必须登录到几个服务器中的一个,然后进入这些机器上的几个目录中的一个。目前我做的事情是这样的:

localhost ~]$ ssh somehost

Welcome to somehost!

somehost ~]$ cd /some/directory/somewhere/named/Foo
somehost Foo]$ 

我有脚本,可以确定哪个主机和哪个目录,我需要进入,但我不知道如何做到这一点:

localhost ~]$ go_to_dir Foo

Welcome to somehost!

somehost Foo]$

有没有简单、聪明或任何方法可以做到这一点?


当前回答

我已经创建了一个工具,SSH和CD到一个服务器连续-恰当地命名为sshcd。对于你给出的例子,你可以简单地使用:

sshcd somehost:/some/directory/somewhere/named/Foo

如果你有任何问题或问题,请告诉我!

其他回答

SSH本身提供了一种通信手段,它不知道任何关于目录的信息。因为您可以指定要执行哪个远程命令(默认情况下,这是您的shell),所以我将从这里开始。

您可以执行以下操作:

ssh -t xxx.xxx.xxx.xxx "cd /directory_wanted ; bash --login"

这样,您将在directory_wanted上获得一个登录shell。


解释

-t强制伪终端分配。这可以用于在远程机器上执行任意基于屏幕的程序,这非常有用,例如在实现菜单服务时。 多个-t选项强制分配tty,即使ssh没有本地tty。

如果不使用-t,则不会出现提示。 如果你不加;Bash则连接将被关闭,并将控制权返回到本地计算机 如果你不添加bash——login,那么它将不会使用你的配置,因为它不是一个登录shell

登录后直接进入的另一种方法是创建“别名”。当你登录系统时,只要输入这个别名,你就会在那个目录下。

示例:Alias = myfolder '/var/www/Folder'

登录到系统后,输入该别名(这可以从系统的任何部分进行) 这个命令如果不在bashrc中,将适用于当前会话。因此,您还可以将这个别名添加到bashrc,以便将来使用它

$ myfolder =>带您到该文件夹

我已经创建了一个工具,SSH和CD到一个服务器连续-恰当地命名为sshcd。对于你给出的例子,你可以简单地使用:

sshcd somehost:/some/directory/somewhere/named/Foo

如果你有任何问题或问题,请告诉我!

我使用环境变量CDPATH