LINUX.ORG.RU

Gnome-terminal


0

1

Уважаемые форумчане. Перерыл весь тырнет в поисках решения своей проблемы, но увы толи я не умею пользоваться гуглом, то ли с такой проблемой никто не сталкивался.

Итак начну пожалуй с того, что около лет так 4 назад, работал сапортом в техподдержке одного из забугорных хостеров. Доступ к серверам хостера был организован через jump сервер на котором были настроены alias для быстрого входа на той или иной сервер. Тобишь смысл был таков, что бы работать с сервером необходимо было зайти на jump, после чего просто в консоле вводишь server1 ( это так к примеру) и тебя автоматом логин на нужный сервер.

Моя проблема в том, что сейчас я подобное никак организовать немогу. У меня сейчас в .bashrc большое количество alias для всех сервером куда я захожу, но проблема в том, когда я пишу в терминале server1 у меня открывается новый терминал и только тогда происходить коннект к серверу. Сильно накладно большое количество открытых окон терминалов когда приходиться сидеть не нескольких серверах. Кто может подсказать как в gnome-terminal организовать открыть не окна, а таба и уже в нем что бы происходил коннект с серверу.

Пример текущего alias

alias server1='gnome-terminal --profile=«Default» --tab «server1» -e «ssh -t user1@server1.example.com sudo su -»'

Пожалуйста, screen и аналоги gnome-terminal не предлагать, перепробовал многое, но привыкнуть к ним так и не смог. Заранее всем спасибо заглянувшим в этот топик.


Ответ на: комментарий от anonymous

омг, какая я деревня. все время пытался как то черех Ж сделать, а тут все просто. Спасибо тебе мил человек.

Cyb3r ()
Ответ на: комментарий от anonymous

И чем же это принципиально отличается, что стало костылём?

Valkeru ★★★★ ()

омфг сколько наркомании. Осиль уже ssh config

Host github
    User git
    Port 22
    HostName github.com
    IdentityFile ~/.ssh/github.key

потом ssh github и ты на github с нужным ключем, пользователем и портом.

C1nde ()

сделай функцию jumpto_ssh()
{
_start_connection() { gui_ssh() «$@» || _cli_ssh() «$@» }

_find_X() { _X_DISPLAY=«» && for (( d=0 ; d < 3 ; d++ )) ; do
_X_ENUM=$d && ( [ -e /tmp/.X11-unix/\:${_X_ENUM} ] && _X_DISPLAY=«${_X_ENUM} ${_X_DISPLAY}» ) ||_X_DISPLAY=«${_X_DISPLAY}» ; done }

_gui_ssh() {
_find_X()
PS1=«Choose X11 display: »
select _XSERVER in $_X_DISPLAY
do
_X_SERVER=":${X_SERVER}"
echo «O RLY? [Y/N]» && read _ORLY
case $_ORLY in
Y|Yes|yes|YES|true|TRUE|True) break
N|Not|not|NOT|False|FALSE|false) continue
esac
done

echo -en «\n»

#_find_guiclient() - напиши функцию сам! =) или пущай будет gnome-terminal
gnome-terminal --profile=Default -e 'ssh «${_SSH_USER}@${_SSH_SERVER}» «${_SSH_ARGS}»'
}

_cli_ssh() { clear;echo -en '\n\t\tJumpTO_SSH by ubuntuawp\n';ssh «${_SSH_USER}@${_SSH_SERVER}» «${_SSH_ARGS}»}
_get_server() {
#force _GUI=0
_GUI=0
if [ $_GUI == 0 ] ; then
echo «SSH server: » && read _SSH_SERVER
echo «SSH user: » && read _SSH_USER
echo «Extra SSH arguments: » && read _SSH_ARGS
echo -en «\n\n»
_usage()
fi
}

_usage() { _APPNAME=«jumpto_ssh» ; echo -en «Usage: ${_APPNAME}\n --server= - SSH Server\n --user= - User\n --extra= - Extra SSH arguments\n» }

if [ -n «$@» ] ; then
for _APP_ARGS in «$@» ; do
case $_APP_ARGS in
--server=*) _SSH_SERVER=${server}
--user=*) _SSH_USER=${user}
--extra=*) _SSH_ARGS=${extra}
esac
done
else
_get_server()
fi
}

Поправьте если где не так...
Надо скопировать сие в .bashrc и запускать так: jumpto_ssh
В скрипте уже есть хелп и работа как с X11, так и с CLI
Можешь сделать базу серверов и настроить скрипт на чтение базы! man bash;man ssh;info coreutils

ubuntuawp ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.