Задача состоит в том чтобы с сайта находящегося на одной машине просмотреть размеры определенных папок находящихся на другой машине(Linux), подскажите как это можно реализоватьобзор папок на локальной машине у меня организован след. образом
function MySize($path,$mod){
static $sum = 0;
$col = '#ffffff';
if ($mod==0) {
$str = exec('du -bcS ' . $path);
$str = substr($str, 0,strlen($str)-6);
$str = round($str/(1024*1024),2);
$sum += $str;
echo "<tr><td>".$path.' </td><td align=right> '.$str.' Mb</td></tr>';
}
if ($mod==1) echo '<tr><td><b>Summa </td><td align=right><b> '.$sum.' Mb</td></tr>';
}
//////////////////////////////////////////////////////////////////////////////echo '<font size=4><table border=1>';
foreach(glob($myDir.'*') as $work){
MySize($work);
}
MySize('/var/lib/mysql',0);
MySize('/var/squirrelmail',0);
MySize('',1);
echo '</table></font>';
сделать наверное ssh ключик для user@host,
может в судо еще добавить придеться.
function MySize($path,$mod, $host){
static $sum = 0;
$col = '#ffffff';
if ($mod==0) {
$str = exec('ssh user@'.$host. '-x "du -bcS' .$path.'"');
$str = substr($str, 0,strlen($str)-6);
$str = round($str/(1024*1024),2);
$sum += $str;
echo "<tr><td>".$host.':'.$path.' </td><td align=right> '.$str.' Mb</td></tr>';
}
if ($mod==1) echo '<tr><td><b>Summa </td><td align=right><b> '.$sum.' Mb</td></tr>';
}
В php есть специальные функции для этого:
disk_free_space и disk_total_space
Пример.
$size = disk_free_space("/var");
$unit = array('b', 'Kb', 'Mb', 'Gb', 'Tb', 'Pb', 'Eb', 'Zb', 'Yb');
$size=round($size/pow(1024, ($i = floor(log($size, 1024)))), 2) . $unit[$i];
echo $size;(виноват, это, для локальной машины)
>В php есть специальные функции для этого:
>disk_free_space и disk_total_space
>Пример.
>$size = disk_free_space("/var");
>$unit = array('b', 'Kb', 'Mb', 'Gb', 'Tb', 'Pb', 'Eb', 'Zb', 'Yb');
>$size=round($size/pow(1024, ($i = floor(log($size, 1024)))), 2) . $unit[$i];
>echo $size;На локальном разделе сработает, а удаленный как этой функции подсунуть?
>>В php есть специальные функции для этого:
>>disk_free_space и disk_total_space
>>Пример.
>>$size = disk_free_space("/var");
>>$unit = array('b', 'Kb', 'Mb', 'Gb', 'Tb', 'Pb', 'Eb', 'Zb', 'Yb');
>>$size=round($size/pow(1024, ($i = floor(log($size, 1024)))), 2) . $unit[$i];
>>echo $size;
>
>На локальном разделе сработает, а удаленный как этой функции подсунуть?Записать результаты в файл или в БД, а с удаленной тогда можно будет получать результаты из БД или файла.
>Записать результаты в файл или в БД, а с удаленной тогда можно
>будет получать результаты из БД или файла.Т.е предполагается, чтобы узнать размер папки на удаленном хосте, нужно чтобы удаленный хост сначало подготовил эти результаты? А если там все часто меняется, а я запрашиваю, а результаты уже устарели? Тогда нужно чаще запускать, что-то там чтобы оно мне подготавливало, дергало базу, или на худой конец файл. Не логичнее чтобы оно считалось в только в тот момент, и только то количество раз когда мне нужны результаты?
>>Записать результаты в файл или в БД, а с удаленной тогда можно
>>будет получать результаты из БД или файла.
>
>Т.е предполагается, чтобы узнать размер папки на удаленном хосте, нужно чтобы удаленный
>хост сначало подготовил эти результаты? А если там все часто меняется,
>а я запрашиваю, а результаты уже устарели? Тогда нужно чаще запускать,
>что-то там чтобы оно мне подготавливало, дергало базу, или на худой
>конец файл. Не логичнее чтобы оно считалось в только в тот
>момент, и только то количество раз когда мне нужны результаты?А еще есть такая вещь как snmp.
>[оверквотинг удален]
>>>будет получать результаты из БД или файла.
>>
>>Т.е предполагается, чтобы узнать размер папки на удаленном хосте, нужно чтобы удаленный
>>хост сначало подготовил эти результаты? А если там все часто меняется,
>>а я запрашиваю, а результаты уже устарели? Тогда нужно чаще запускать,
>>что-то там чтобы оно мне подготавливало, дергало базу, или на худой
>>конец файл. Не логичнее чтобы оно считалось в только в тот
>>момент, и только то количество раз когда мне нужны результаты?
>
>А еще есть такая вещь как snmp.Это самый кошерный вариант.
>>В php есть специальные функции для этого:
>>disk_free_space и disk_total_space
>>Пример.
>>$size = disk_free_space("/var");
>>$unit = array('b', 'Kb', 'Mb', 'Gb', 'Tb', 'Pb', 'Eb', 'Zb', 'Yb');
>>$size=round($size/pow(1024, ($i = floor(log($size, 1024)))), 2) . $unit[$i];
>>echo $size;
>
>На локальном разделе сработает, а удаленный как этой функции подсунуть?$str=exec("/полный путь/./php my.php")
>[оверквотинг удален]
>>>disk_free_space и disk_total_space
>>>Пример.
>>>$size = disk_free_space("/var");
>>>$unit = array('b', 'Kb', 'Mb', 'Gb', 'Tb', 'Pb', 'Eb', 'Zb', 'Yb');
>>>$size=round($size/pow(1024, ($i = floor(log($size, 1024)))), 2) . $unit[$i];
>>>echo $size;
>>
>>На локальном разделе сработает, а удаленный как этой функции подсунуть?
>
>$str=exec("/полный путь/./php my.php")Этот вариант не подходт, мне нужно знать конкретно сколько каждая папка места занимает
>[оверквотинг удален]
> $str = exec('ssh user@'.$host. '-x "du -bcS' .$path.'"');
>
> $str = substr($str, 0,strlen($str)-6);
>
> $str = round($str/(1024*1024),2);
> $sum += $str;
> echo "<tr><td>".$host.':'.$path.' </td><td align=right> '.$str.' Mb</td></tr>';
> }
> if ($mod==1) echo '<tr><td><b>Summa </td><td align=right><b> '.$sum.' Mb</td></tr>';
>}А вот это отличный вариант, спасибо, буду проверять щас
....
Из шела работает а из РНР не хочет, будем разбираться
>А вот это отличный вариант, спасибо, буду проверять щас
>....
>Из шела работает а из РНР не хочет, будем разбиратьсяЕсть какие нибудь мысли, варианты?
>>А вот это отличный вариант, спасибо, буду проверять щас
>>....
>>Из шела работает а из РНР не хочет, будем разбираться
>
>Есть какие нибудь мысли, варианты?Возможно что у apache нет прав запускать ssh
>>>А вот это отличный вариант, спасибо, буду проверять щас
>>>....
>>>Из шела работает а из РНР не хочет, будем разбираться
>>
>>Есть какие нибудь мысли, варианты?
>
>Возможно что у apache нет прав запускать sshподскажите где и как разрешить
>>>>А вот это отличный вариант, спасибо, буду проверять щас
>>>>....
>>>>Из шела работает а из РНР не хочет, будем разбираться
>>>
>>>Есть какие нибудь мысли, варианты?
>>
>>Возможно что у apache нет прав запускать ssh
>
>подскажите где и как разрешитьman sudoers
нашел под каким пользоваелем выполняется Apache, добавил этого пользователя в ssh. Попробывал из под этого пользователя в рузную выполнить команду ssh написало
connct to host 192.x.x.x port 22: No route to hostпри этом пинг проходит
добавил строку в sudoersuser ALL=(root) NOPASSWD: ssh *
тоже не помогло
>нашел под каким пользоваелем выполняется Apache, добавил этого пользователя в ssh. Попробывал
>из под этого пользователя в рузную выполнить команду ssh написало
>connct to host 192.x.x.x port 22: No route to host
>
>при этом пинг проходит
>добавил строку в sudoers
>
>user ALL=(root) NOPASSWD: ssh *
>
>тоже не помоглоРекомендую Вам разобраться с snmp. Как разберетесь можно будет не только на linux размер проверять. А PHP умеет работать с snmp. Кроме этого можно собственные MIB создавать.
>Рекомендую Вам разобраться с snmp. Как разберетесь можно будет не только на
>linux размер проверять. А PHP умеет работать с snmp. Кроме этого
>можно собственные MIB создавать.на сколько я понял это будет работать для открытых в общий доступ каталогов?
Тогда этот вариант не подходит...