LINUX.ORG.RU

GoTo — простой менеджер ssh-подключений

 , , , ,


2

4

GoTo – консольный менеджер ssh-подключений. Программа написана на языке Go и распространяется по лицензии MIT.

Утилита помогает быстро манипулировать списком серверов, а также предоставляет интерфейс к файлу .ssh/config. Программа поддерживает поиск и группировку. На гитхабе есть короткие демки и F.A.Q., где можно посмотреть некоторые детали.

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

>>> github.com/grafviktor/goto



Проверено: hobbit ()
Последнее исправление: hobbit (всего исправлений: 2)
Ответ на: комментарий от dataman

Ещё бы новость причесать, образцов – more!

Хотел еще картинку добавить, но не осилил. Вообще я очень люблю предметную критику 😆

grafviktor
() автор топика
Ответ на: комментарий от grafviktor

Вообще я очень люблю предметную критику 😆

Не сомневаюсь, что она будет после подтверждения. ;)

dataman ★★★★★
()
Ответ на: комментарий от dataman

Ага, особенно она будет предметной. Я вот могу опережая события прямо сейчас громко и уверенно сказать «Не нужно!» или спросить «А чего не на лиспе, го нинужен».

Zhbert ★★★★★
()

У меня уже есть такая: vi ~/.ssh/config

А если ещё почитать ssh_config то вообще екстаз настанет.

Не, всё это чудесно. Но неужели так удобно бегать по обгрызаным менюшкам, чем просто простом языком писать текст?

beastie ★★★★★
()
Последнее исправление: beastie (всего исправлений: 1)
Ответ на: комментарий от beastie

Но неужели так удобно бегать по обгрызаным менюшкам, чем просто простым языком писать текст?

Конечно удобнее, ну что за вопрос?! И ./ssh/config поддерживается.

grafviktor
() автор топика
Ответ на: комментарий от beastie

Я так понял, что программа призвана избавить от необходимости помнить, под каким именем в конфиге записан тот или иной сервер :) На мой скромный опыт, с дай Бог пятью записями, эта программа просто избыточна, но если серверов сотни…

yars068 ★★★★★
()
Последнее исправление: yars068 (всего исправлений: 1)
Ответ на: комментарий от yars068

но если серверов сотни…

Тогда спасают старые-добрые ссылки на рабочем столе!

Smacker ★★★★★
()
Ответ на: комментарий от yars068

На мой скромный опыт, с дай Бог пятью записями, эта программа просто избыточна

В моем случае - 80 серверов. Не от хорошей жизни все это затевалось. Для 5 серверов, эта программа нафиг не нужна.

Из практики могу сказать, что когда число машин подползает к 20 и надо быстро прыгать между ними как зайцу, ssh_config или putty начинают выбешивать. Хотя может у меня просто нервы… 🚑 😤

grafviktor
() автор топика
Ответ на: комментарий от yars068

That’s the neat part. Имена можно выбирать самому. ж)

Host easyname
     User ubuntu
     ProxyJump gatekeeper.cannot.remenber.that.tld
     HostName I.cannot.remember.that.tld
     LocalForward 1234 another.sub.domain.I.keep.forgetting.tld:12345

И просто ssh easyname со всеми плюшками.

Тулза может это?

beastie ★★★★★
()
Последнее исправление: beastie (всего исправлений: 2)
Ответ на: комментарий от beastie

И просто ssh easyname

А если серверов сотня, и ты точно не помнишь нужное название? Будешь парсить конфиг, отсеивая по строкам просто для того, чтобы посмотреть название? Греп-команду с её опциями приписывать, как минимум. Это удобно?

posixbit ★★★
()
Ответ на: комментарий от yars068

bash-completion умеет комплитить хосты на основе записей в ~/.ssh/config. Наверняка для других шеллов тоже такое есть. Помнить все имена хостов не обязательно. Точно так же, как в этой программе достаточно примерно знать для поиска.

shell-script ★★★★★
()
Ответ на: комментарий от grafviktor

Вообще я очень люблю предметную критику

Почему ямл? Я искренне не понимаю зачем этот переусложнённый формат так активно используют, вернее понимаю, но не понимаю чего он так всем нравится, хотя сейчас его чисто административно пропихивают, пусть мол будет везде одинаково, хоть так, но одинаково, в этом есть смысл, но блин… Он в простых случаях выглядит просто и вполне себе красиво, на деле это огромный и неоднозначный монстр https://yaml.org/spec/1.2.2

Его тяжело парсить, его тяжело парсить правильно, его тяжело читать, когда что-то выходит за рамки key=value или key=[value list]. Ямл же только на поверхности простой и читаемый, там приколов не меньше чем в Perl.

