Вопрос
задача: надо средствами перла залить файл на удаленный сервер и сделать его доступным на чтение/запись всем. Перловым модулем 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 Сообщество Чайников
Контактная информация