Abrindo várias abas no gnome-terminal, tendo-as automaticamente sem senha ssh para servidores e fazendo isso usando alias do meu arquivo bashrc

2

Eu regularmente tenho que ssh em quatro ou mais servidores que corremos, ao mesmo tempo. Eu aliased estes como.

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).

Meu ssh é sem senha para esses servidores.

Atualmente eu abro uma instância do gnome-terminal, depois tun Ctrl + T quatro vezes para abrir quatro abas. Em seguida, percorra-os digitando sshserver1 no primeiro, sshserver2 no segundo, etc. Isso é irritante.

O que eu quero é poder criar uma função como

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
}

Então eu tentei com

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

E isso funciona na medida em que abrem as abas e ssh ing, no entanto, tem vários problemas ...

  1. Eu não quero fazer root @ server1, eu quero fazer sshserver1 (definido como um alias no meu arquivo .my_bashrc local. Então eu quero de alguma forma isso ser originado e disponível de tal forma que eu possa usar este alias.

  2. Quando o comando ssh tiver sido executado, quero que ele origine o arquivo .my_bashrc remoto, isso pode ser obtido apenas por usar o alias como meu alias é definido para fornecer isso com o -rcfile bandeira

Não consigo encontrar uma maneira de transformar a nova guia em um arquivo bashrc local e, portanto, não consigo fazer com que meu alias funcione. Como não tenho meu alias funcionando, não posso dizer ao ssh para executar o comando bash -rcfile .my_bashrc , portanto, o arquivo bashrc remoto não é automaticamente originado.

    
por Joey O 07.11.2014 / 12:53

1 resposta

1

Se bem me lembro, alias não pode usar variáveis dentro dela - então use function .

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

e use como

sshserv server1
    
por 20.01.2015 / 22:02