Короче, я искренне не понимаю. Вот и хотелось бы спросить, твоя разработка свежая. Как ты пришёл к ямлу и почему именно он? Если твоя конфигурация простая и ужасы ямла в ней никогда не проявятся, то почему не простейший формат типа key=value на строку? Или просто взял с оглядкой на популярность и простоту базовой интеграции? Или ещё что?

Лично я в отношении ямла типичный ненужнист, но всё же хочется услышать доводы. Конфигурация это вещь долгоиграющая, проект может быть 10 раз заброшен и поднят снова, 20 раз переписан на 20 разных языках, а конфиги как интерфейс это навечно почти всегда, и как по мне ямл тут проблемное звено.

Ямл это как brainfuck простой, понятный и красивый, но на короткой дистации и пока не заглянешь внутрь и не прочитаешь чем он является на самом деле. От того слова про человекоориентируемость ямла я воспринимаю с недоумением. С другой стороны, если все его будут знать, то всё нормально, проблема исчезнет.

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)
Ответ на: комментарий от shell-script

bash-completion умеет комплитить хосты на основе записей в ~/.ssh/config

А если помнишь вторую половину названия хоста, а не первую?

posixbit ★★★
()
Ответ на: комментарий от posixbit

Где пробема?

Общие конфиги в

Host *.whatever
    …

Более конкретные в

Host specific.whatever
    …

Только надо знать, что приоритет с веру в низ. Конкретика вврех, умолчания вниз. → https://therootcompany.com/blog/ssh-defaults-config-and-priorities/

PS: умея его готовить все эти тулзы шорох орехов, которые больше ограничивают, чем помогают. Это в общем ко всем подобным тулзам относится. Как писать повесть из дроп-довн менюшек. Гиблое дело.

beastie ★★★★★
()
Последнее исправление: beastie (всего исправлений: 4)
Ответ на: комментарий от posixbit

То я пойду не менеджер хостов искать, а таблетки от Альцгеймера. :)

shell-script ★★★★★
()
Ответ на: комментарий от yars068

но если серверов сотни

Если серверов сотни, то вариантов два. Или превращать рабочий день в написание .ssh/config, или сделать для серверов какой-нибудь naming convention, чтобы одним блоком покрыть все.

l0stparadise ★★★★★
()
Ответ на: комментарий от LINUX-ORG-RU

Почему ямл? Я искренне не понимаю зачем этот переусложнённый формат так активно используют

Потому что всем плевать на графоманию стандартописателей. Реальная спека ямла занимает не больше одной страницы (правила отступов, комментарии, имя: значение, многострочные значения с дефисами, все значения - строковые, типов не существует).

firkax ★★★★★
()
Ответ на: комментарий от yars068

но если серверов сотни…

то используй понятные имена хостов в dns и regexp’ы в ./ssh/config

adn ★★★★
()
Ответ на: комментарий от posixbit

А если помнишь вторую половину названия хоста, а не первую?

У меня zsh из коробки для known_hosts подставляет варианты по совпадению в любой позиции.

urxvt ★★★★★
()

я чтоб бегать по серверам делаю так:

HISTFILE=~/.my_ssh_history PS1="SSH SHELL> " bash --norc

вроде работает, по ctrl+r можно быстро искать и не теряются в истории, но интерфейса к .ssh/config конечно нет, кроме $EDITOR)

sergej ★★★★★
()
Ответ на: комментарий от urxvt

это не коробка. это в пакете преднастроено… а может и не настроено быть. ну во всяком случае zsh по умолчанию ничего не умеет. ненужное из коробки умеет fish

rtxtxtrx ★★★
()
Ответ на: комментарий от beastie

Но неужели так удобно бегать по обгрызаным менюшкам, чем просто простом языком писать текст?

Да, потому что постоянно забываешь конкретные названия параметров и лень постоянно лезть в документацию. Намного удобнее выбирать из вариантов, чем писать самому.

X512 ★★★★★
()
Последнее исправление: X512 (всего исправлений: 1)

J4F если только. Или изучения фреймворка для. А так ценности не имеет, несёт лишь вред.

Я никогда не понимал стремления городить подобных монстров, призванных починить то, что не сломано. «Интерфейс к файлу ~/.ssh/config» это $ vim ~/.ssh/config. Сложно набирать? alias gg="vim ~/.ssh/config" и «программа для ускорения редактирования» готова. Пишите gg, как любите, и вперёд.

Параметры не помнишь, которые писать надо? Смотри выше - у тебя для другого сервера они указаны. И даже подсветка ключевых слов есть. Нет других серверов, ты первый раз ~/.ssh/config открыл? В любом случае ман посмотреть придётся.

Серверов много? Серверов много не бывает. Как выше уже сказали - «нормальная структура домена и регэкспы в конфиге = нет проблем с запоминанием». И да, когда их действительно много, руками по ssh на них уже не ходят. Должна быть какая-то система управления конфигурацией.

Поделка от неосилятора для неосиляторов. Этим и вредна - неосиляторы в профессии плодятся.

