在 gnome-terminal 中打开多个选项卡,让它们自动无密码 ssh 到服务器,并使用我的 bashrc 文件中的别名来执行此操作

在 gnome-terminal 中打开多个选项卡,让它们自动无密码 ssh 到服务器,并使用我的 bashrc 文件中的别名来执行此操作

我经常需要ssh同时检查我们运行的四台左右的服务器。我已经给这些起了别名。

SERVER1=root@server1
alias sshserver1='ssh -t ${SERVER1} "bash -rcfile .my_bashrc"'
# Above line runs my specific bashrc called my_bashrc 
# (this is because many users log in as root, and we 
# have separate bashrcs for each of us. Yes, we should
# have different user accounts etc, but it is what it is).

我的ssh这些服务器没有密码。

目前,我确实打开了 gnome-terminal 的一个实例,然后 tun Ctrl+T四次以打开四个选项卡。然后循环浏览它们,在第一个中输入 sshserver1,在第二个中输入 sshserver2 等等。这很烦人。

我想要的是能够创建一个像

function sshallservers()
{
     #Function to open tabs and ssh into four servers
     1.) Open first tab, which must source specific .my_bashrc 
     to pick up the aliases, run alias sshserver1, thereby 
     ssh-ing to the relevant server.
     2.) Repeat for N servers
}

所以我尝试过

gnome-terminal --tab --command "bash -c 'ssh root@server1'" 
               --tab --command "bash -c 'ssh root@server2'"

就打开选项卡和 ing 而言ssh,这是有效的,但是它有几个问题......

  1. 我不想做 root@server1,我想做 sshserver1 (在我的本地.my_bashrc文件中定义为别名。所以我希望以某种方式获取并可用它,以便我可以使用这个别名。

  2. 运行 ssh 命令后,我希望它获取远程.my_bashrc文件,这可以通过使用别名来实现,因为我的别名被定义为使用 -rcfile 标志获取该文件

我找不到使新选项卡源成为本地文件的方法bashrc,因此无法使我的别名正常工作。由于我的别名不起作用,因此我无法告诉 ssh 运行该命令,因此也不会自动获取bash -rcfile .my_bashrc远程文件。bashrc

答案1

我记得alias不能在其中使用变量 - 所以请使用function

function sshserv {
    gnome-terminal --tab --command "
        bash -c 'ssh root@$1 \"bash -rcfile .my_bashrc\"'"
} 

并用作

sshserv server1

相关内容