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





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
если бы... 15.07.04 02:38  Число просмотров: 1362
Автор: n0xi0uzz <Черкасов Виктор> Статус: Member
<"чистая" ссылка>
malgajan, ты не понял - я хочу чтобы скриптсамискал путь к сендмайл ;)

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

---
?
<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