Comments 30
Это вы сейчас "vim ssh_config" навелосипедили?
Но зачем?
просто захотелось
Но зачем тогда каждым личным поделием хвастаться? Поймите правильно, это не наезд, а не понимание с моей стороны. Был я молодым, тоже всяких поделий клепал до чертиков, но я их как-то даже друзьям не пытался втюхать.
А почему бы и не делиться, особенно если это довольно полезное поделие? Это же не какой-то HelloWorld или очереднй ToDo-app. Да, аналоги наверное есть, но и свой юзер на такое найдётся. Я до сегодняшнего дня не видел TUI'шных SSH-клиентов подобного рода, а это было бы лично мне очень удобно, т.к. я, как и автор, часто обитаю в терминале и подключаюсь к разным хостам. Я думал сделать что-то подобное, тоже на Go, но как-то и не ушло дело дальше дум. Теперь наверное буду пользоваться этим.
Я ещё хотел у автора спросить про то, как организовано хранение паролей, но решил глянуть в код и нашёл там ответ, причём меня лично удовлетворяющий.
Хорошо, вы правы что каждым творением не стоит делиться в массы. Но допустим данное незначительное творение я делал долго и нашел отклик у знакомых. Поэтому и решил поделиться на Хабре, вдруг кому-то это понравится
Положительной практикой для разработчика является писать код без всякой на то причины))
Могу предложить своё решение, проще и ширина сферы применения побольше:
Конечно выкладывай
я даже не заметил что хабр съел кодблок..
универсальный для bash и zsh
sshv() {
HOSTS=$(awk '/^Host / {for(i=2;i<=NF;i++) print $i}' ~/.ssh/config ~/.ssh/config.d/*.conf 2>/dev/null | grep -v '\*')
SSH_HOST=$(echo "$HOSTS" | fzf --preview "$(cat <<'EOF'
host={}
CONFIG=""
[ -f ~/.ssh/config ] && CONFIG="$CONFIG
$(cat ~/.ssh/config)"
[ -d ~/.ssh/config.d ] && CONFIG="$CONFIG
$(cat ~/.ssh/config.d/*.conf 2>/dev/null)"
[ -f /etc/ssh/ssh_config ] && CONFIG="$CONFIG
$(cat /etc/ssh/ssh_config)"
[ -d /etc/ssh/ssh_config.d ] && CONFIG="$CONFIG
$(cat /etc/ssh/ssh_config.d/*.conf 2>/dev/null)"
echo "$CONFIG" | awk -v host="$host" '
BEGIN{show=0}
/^Host / {
show=0
for(i=2;i<=NF;i++) if($i==host) show=1
}
show==1 {
print
next_line=$0
}
/^$/ && show==1 {show=0}
' | bat -l ssh_config --style=plain --color=always
EOF
)" \
--height=50% \
--margin="2%,15%,2%,2%" \
--layout=reverse-list \
--border="rounded" \
--color=dark,fg:magenta)
if [ -n "$SSH_HOST" ]; then
if [ "$1" = "-e" ]; then
FILE_LINE=$(grep -n "^Host .*\\b$SSH_HOST\\b" ~/.ssh/config ~/.ssh/config.d/*.conf 2>/dev/null | head -n1)
FILE=$(echo "$FILE_LINE" | cut -d: -f1)
LINE=$(echo "$FILE_LINE" | cut -d: -f2)
nano +${LINE},1 "$FILE"
else
echo "Connecting to $SSH_HOST"
ssh "$SSH_HOST"
fi
fi
}
SCP поддерживается в MC и Far2l - оба есть для macos и гораздо удобнее лазания в консоли. MC вообще в консоли работает, в Far2l есть опция для работы в консоле
изначально идей и проблем которые я мог решить в голове не было
Как же, сейчас витает в воздухе идея, тут по этой теме много обсуждений, если реализуете, то почёт и уважуха будут МАКСимальные ;)
Smartssh
На мой взгляд, такой пет проект (в целях которого обозначено, делаю для себя или по фану) достоин большего внимания, чем решение уровня enterprise, в котором разработчик не осилил конфиги или мануал, и пытается высосать ТЗ из пальца.
Спасибо за честность!
Не перестану удивляться сколько ресентиментарных скуфов сидят на хабре. Человек делиться петпроектом, а ему в лицо тыкают "альтернативами", блядь какая разница, что что-то подобное есть, разнообразие всегда к лучшему.
По моему скромному мнению, весьма полезная публикация. Автору - успехов!
brew install --cask misha
Warning: Cask 'misha' is unavailable: No Cask with this name exists.
Go ssh-a , gossha )))
Мне нравится название клиента! Очень милое
Сам пользуюсь wishlist у charmbracelet
Скрытый текст
Фиолетовый gopher в очках - вылитый Цезий (https://2x2tv.ru/series/comedy/atomnyy-les/characters/%D1%81eziy/)
Миша — консольный SSH клиент