Команды unix/linux, которые должен знать каждый

Sep 09, 2009 06:03

Самые полезные (на мое усмотрение):

Поиск по содержимому файлов:
find / -name "*.php" -print | xargs grep -i "text"
Мне он нравится больше чем поиск в MC (ESC-SHIFT-?). К горячим кнопкам привыкаешь быстро, но сам MC ищет медленно если файлов много.

Удаление длинного списка файлов (если возникла ошибка /bin/rm: Argument list too long):
find /tmp -name "*.tmp" -print | xargs rm

Проброска портов через NAT.
У нас есть 3 варианта.

1. Компьютер X.X.X.X (который подключен через NAT) соединяется с Y.Y.Y.Y (который имеет открытый порт и на котором можно запустить ssh сервер).
В таком случае на X.X.X.X запускаем:
ssh -R *:2222:localhost:1111 Y.Y.Y.Y
Где:
1111 - порт на X.X.X.X, к которому нужно подключиться на Y.Y.Y.Y.
2222 - порт на Y.Y.Y.Y, который будет связан с 1111 на X.X.X.X.
При этом на компьютере Y.Y.Y.Y появится открытый порт 2222. Если нам нужно связаться с 1111 на X.X.X.X, то просто соединяемся с 2222 (localhost:2222).

2. Компьютер X.X.X.X (который подключен через NAT) соединяется с сервером Z.Z.Z.Z (через ssh сервер). Компьютер Y.Y.Y.Y тоже соединяется с сервером Z.Z.Z.Z (через ssh сервер). При этом ssh сервер "связывает" эти соединения.
На X.X.X.X запускаем:
ssh -R 3333:localhost:1111 Z.Z.Z.Z
Где:
1111 - порт на X.X.X.X, к которому нужно подключиться на Y.Y.Y.Y.
3333 - порт на Z.Z.Z.Z, который будет связан с 1111 на X.X.X.X.
На Y.Y.Y.Y запускаем:
ssh -L 2222:localhost:3333 Z.Z.Z.Z
Где:
3333 - порт на Z.Z.Z.Z, который ждет связи с 1111 на X.X.X.X.
2222 - порт на Y.Y.Y.Y, который будет связан с 3333 на Z.Z.Z.Z, который в свою очередь свяжет нас с 1111 на X.X.X.X.
При этом на компьютере Y.Y.Y.Y появится открытый порт 2222. Если нам нужно связаться с 1111 на X.X.X.X, то просто соединяемся с 2222 (localhost:2222).

3. И наконец, третий вариант. Он может сократить кол-во соединений из второго варианта. Условия те же, но в настройках ssh сервера нужно разрешить GatewayPorts (подробности ниже).
Компьютер X.X.X.X (который подключен через NAT) соединяется с сервером Z.Z.Z.Z (через ssh сервер). Отличие в  том, что компьютер Y.Y.Y.Y может сразу соединяется с сервером Z.Z.Z.Z без ssh клиента.
На X.X.X.X запускаем:
ssh -R *:3333:localhost:1111 Z.Z.Z.Z
Где:
1111 - порт на X.X.X.X, к которому нужно подключиться на Y.Y.Y.Y.
3333 - порт на Z.Z.Z.Z, который будет связан с 1111 на X.X.X.X.
При этом на сервере Z.Z.Z.Z появится открытый порт 3333. Если нам нужно связаться с 1111 на X.X.X.X, то просто соединяемся с 3333 на Z.Z.Z.Z (Z.Z.Z.Z:3333).

Немного про GatewayPorts.
Включается он через /etc/sshd_config:
GatewayPorts yes
После этого sshd должен перечитать конфигурацию:
/etc/rc.d/sshd reload

Чуть позже нарисую схематичную картинку :-)

linux, unix

Previous post Next post
Up