我经常需要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
,这是有效的,但是它有几个问题......
我不想做 root@server1,我想做 sshserver1 (在我的本地
.my_bashrc
文件中定义为别名。所以我希望以某种方式获取并可用它,以便我可以使用这个别名。运行 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