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, 두 번째에는 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

관련 정보