Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Трассировка из под apache2  (Прочитано 1817 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн зоррыч

  • Автор темы
  • Новичок
  • *
  • Сообщений: 21
    • Просмотр профиля
Трассировка из под apache2
« : 19 Февраля 2010, 14:03:32 »
Необходимо сделать скрипт который бы из php  скрипта  делал трейс в командной строке до юзверя.
Стоит  apache2+php.
Написал такой скриптик на php
<?php

#$result=`ls /var/www`;
$result=`tracert ya.ru`;

echo 
$result;
?>
При этом если первый result расскомментить( и закоментить второй) , то веб страница выдаст список содержимого папки /var/www
Если сделать наоборот,  то команда tracert ya.ru  не выполняется,страница выходит пустой.  Мб эта команда гдето блокируется на стороне апача и пхп?

Решил пойти обходным путем, написать bash скрипт и тягать его с php.
Получилось что-то вроде:
<?php
exec
(`/var/www/1.sh`, $result);
foreach(
$result as $line)
        echo 
"$line";
 
?>

Страница так-же выходит пустой( ошибок синтаксиса не выдается, хотя если указать несуществующшее название скрипта он ругается) .
Сам скрипт:

#!/bin/sh
DATA=`netstat -tupn`
echo $DATA

Еще хотел сделать чтобы апач тягал скрипт, а тот  делал вывод в файл, но эта затея оказалась тоже провальной т  к файл в который нужно сделать вывод не создается( скрипт не запускается).
Не подскажите в какую сторону копать?

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: Трассировка из под apache2
« Ответ #1 : 19 Февраля 2010, 14:22:55 »
tracert нужны права суперпользователя.

Оффлайн зоррыч

  • Автор темы
  • Новичок
  • *
  • Сообщений: 21
    • Просмотр профиля
Re: Трассировка из под apache2
« Ответ #2 : 19 Февраля 2010, 15:11:45 »
добавил строчку   в /etc/sudoers
www-data ALL=NOPASSWD: ALL

Перед tracert  дофисал sudo.
Все заработало.
Спасибо!

 
« Последнее редактирование: 19 Февраля 2010, 15:15:36 от зоррыч »

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: Трассировка из под apache2
« Ответ #3 : 19 Февраля 2010, 15:18:48 »
У меня работает. ЧЯДНТ?
<?php
echo `sudo tracert ya.ru 2>&1`;
?>

Пользователь решил продолжить мысль 19 Февраля 2010, 15:21:04:
добавил строчку   в /etc/sudoers
www-data ALL=NOPASSWD: ALL
Правильнее так:
www-data ALL=NOPASSWD: /usr/bin/tracert
« Последнее редактирование: 19 Февраля 2010, 15:21:04 от Mam(O)n »

Оффлайн зоррыч

  • Автор темы
  • Новичок
  • *
  • Сообщений: 21
    • Просмотр профиля
Re: Трассировка из под apache2
« Ответ #4 : 19 Февраля 2010, 16:22:36 »
С tracert  все прекрасно работает.
Однако если ввести
system ("sudo mtr ya.ru --report-cycles 2") ;(или без sudo), то все равнов вдается пустой экран.

Пытался обойти проблему так-
system ("sudo mtr ya.ru --report-cycles 1 > /var/www/1.txt") ;
Однако 1.txt выглядит  следующим образом:
[?1049h(B[?7h(B My traceroute  [v0.75]
(Bs (0.0.0.0)Fri Feb 19 15:40:30 2010
Keys:  (BH(Belp   (BD(Bisplay mode   (BR(Bestart statistics   (BO(Brder of fields   (Bq(Buit(B   PacketsPings
 Host Loss%   Snt   Last   Avg  Best  Wrst StDev

(B


 1. 83.69.226.2510.0%     1    0.1   0.1   0.1   0.1   0.0
 2. ???

193.232.246.930.0%     1    9.8   9.8   9.8   9.8   0.0
 3. ???

msk-ix-m10.yandex.net

77.88.16.1250.0%     1    4.7   4.7   4.7   4.7   0.0
 4. ???

toyota-vlan602.yandex.net

213.180.210.1870.0%     1   12.4  12.4  12.4  12.4   0.0
 5. ???

odin-vlan4.yandex.net

213.180.204.80.0%     1   12.0  12.0  12.0  12.0   0.0

ya.ru        

[?1049l
[?1l>
Трейс  делается, однако при сохранении в файл происходит чтото с кодировкой.
Честно говоря не хочется использовать tracert  т к в случае недоступности последнего хоста весь трейс занянется на 30 хопов, что заметно скажется на времени загрузки страницы.

В  /etc/sudoers
Пока стоит:
www-data ALL=NOPASSWD: ALL
« Последнее редактирование: 19 Февраля 2010, 16:24:21 от зоррыч »

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: Трассировка из под apache2
« Ответ #5 : 19 Февраля 2010, 16:33:11 »
С mtr используй --report. По дефолту он использует интерактивный режим и спецкоды терминала.

Оффлайн зоррыч

  • Автор темы
  • Новичок
  • *
  • Сообщений: 21
    • Просмотр профиля
Re: Трассировка из под apache2
« Ответ #6 : 19 Февраля 2010, 17:26:43 »
Спасибо, для запуска mtr sudo не нужно, поэтому возня с ним вышла зря =)))
Но пригодится на  будущее.

Окончательная ( рабочая) версия.

<?php
$ip
=$_SERVER['REMOTE_ADDR'];
echo 
"<pre>";
exec("mtr $ip --report-cycles 10 --report "$result);
foreach(
$result as $line)
       { echo  
$line;
        echo 
"\n";
 }
echo 
"</pre>";
?>
« Последнее редактирование: 19 Февраля 2010, 17:28:35 от зоррыч »

Оффлайн terrible_user

  • Активист
  • *
  • Сообщений: 438
    • Просмотр профиля
Re: Трассировка из под apache2
« Ответ #7 : 19 Февраля 2010, 18:50:36 »
tracert нужны права суперпользователя.

Пошутил ?
Если path в баше для пользователя может и не цепляет некоторые директории, то выполнять можно с указанием полного пути
« Последнее редактирование: 19 Февраля 2010, 18:56:28 от terrible_user »
Бери больше, кидай дальше

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: Трассировка из под apache2
« Ответ #8 : 19 Февраля 2010, 18:52:20 »
Пошутил ?
Отнюдь.
mamon@mamon-desktop:~$ tracert ya.ru
The specified type of tracerouting is allowed for superuser only

Пользователь решил продолжить мысль 19 Февраля 2010, 19:01:51:
Если path в баше для пользователя может и не цепляет некоторые директории, то выполнять можно с указанием полного пути
Если бы не было в path то и ошибка бы была command not found
mamon@mamon-desktop:~$ which tracert
/usr/bin/tracert
mamon@mamon-desktop:~$ /usr/bin/tracert ya.ru
The specified type of tracerouting is allowed for superuser only
« Последнее редактирование: 19 Февраля 2010, 19:01:51 от Mam(O)n »

Оффлайн Karl500

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 2267
    • Просмотр профиля
Re: Трассировка из под apache2
« Ответ #9 : 19 Февраля 2010, 19:08:04 »
А traceroute чем не подходит?

vladimir@vladimir-laptop:~$ traceroute ya.ru
traceroute to ya.ru (77.88.21.8), 30 hops max, 60 byte packets
 1  192.168.1.1 (192.168.1.1)  2.313 ms  3.927 ms  5.353 ms
 2  ppp85-140-64-1.pppoe.mtu-net.ru (85.140.64.1)  55.609 ms  56.885 ms  58.568 ms
 3  a197-crs-1-be1-53.msk.stream-internet.net (212.188.1.113)  61.002 ms  62.230 ms  65.021 ms
 4  a197-crs-1-be1-53.msk.stream-internet.net (212.188.1.113)  65.129 ms  68.483 ms  68.664 ms
 5  m9-crs-1-be4.msk.stream-internet.net (195.34.59.49)  70.754 ms  78.372 ms  78.472 ms
 6  m9-cr02-po6.msk.stream-internet.net (195.34.59.242)  78.963 ms  147.819 ms  73.557 ms
 7  Yandex-m9.msk.stream-internet.net (195.34.36.30)  74.521 ms  75.966 ms  77.816 ms
 8  gallium-vlan901.yandex.net (77.88.56.126)  79.483 ms  80.484 ms  82.355 ms
 9  hummer-vlan2.yandex.net (87.250.228.136)  84.485 ms  85.934 ms  88.055 ms
10  ya.ru (77.88.21.8)  89.746 ms  90.815 ms  92.660 ms
vladimir@vladimir-laptop:~$

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: Трассировка из под apache2
« Ответ #10 : 19 Февраля 2010, 19:10:41 »
Но! traceroute в отличии от tracert не требует прав. Хоть и все симлинки и ведут к traceroute.db, надо смотреть убунтовские патчи на предмет того, что скорее всего там есть патч, который добавляет функционал, который при вызове tracert использует какие-то специальные опции traceroute для того, чтоб быть более похожей на вендовый tracert и соответственно они требуют повышение привелегий.

Оффлайн terrible_user

  • Активист
  • *
  • Сообщений: 438
    • Просмотр профиля
Re: Трассировка из под apache2
« Ответ #11 : 19 Февраля 2010, 19:11:29 »
Пошутил ?
Отнюдь.
mamon@mamon-desktop:~$ tracert ya.ru
The specified type of tracerouting is allowed for superuser only

однако, не знал
думал обычно другая ситуация, когда из пользовательского баша просто нельзя вызвать всякие команды типа ifconfig без полного пути

Не в эту тему, но довольно интересный эксперимент
(Нажмите, чтобы показать/скрыть)
Бери больше, кидай дальше

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: Трассировка из под apache2
« Ответ #12 : 19 Февраля 2010, 19:12:21 »
А traceroute чем не подходит?
Тем, что уже несколько постов назад mtr более к месту оказался.

Пользователь решил продолжить мысль 19 Февраля 2010, 17:19:05:
более похожей на вендовый tracert и соответственно они требуют повышение привелегий.

А вот и ответ, которого нет в манах:
Цитата: traceroute.c
/*  Set initial parameters according to how we was called   */

static void check_progname (const char *name) {

...

   if (p[l] == '6')  af = AF_INET6;
   else if (p[l] == '4')  af = AF_INET;

   if (!strncmp (p, "tcp", 3))
      module = "tcp";
   if (!strncmp (p, "tracert", 7))
      module = "icmp";

   return;
}

Пользователь решил продолжить мысль 19 Февраля 2010, 19:32:57:
То есть, к данной теме если нормальными словами. Когда первые 7 символов в вызываемой команде являются "tracert", то это эквивалентно вызову traceroute -I, которая собственно и требует повышения прав.
« Последнее редактирование: 19 Февраля 2010, 19:32:57 от Mam(O)n »

 

Страница сгенерирована за 0.038 секунд. Запросов: 23.