СообЧа > База Знаний > Unix, Linux > Программирование

Вопрос

задача: надо средствами перла залить файл на удаленный сервер и сделать его доступным на чтение/запись всем. Перловым модулем Net::FTP заливаем и обнаруживаем, что маска доступа стала 0644. Необходимо 0666. функция ftp->chmod не работает (видимо, не реализована). Чем менять права доступа из Perl на удаленной машине?

Ответ

Если на сервере стоит разрешение этому пользователю применять команду chmod и сам сервер не ставит все права на закачанный файл при соединении запуском программы `umask 000`, то необходимо сделать следующее:
В пакете Net::FTP нет функции chmod(). Однако можно воспользоваться этой специфической Unix-командой через функцию
$ftp->quot("SITE", "CHMOD", "0666", "file");

Skull

Вопрос

Как вывести в PERL текст в консоли другим цветом?

Ответ

В стандартной поставке PERL идет модуль Term::ANSIColor. Например, можно текст вывести синим цветом шрифтом с полужирным начертанием вот таким примером кода:

use Term::ANSIColor qw(:constants);
print BOLD, BLUE, "This text is in bold blue.\n", RESET;


Подробную информацию по кодам можно найти в документации:
perldoc Term::ANSIColor

Skull

Вопрос

Как вывести текст в консоли другим цветом?

Ответ

Коды цветов в консоли предваряются Escape-последовательностью \033. Например,
echo -e "Linux — \033[1;31mCOOL\033[0;39m"
Подробную информацию по кодам можно найти в документации:
man console_codes

Skull

Более подробно изложено здесь.

BigShadow

Вопрос

Подскажите, как оптом зарегистрировать много пользователей (например, 1000), если их имена и пароли находятся в файле в виде таблички. Может кто знает, как скрипт сочинить?

Ответ

Если файл представляет собой структуру Имя\tПароль, (или вместо \t любое количество пробелов и табуляций), то получится скрипт:

perl -ne 'm/^(\w+)\s+(\w+)$/; `adduser $1; echo $2 | passwd $1 --stdin`' file

Skull

Вопрос

Как посмотреть, где перл хранит пути к своим модулям? Апгрейдил его с 5.004 до 5.005 и некоторые модули он не видит.

Ответ

Установленные модули Perl можно посмотреть командой perldoc perllocal

Андрей Черепанов

Посмотреть все пути, где perl ищет модули, можно командой perl -V. Эти пути задаются при компиляции и изменить их невозможно. Однако в самом скрипте можно в самом начале добавить строчку:

use lib "/usr/lib/perl5/site_perl/5.004";

В таком случае поиск будет сначала в каталоге /usr/lib/perl5/site_perl/5.004 и только потом в стандартных каталогах.

Leonid Kabanov

Вопрос

Какой функцией можно прочитать дату или системное время (под unix). Читаю /usr/include/sys/time.h

Ответ

Если Вам нужно просто посмотреть текущую дату и время, то есть команда date. Если же Вам нужно программно прочитать дату, то
man:
asctime,
ctime,
gmtime,
localtime,
mktime

Roman A. Lagunov.

Вопрос

Мне необходимо создать скрипт, который будет производить настройку WWW-сервера. Т.е. при запуске скрипта задаются вопросы (в виде командной строки) а пользователь на них отвечает. Особенность в том, что дистрибутив Linux — однодисковый — freesco (или другой). Я представляю, что должна производиться запись в файл.

Первый вопрос — в какой файл и в какое место этого файла? Как искать это место?

Второй вопрос — значения каких параметров должны запрашиваться? Т.е. какие параметры характеризуют WWW-сервер?

Третий вопрос — что из себя должен представлять этот скрипт, т.е. какие команды должны там использоваться и т.п. Структура скрипта какая?

Ответ

Все зависит от используемого сервера. как мы можем дать совет, если не знаем, какой сервер используется? Для веб-сервера фактически необходимы два параметра: порт и каталог документов HTML. Все остальное — уже навороты (права запуска CGI на каталог, типы MIME и пр.).
Структура скрипта:

#!/bin/sh

echo -n "Port: ";read port;echo "Port=$port" > httpd.conf
echo -n "Document directory: ";read docdir;echo "Root=$docdir" >> httpd.conf

Андрей Черепанов



Copyright © 2000-2004 Сообщество Чайников
Контактная информация