Отсутствие какой-либо логики в выборе имени тоже показательно.

mogwai ★★★★★
()

напиши разработчикам чарма - там SSH и TUI просто обожают, возможно включат эту тулзу в число официальных. Только надо назвать менее скучно 🫠

Lrrr ★★★★★
()
Ответ на: комментарий от beastie

Это когда у вас уже есть давно написанный готовых конфиг. А когда надо часто с нуля делать новый конфиг, а также объяснять другим как это делать, утилита становится полезна.

X512 ★★★★★
()

Для макоса бинаря не хватает - затащи homebrew, это делается очень легко.

Демка интересная.

panter_dsd ★★★★★
()
Ответ на: комментарий от panter_dsd

ну не так чтобы очень легко.

Так как программа на Go, то можно намутить CI с goreleaser, который может делать TAP для homebrew, публиковать в AUR, собирать пакеты для линукса и вообще черт знает что.

Lrrr ★★★★★
()
Ответ на: комментарий от grafviktor

Если не секрет а что там делать на этих в 80 серверах?

Просто мне проще плайбук накропать чем лазать туды сюды …

mx__ ★★★★★
()

годно. ещё б jump-хосты в конфиге указывать и порты нестандартные.
и реверсы б.

etwrq ★★★★★
()
Ответ на: комментарий от posixbit

А если серверов сотня, и ты точно не помнишь нужное название? Будешь парсить конфиг, отсеивая по строкам просто для того, чтобы посмотреть название

А ты как альтернативу предлагаешь делать это просто глазами просматривая список длиной пару километров? Ну так можно и собственно конфиг посмотреть. Тем более что в любом нормальном редакторе можно свернуть абзацы и останутся только Host somename ....

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 1)
Ответ на: комментарий от LINUX-ORG-RU

Почему ямл?

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

DrRulez ★★★★★
()
Ответ на: комментарий от DrRulez

Извините я не совсем понимаю про какой yml тут речь. Разве прога не просто парсит .ssh/config на предмет Host и выдает это список в меню. Где выбрал сервер - можешь его отредактировать или запустить (либо добавить/удалить новый)?

mx__ ★★★★★
()
Ответ на: комментарий от LINUX-ORG-RU

Почему ямл?

Я думаю, что вариантов выбора достаточно и у каждого будут свои предпочтения. Так какой, говорите, формат, Вы бы выбрали?

grafviktor
() автор топика

У меня пока 2 вопроса по этой программе:

  1. Почему не видит все хосты из ~/.ssh/config, из 7 - только 4 отображает;
  2. Зачем логи пишутся в ~/.config/goto, каталог ~/.config вроде бы не для этого предназначен.
Ja-Ja-Hey-Ho ★★★★★
()
Ответ на: комментарий от beastie

И просто ssh easyname со всеми плюшками. Тулза может это?

Я не уверен, что правильно понял вопрос. Тулза парсит ssh_config и показывает хосты в виде списка. Наименование хостов в списке это как раз и есть те произвольные easyname’ы которые задал пользователь.

grafviktor
() автор топика
Ответ на: комментарий от Wapieth

А нормальное название нельзя было придумать?

Были варианты, но мне жалко, что все незаслуженно обижают оператор goto. Чтобы отдать ему дань уважения, я так назвал программу.

grafviktor
() автор топика
Ответ на: комментарий от mogwai

Серверов много? Серверов много не бывает. Как выше уже сказали - «нормальная структура домена и регэкспы в конфиге = нет проблем с запоминанием».

Категоричные суждения, а тем более высказывания, это всегда признак высокого интеллекта. Это не я сказал, а моя бабушка. Вот ей минусы и ставьте - она необидчивая 😆

grafviktor
() автор топика
Ответ на: комментарий от mx__

Если не секрет а что там делать на этих в 80 серверах?

Окружения от Dev до Prod, в каждом по несколько сервисов. Приложение большое, некоторые возможности приложения команда QA начинает тестировать еще ДО того как они будут слиты в релизную ветку. Поэтому одних только QA и UAT машин в достатке.

ещё б jump-хосты в конфиге указывать и порты нестандартные и реверсы б.

Задавайте произвольную конфигурацию в ssh_config, подключайтесь к ним через меню утилиты.

grafviktor
() автор топика
Последнее исправление: grafviktor (всего исправлений: 1)
Ответ на: комментарий от rtxtxtrx

Это пакет zsh-completions, как я понимаю.

urxvt ★★★★★
()
Ответ на: комментарий от Ja-Ja-Hey-Ho
  1. Почему не видит все хосты из ~/.ssh/config, из 7 - только 4 отображает;

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

  1. Зачем логи пишутся в ~/.config/goto, каталог ~/.config вроде бы не для этого предназначен.

Согласен, неаккуратненько, ну да бог с ним. Пусть все в одном месте лежит.

grafviktor
() автор топика
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.