UUX(1C) UUX(1C) НАЗВАНИЕ uux - выполнение команд на удаленных системах СИНТАКСИС |uux [-] [-a имя_пользователя] [-b] [-c] [-C] [-g приоритет] [-j] [-n] [ | [-r] [-s файл] [-x уровень_отладки] [-z] командная_цепочка ОПИСАНИЕ Команда uux собирает ноль или более файлов с различных систем, выполняет команду на указанной системе и затем направляет стандартный вывод в файл на указанной систе- ме. Отметим, что в целях безопасности во многих версиях наложены ограничения на список команд, выполняемых uux. Многие разрешают производить посредством uux только по- лучение почты [см. mail(1)]. (Права на выполнение ко- манд на удаленных системах указываются в файле /usr/lib/uucp/Permissions). Командная_цепочка состоит из одного или более аргумен- тов и похожа на командную строку shell'а, но имена ко- манд и файлов могут иметь префикс [имя_системы]!. Если имя_системы не указано, подразумевается локальная сис- тема. Имя файла может быть: 1. Полным маршрутным именем. 2. Маршрутным именем с приставкой ~имя_пользователя, которая заменяется именем исходного каталога поль- зователя в соответствующей системе. Если такого пользователя нет, подставится каталог /usr/spool/ uucppublic. 3. Маршрутным именем с приставкой ~/получатель, кото рая заменяется на /usr/spool/uucppublic/получа- тель. Получатель трактуется как имя обычного фай- ла, если только не копируется несколько файлов или получатель ранее уже не был создан как каталог. Если обязательно нужно выполнять копирование в ка- талог, после получателя следует поставить /. Так, если в качестве целевого_файла указать ~/dir/, бу- дет создан каталог /usr/spool/uucppublic/dir (если его еще не было), в который и скопируются исходные файлы. Все остальное считается маршрутным именем относительно текущего каталога. Например, команда |uux "!diff sys5!/usr/dan/f1 sys6!/dan/f2 > !~/dan/f3" возьмет файл f1 с машины sys5, файл f2 с машины sys6, сравнит их посредством утилиты diff(1) и поместит ре- зультат в файл /usr/spool/uucppublic/f3 на локальной машине. Любой символ, имеющий для shell'а специальное значение, должен быть экранирован либо путем заключения команд ной_цепочки в кавычки, как это сделано в примере, либо путем экранирования каждого символа отдельно. Команда uux пытается собрать все нужные файлы на той машине, где будет выполняться команда. Выходные файлы следует заключать в скобки. Например, команда |uux a!cut -c1-72 b!/usr/file \(c!/usr/file\) перешлет файл /usr/file с машины b на a, выполнит на машине a команду cut(1) и отправит результат на машину c. Если выполняемая команда запрещена в указанной системе, то uux сообщит об этом. Сообщение придет по почте с удаленной машины. Отменить это сообщение поможет опция -n. Команда uux интерпретирует следующие опции: - Сделать стандартный ввод uux стандартным вводом для командной_цепочки. -a имя_пользователя Использовать заданное имя_пользователя вмест идентификатора пользователя, запустившего команду uux. Все сообщения будут посланы пользователю. -b Вернуться, что бы ни поступило со стандартного ввода для uux, если код завершения ненулевой. -c При пересылке локального файла на удаленную систе- му не копировать его в буферный каталог (режим по умолчанию). -C При пересылке локального файла на удаленную систе- му копировать его в буферный каталог. -g приоритет Приоритет - один символ (буква или цифра). Чем меньше ASCII-код символа, тем больший приоритет в пределах сеанса связи будет иметь задание. По умолчанию приоритет равен N. -j Выдать идентификатор задания в виде цепочки симво- лов на стандартный вывод. Этот идентификатор можно использовать совместно с командой uustat(1C) для получения состояния или для терминации задания. -n Не извещать пользователя, если команду не удалось выполнить. -p То же, что и -. -r Поставить задание в очередь, но не начинать про- цесс выполнения. -s файл Поместить статус задания в файл. Заметим, что файл должен задаваться полным маршрутным именем. -x уровень_отладки Выводить на стандартный вывод отладочную информа- цию. Уровень_отладки - это число от 0 до 9, прич большему числу соответствует более детальная ин- формация. -z Послать пользователю уведомление об успешном за- вершении задания. ФАЙЛЫ /usr/spool/uucp/* Служебные каталоги. /usr/lib/uucp/Permissions Права на выполнение команд на удаленных системах. /usr/lib/uucp/* Другие файлы программ и дан- ных. СМ. ТАКЖЕ cu(1), mail(1), uucp(1C), uustat(1C). ПРЕДОСТЕРЕЖЕНИЯ Только первая команда конвейера может иметь префикс имя_системы!. Все остальные команды будут выполняться в этой же системе. Использование метасимвола shell'а * может привести к неожиданным последствиям. Символы shell'а << и >> не поддерживаются. Выполнение команды на удаленной системе производится только в специальном каталоге, известном uucp. Все тре- буемые файлы будут помещены в этот каталог, если только они еще не находятся на этой машине. Таким образом, простое имя файла (без указания маршрута поиска или ма- шины) должно быть уникальным в рамках данного запроса uux. Следующая команда НЕ БУДЕТ РАБОТАТЬ: |uux "a!diff b!/usr/dan/xyz c!/usr/dan/xyz > !xyz.diff" но команда |uux "a!diff a!/usr/dan/xyz c!/usr/dan/xyz > !xyz.diff" проработает правильно (если утилита diff разрешена для выполнения на удаленных системах). СЮРПРИЗЫ Защищенные файлы и файлы, находящиеся в защищенных ка- талогах, владельцем которых является заказчик, могут пересылаться в ходе работы команды uucp. Однако, если заказчик является суперпользователем, а каталог недос- тупен для просмотра или файл недоступен для чтения про- чим пользователям, то запрос не будет удовлетворен.