Переадресация команд: применение переадресации команд для непосредственного выполнения скриптов и каналов

Переадресация команд: применение переадресации команд для непосредственного выполнения скриптов и каналов

Переадресация (перенаправление) команд – одна из наиболее полезных возможностей протокола SSH. Она вытекает из его основополагающих принципов построения, когда был заново реализован целый ряд приложений r* операционной системы UNIX. У протокола SSH есть хорошо понятная возможность выполнения удаленных команд так, как будто это локальные команды. Например, вместо ввода

effugas@OTHERSHOE ~

$ ssh effugas@10.0.1.11

effugas@10.0.1.11”s password:

FreeBSD 4.3-RELEASE (CURRENT-12-2-01) #1: Mon Dec 3

13:44:59 GMT 2001

$ uptime

3:19AM up 18 days, 8:48, 5 users, load averages: 2.02,

2.04, 1.97

$

можно ограничиться следующими командами:

effugas@OTHERSHOE ~

$ ssh effugas@10.0.1.11 uptime

effugas@10.0.1.11”s password:

3:20AM up 18 days, 8:49, 4 users, load averages: 2.01,

2.03, 1.97

Действительно, можно образовать канал вывода между хостами, например так, как это показано в приведенном ниже простейшем примере:

effugas@OTHERSHOE ~

$ ssh effugas@10.0.1.11 “ls –l” | grep usocks

effugas@10.0.1.11”s password:

drwxr-xr-x 2 effugas effugas 1024 Aug 5 20:36

usocksd-0.9.3

-rw-r—r– 1 effugas effugas 54049 Jan 14 20:21

usocksd-0.9.3.tar.gz

Подобные функциональные возможности необычайно полезны для создания сетевых туннелей. Основная идея туннелей заключается в том, что нечто создает поток данных через обычно непреодолимые границы сетей. В данном случае разделенные границами сети немного напоминают аппаратные средства, поделенные на совершенно не связанные между собой блоки. (Требуется приложить много усилий для эффективного обособления программ и информационных файлов. Если этого удается добиться, то отказ в одной части программного кода почти никак не влияет на работу всего кода в целом и не приводит к отказу еще чего-нибудь благодаря абсолютной защите памяти, планированию работы центрального процессора и т. д. Между тем простое выполнение почтового сервера или Web-сервера читателя на различных системах при условии, что их много и они могут быть распределены по всему земному шару, предоставляет совершенно другой класс разделения процессов.) SSH превращает каналы в коммуникационную подсистему между хостами. В этих условиях становится справедливым следующее правило . Почти всегда можно использовать канал для передачи данных между процессами. При этом протокол SSH позволяет процессам разных хостов оставаться локальными.

Данный текст является ознакомительным фрагментом.