среда, 8 февраля 2012 г.

Маленькие полезности

VIM


  • подсветка части строки, превышающей длину 80 символов.
    :au BufWinEnter * let w:m2=matchadd('ErrorMsg', '\%>80v.\+', -1)
  • подсветка "trailing spaces".
    :au BufNewFile,BufRead * let b:mtrailingws=matchadd('ErrorMsg', '\s\+$', -1)
  • подсветка символов табуляции среди пробелов.
    :au BufNewFile,BufRead * let b:mtabbeforesp=matchadd('ErrorMsg', '\v(\t+)\ze( +)', -1)
    :au BufNewFile,BufRead * let b:mtabaftersp=matchadd('ErrorMsg', '\v( +)\zs(\t+)', -1)

Так выглядит VIM после добавления вышеперечисленных опций.


SSH


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

Один из вариантов - открыть вспомогательное SSH соединение и использовать его для проброса портов домашней машины на компьютер в интернете. Что-то вроде:
laptop $ ssh -N -L 2222:internal:22 gateway
laptop $ scp -P 2222 -r something localhost:

Однако есть более простой способ, который позволяет исключить рутинную операцию. Он заключается в использовании опции ProxyCommand, например для хоста home.local:
Host home.local
HostName your-gateway-hostname-or-ip
ProxyCommand ssh your-gateway-hostname-or-ip nc -q 0 home.local 22
StrictHostKeyChecking no
User your-username

Теперь копирование выполняется также, как и в локальной сети:
 laptop $ scp -r something home.local:

UPDATE: Для использования netcat в ProxyCommand нужно добавить опцию -q 0, иначе netcat остается висеть в процессах после закрытия сессии.

Комментариев нет:

Отправить комментарий