gnome-terminalで複数のタブを開き、サーバーにパスワードなしのSSHを自動的に接続し、bashrcファイルのエイリアスを使用してこれを行います。

gnome-terminalで複数のタブを開き、サーバーにパスワードなしのSSHを自動的に接続し、bashrcファイルのエイリアスを使用してこれを行います。

ssh私たちが同時に運営する4台程度のサーバーを確認する必要がある場合がよくあります。私はこれらのエイリアスを与えました。

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+をT4回押して4つのタブを開きます。その後、最初はsshserver1、2番目は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'"

sshこれはタブを開いてingする限り動作しますが、いくつかの問題があります。

  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

関連情報