информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Страшный баг в WindowsПортрет посетителя
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
На самом деле, если ничего не путаю, type - это как раз стандартная команда. 15.07.04 13:15  Число просмотров: 1333
Автор: Ktirf <Æ Rusakov> Статус: Elderman
<"чистая" ссылка>
То есть если хочется хорошей переносимости, то лучше пользовать type -p (кстати, если я опять же ничего не путаю, от нее вывод всегда будет вполне определенным).
<programming>
[Perl] Работа с sendmail 14.07.04 16:03  
Автор: n0xi0uzz <Черкасов Виктор> Статус: Member
<"чистая" ссылка>
В общем, нужно написать скрипт, отправляющий мессаги, используя sendmail
Но когда я зашёл на #linux на русском далнете, мне сказали, что мой скрипт будет неуневерсален, если я пропишу определенный путь к сендмайлу, т.к. руть к нему разный в разных никсах.

но мне также сказали, что узнать путь к сендмайлу можно, используя команду "which sendmail".
А как мне перловым скриптом выполнить эту команду и ответ системы записать в переменную?
Код 16.07.04 09:14  
Автор: Heller <Heller> Статус: Elderman
<"чистая" ссылка>
Сам я временно не имею доступа к транслятору, так что за работоспособность кода не отвечаю, но должно работать. Вначале в $temp кладёшь ответ which или type -p или ещё чего - совершенно в данном случае не важно. Далее:

$temp=~m((/\w+)+/(sendmail|\$(\d)+))i;
$1=~s/\$\d+/sendmail/;

В результате в $1 должен остаться путь до сендмыла. Если сюда примешать ещё и eval, то вообще можно получить универсальный поиск пути для чего угодно.

Если вызвать which ни с помощью обратных апострофов, ни с помощью system не получится, попробуй ещё использовать open:

undef $\;
open (FH,"which sendmail |");
$temp=<FH>;
close FH;
$\="\n";

Ну а если я мало ли где-то ошибся - пиши, буду править.
re: Код 16.07.04 12:08  
Автор: n0xi0uzz <Черкасов Виктор> Статус: Member
<"чистая" ссылка>
Спасибо! ;)
Правда, у меня сейчас уже нет возможности проверить его работоспособность - ещё немного, и я улетаю в другую строну без доступа к компу на 3 недели =(
Но как только приеду - проверю и о результатах сообщу ;)
Ещё раз пасиб...)
проще путь в конфиг вынести, как это обычно и делается 14.07.04 16:04  
Автор: !? <!?> Статус: Member
<"чистая" ссылка>
Соглашусь с malgayan'ом, ну а вообще вызывай exec, а потом руби ответ регулярными выражениями 14.07.04 19:26  
Автор: Heller <Heller> Статус: Elderman
<"чистая" ссылка>
если бы... 15.07.04 02:38  
Автор: n0xi0uzz <Черкасов Виктор> Статус: Member
<"чистая" ссылка>
malgajan, ты не понял - я хочу чтобы скриптсамискал путь к сендмайл ;)

272man, покажи на примере то, что ты написал, плз
И ещё вопрос, вот так можно сделать:
system("which sendmail") = $a;

---
?
Используй обратные кавычки 15.07.04 12:57  
Автор: choor Статус: Elderman
<"чистая" ссылка>
Используй обратные кавычки
$a=`which sendmail`;
Пробовал... 15.07.04 14:42  
Автор: n0xi0uzz <Черкасов Виктор> Статус: Member
<"чистая" ссылка>
> Используй обратные кавычки
> $a=`which sendmail`;

В этом случае при
print "$a"; ничего не выводится =(
Не ' ', а `` где буква Ё, левее цифры 1 15.07.04 21:30  
Автор: choor Статус: Elderman
<"чистая" ссылка>
Я знаю, что означает термин "обратные ковычки", не волнуйся!... 16.07.04 00:50  
Автор: n0xi0uzz <Черкасов Виктор> Статус: Member
<"чистая" ссылка>
Я знаю, что означает термин "обратные ковычки", не волнуйся! Но они не дают никакого результата!
Тогда это очень странно 16.07.04 08:30  
Автор: choor Статус: Elderman
<"чистая" ссылка>
согласен, но ничего поделать не могу ;) 16.07.04 12:11  
Автор: n0xi0uzz <Черкасов Виктор> Статус: Member
<"чистая" ссылка>
Это странно.. Скорее всего Ты вызываешь Perl с какими-то... 15.07.04 19:47  
Автор: Heller <Heller> Статус: Elderman
<"чистая" ссылка>
> > Используй обратные кавычки
> > $a=`which sendmail`;
>
> В этом случае при
> print "$a"; ничего не выводится =(

Это странно.. Скорее всего Ты вызываешь Perl с какими-то флагами или используешь use strict 'чё-то там'. Такого не должно быть. А по поводу примера кода - сегодня ночью попробую что-нибудь замутить. Хотя у меня в QNX вообще which отсутствует..

ЗЫ. С exec я описался - конечно там system нужен. Старею, блин :-(
имхо, лучше всего комбинированный способ 15.07.04 04:47  
Автор: Ktirf <Æ Rusakov> Статус: Elderman
Отредактировано 15.07.04 04:47  Количество правок: 1
<"чистая" ссылка>
То есть сначала мы смотрим на то, что написано в конфиге (смотрим в данном случае значит проверяем наличие - system("test -x $SENDMAIL_PATH"), наверное, можно лучше), после чего выясняем, есть ли вообще sendmail: system("sendmail <попытка что-то с ним сделать>").
C which беда в том, что формат вывода зависит от системы (например, у меня на SuSE Linux он дает "$1 is /real/path/to/$1", а на ALT Linux просто вываливает real/path/to/$1). Честно говоря, я не очень понимаю, зачем вообще нужно знать точный путь к sendmail, если можно просто попытаться им что-то сделать.
which не во всех *nix'ах есть 15.07.04 09:59  
Автор: VEK Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Например, в SCO UNIX (Openserver) ее нет, вместо нее команда type, подозреваю, что может не быть еще в каком-нибудь экзотическом unix'е.
В Solaris which есть.
На самом деле, если ничего не путаю, type - это как раз стандартная команда. 15.07.04 13:15  
Автор: Ktirf <Æ Rusakov> Статус: Elderman
<"чистая" ссылка>
То есть если хочется хорошей переносимости, то лучше пользовать type -p (кстати, если я опять же ничего не путаю, от нее вывод всегда будет вполне определенным).
то есть system("type -p sendmail"); даст мне правильный путь... 15.07.04 14:45  
Автор: n0xi0uzz <Черкасов Виктор> Статус: Member
<"чистая" ссылка>
> То есть если хочется хорошей переносимости, то лучше
> пользовать type -p (кстати, если я опять же ничего не
> путаю, от нее вывод всегда будет вполне определенным).

то есть system("type -p sendmail"); даст мне правильный путь к сендмайлу во всех никсах?
Насколько я понимаю, да, только там его выкусывать придется 15.07.04 17:33  
Автор: Ktirf <Æ Rusakov> Статус: Elderman
<"чистая" ссылка>
Потому что type -p отвечает в форме "name is /path/to/name".
Да это уже не такая проблема 16.07.04 00:52  
Автор: n0xi0uzz <Черкасов Виктор> Статус: Member
<"чистая" ссылка>
> Потому что type -p отвечает в форме "name is
> /path/to/name".
Да оишь бы хоть что-нить выдавала, а выкусить - это уже не такая проблема ;)
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach