7 причин, почему коты делают «тыгыдык»

Вчера наконец-то собрался силами и добрался до иммобилайзера, всего-то понадобилась неделя. За 5 дней я знатно себе так жопу отморозил без автозапуска. Починил, правда палец сука порезал. Ну это капля в море, на фоне всратых сервисов и неоправданных счетов за ремонт.

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

Ну и вот, к чему это я. Спустя несколько лет жизни на алиасах, у меня дошли руки забиндить себе в bash хитрую хоткейку.

Сейчас покажу очередной велосипед, который сэкономит мне еще пару секунд прибывания в консоли. А может быть и ты куда-нибудь себе это присобачишь. Погнали!

Есть у меня сервер, на нем крутится самописная bastion оболочка. Как это работает:

  1. Цепляюсь в bastion
  2. В консоль вываливает список серверов
  3. Коннект к серверу ssh <index>

То есть bastion у меня единая точка входа чтобы попасть на другие сервера, даже если на них нет белых айпишников.

Как я подключался раньше

> ssh user@bastion.bashdays.com

Как я подключался потом

> export alias bas="ssh user@bastion.bashdays.com"
> bas

Как я подключаюсь сейчас

> alt+b

Прям эволюционный роадмэп. Интересно, какая стадия будет следующей. Итак, повесил я подключение на хоткей, стало довольно удобно. Только открылась консоль, бряк alt+b и я уже внутри.

Хоткей вешал так, добавив это в .bashrc:

bastion() {
    echo "connect to bastion server"
    ssh -t qa@bastion.bashdays.com 'reset;bash'
}

bind -x '"\eb": bastion'

«ёб» в последней строчке, это как раз клавиша alt+b в кодах ANSI escape sequences. Если нужны другие кнопки, го в гугол, там этого полно.

«-t» создаёт псевдотерминал, чтобы команды вводились на сервере, а не в текущей оболочке.

А reset;bash понадобился, чтобы победить проблему с отображением команд, которые вводишь. Если убрать это хак, то когда будешь что-то вводить в консоли, это не будет отображаться на экране.

В zsh я на быструю руку попытался подобное провернуть, оно даже подключается, но терминал впадает в бэдтрип Read Only, какая-то абстракция с псевдотерминалами. Пока руки не дошли докопаться до сути. Но если у тебя получится это завести, пиши в комменты, сделаешь ОЧЕНЬ нужное и доброе дело.

Вот мои наработки для .zshrc:

bastion() {
    echo "connect to bastion server"
    ssh -tt user@bastion.bashdays.com
}

zle -N bastion
bindkey '\eb' bastion

Так, совсем забыл про котов, эту тему обязательно нужно обсудить. И дело тут не в блуждающем нерве.

Роман Шубин
Роман Шубин
CEO & CTO, Главред в «Цифровой улей»
Задать вопрос
На хоткеи ты можешь повесить любую команду, любой комбайн, который только заблагорассудится, например можешь запускать vim или редактирование файла /etc/hosts. Короче изучай.

И давай краба, жду тебя в комментах!