Автор Тема: Crontab и стартиране на РНР скрипт ?  (Прочетена 3688 пъти)

bombe

  • Напреднали
  • *****
  • Публикации: 24
    • Профил
Проблема е следния ..... направих си един скрипт на РНР който пингва адрес от локалната мрежа и добавя резултатите в MySQL. Идеята е съсщо така скрипта да се изпълнява през 1 час с помоща на crontab-a (става въпрос за SlackWare 12). В кронтаб-а съм го добавил така:

0 * * * * php /var/www/htdocs/ping.php

+ няколко проби от сорта на

0 * * * * /usr/bin/php -q /var/www/htdocs/zdr/ping/s.php

и

0 * * * * root /usr/bin/php -q /var/www/htdocs/zdr/ping/s.php

общо взето като се поразрових в нета каквото ми попадна съм го пробвал  ':huh:'
Всичко е много добре само дето скрипта не се изпълнява !
В лога на кронтаб-а пише че го стартира но явно по някаква причина не може да го изпълни. А когато в конзолата си напиша

php /var/www/htdocs/ping.php

скрипта се изпълнява и прави запис в базата.

Моля за малко помощ и/или съвет, как да се стартира чумичката ........
Активен

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Crontab и стартиране на РНР скрипт ?
« Отговор #1 -: Aug 19, 2008, 18:00 »
Защо преоткриваш топлата вода '<img'>

Има мнооого софтуер писан за подобни неща с доста повече възможности. Аз лично си харесвам поради някакви странни причини zabbix. Но има много други варианти, nagios например и т.н.
Активен

"Knowledge is power" - France is Bacon

bombe

  • Напреднали
  • *****
  • Публикации: 24
    • Профил
Crontab и стартиране на РНР скрипт ?
« Отговор #2 -: Aug 19, 2008, 18:09 »
Нищо не преоткривам ...... просто не ми трябва нищо повече .....
Активен

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Crontab и стартиране на РНР скрипт ?
« Отговор #3 -: Aug 19, 2008, 18:17 »
Добре де, stdout/stderr не си ги пренасочил, би трябвало да получиш един мейл с тях? Изчитал ли си мейловете на руут-а?

А иначе защо не върви като хората...сигурен ли си че в скрипта някъде не четеш или инклудваш някакъв файл? Защото ще ти трябва абсолютен път, а не ./нещоси. Това е първото, което ми хрумва де '<img'>
Активен

"Knowledge is power" - France is Bacon

Warstomp

  • Напреднали
  • *****
  • Публикации: 344
  • Distribution: Debian, Ubuntu
    • Профил
Crontab и стартиране на РНР скрипт ?
« Отговор #4 -: Aug 20, 2008, 08:41 »
Как се спря на php? Такива неща се правят или с bash, perl и подобни езици за скриптове. Те са създадени за изпълнение на машината. PHP е за web. Не казвам че не може да се направи, но не е за целта. Сложи този код в един perl файл и го направи изпълним. За да работи си сложи fping предварително и си попълни данните за базата. На различните дистрибуции командата fping връща различни отговори. Провери дали на теб ти връща стойностите, за които търси скрипта в $pos1 и 2.

Примерен код
#!/usr/bin/perl
# Ping-va vsichki ip adresi ot baza danni i zapisva rezultata v power kolonata.
# author: Stefan Pavlov
use warnings;
use DBI;

########### Edit here #####################################
my $pnum = "8";   # broi paketi za izprashtane kum vsqko ip
my $dsn = "DBI:mysql:db_name:localhost";   # db_name
my $db_user_name = "db_user";               # db_user
my $db_password = "db_pass";               # db_pass
my ($id, $password);
my $dbh = DBI->connect($dsn, $db_user_name, $db_password);                                    
my $fpingpath = "/usr/local/sbin";
########## Do not edit below #############################

my $query = "SELECT ip,power FROM iprange";
$sth = $dbh->prepare($query);
$sth->execute();
while (@results = $sth->fetchrow()) {
   $ip{$results[0]}{'power'}=$results[1];
}
my @array = keys(%ip);
# ping comandata
open(OUT,"$fpingpath/fping -q -c $pnum @array 2>&1 |") || die "Failed: $!\n";

my %iprange= ();
foreach $line (<OUT>)   {
   chomp $line;
   $pos1 = index($line,"min/avg/max");
   $pos2 = index($line,"ICMP");
   if (( $pos1 == '-1' ) && ( $pos2 == '-1' ))   {   # ulavq redovete koito nqmat vruzka
      ($ip) = split(' ',$line,2);
         my $query = "UPDATE ..............................................";
         $sth = $dbh->prepare($query);
         $sth->execute();
         $sth->finish();
   }
   if ( $pos1 != '-1' ) { # ulavq redovete koito imat vruzka
      ($ip) = split(' ',$line,2);
         my $query = "UPDATE .......................";
         $sth = $dbh->prepare($query);
         $sth->execute();
         $sth->finish();
   }
}




Активен

bombe

  • Напреднали
  • *****
  • Публикации: 24
    • Профил
Crontab и стартиране на РНР скрипт ?
« Отговор #5 -: Aug 20, 2008, 09:46 »
Ами не съм чел никви мейлове на роот-а или на които и да било '<img'> Иначе що се отнася до скрипта ..... не съм толкова напред с материала за това ползвам РНР ..... що се отнася до скрипта ........ разгледайте го (може пък на някой да му хрумне нещо):
Примерен код

<?

$host = "localhost";
$user = "pass";
$pass = "user";
$db = "ping";
mysql_connect($host, $user, $pass) or die(mysql_error());
mysql_select_db($db) or die(mysql_error());


exec("arping -I eth1 192.168.0.254 -c 5",$results);
$count=count($results);

for($i=0;$i<$count;$i++)
{
$db_result = $results[$i]."<br>";
$sql = "insert into pong (pingpong,dtime) values ('$db_result', NOW())";
mysql_query($sql) or die(mysql_error());
}
?>


Те това е ......
Активен

VladSun

  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Crontab и стартиране на РНР скрипт ?
« Отговор #6 -: Aug 20, 2008, 10:00 »
В мейловете, за които говори gat3way, ще видиш какво не е наред.

Относно скрипта ти:
- използвай "-w1000" параметър за arping - доста по-бързо ще върви скрипта;
- parse-ни малко изхода от arping и записвай по-смислена информация в базата.
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

bnight

  • Напреднали
  • *****
  • Публикации: 313
  • Distribution: Ubuntu 8.10
  • Window Manager: KDE 3.5.10
    • Профил
    • WWW
Crontab и стартиране на РНР скрипт ?
« Отговор #7 -: Aug 20, 2008, 10:06 »
Цитат (MaX_Ass @ Авг. 20 2008,09:41)
Как се спря на php? Такива неща се правят или с bash, perl и подобни езици за скриптове. Те са създадени за изпълнение на машината. PHP е за web. Не казвам че не може да се направи, но не е за целта. Сложи този код в един perl файл и го направи изпълним. За да работи си сложи fping предварително и си попълни данните за базата. На различните дистрибуции командата fping връща различни отговори. Провери дали на теб ти връща стойностите, за които търси скрипта в $pos1 и 2.

От известно време има такава мода сред системните администратори да се използва PHP скрипт вместо bash и perl . Поне по мой наблюдения hosting sysadmin така или иначе трябва да знае PHP. Така че когато знае php защо да не го ползва за скриптове ? Работи бързо сравнително гъвкаво е.

Колкото до скрипта би следвало да викнеш airping с пълен път.  Както и самото PHP с пълен път.

1 * * * * /usr/bin/php -q /var/www/htdocs/zdr/ping/s.php >/dev/null 2>&1

Така ще ти го вика на всеки час във всяка първа минута. Поздрави.



Активен

Registered Linux user: 473460
http://skyhost.bg - Хостинг и Домейни

Warstomp

  • Напреднали
  • *****
  • Публикации: 344
  • Distribution: Debian, Ubuntu
    • Профил
Crontab и стартиране на РНР скрипт ?
« Отговор #8 -: Aug 20, 2008, 10:12 »
Добави пълния път до arping.
Имал съм подобни проблеми с моя скрипт и crontab!
Активен

bombe

  • Напреднали
  • *****
  • Публикации: 24
    • Профил
Crontab и стартиране на РНР скрипт ?
« Отговор #9 -: Aug 20, 2008, 10:58 »
MaX_Ass благодаря за съвета но пак не се получи '<img'> А най-много ме хваща яд че в лога на кронтаб-а си записва че си го стартира ......
Активен

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Crontab и стартиране на РНР скрипт ?
« Отговор #10 -: Aug 20, 2008, 12:15 »
Що пък да не е за такива задачи? Много добра работа върши даже, определено е доста по-гъвкаво от шел скриптинга. Айде парсвай стрингове с awk, сглобявай нови такива и форк-вай mysql клиента с -c "blablabla", нито е по-лесно, нито е по-бързо.
Активен

"Knowledge is power" - France is Bacon

Gaara

  • Напреднали
  • *****
  • Публикации: 631
  • Distribution: Debian
  • Window Manager: E17
    • Профил
Crontab и стартиране на РНР скрипт ?
« Отговор #11 -: Aug 20, 2008, 12:27 »
perl-a върши чудеса от храброст  '<img'>
Активен

Last night, Darth Vader came down from planet Vulcan and told me that if you don't install Debian, he'd melt your brain.

bnight

  • Напреднали
  • *****
  • Публикации: 313
  • Distribution: Ubuntu 8.10
  • Window Manager: KDE 3.5.10
    • Профил
    • WWW
Crontab и стартиране на РНР скрипт ?
« Отговор #12 -: Aug 20, 2008, 16:29 »
Цитат (bombe @ Авг. 20 2008,11:58)
MaX_Ass благодаря за съвета но пак не се получи '<img'> А най-много ме хваща яд че в лога на кронтаб-а си записва че си го стартира ......

и двата пъти като един и същи потребител ли го викаш ? Възможно е да има някакъв проблем искарай няколко echo-та със статус да ти ги прати по-мейл-а като се извика от крона.

Ето така примерно:

Примерен код

<?

$host = "localhost";
$user = "pass";
$pass = "user";
$db = "ping";
mysql_connect($host, $user, $pass) or die(mysql_error());
mysql_select_db($db) or die(mysql_error());

Echo "Select DB Success";

exec("arping -I eth1 192.168.0.254 -c 5",$results);
$count=count($results);

Echo $count;

for($i=0;$i<$count;$i++)
{
$db_result = $results[$i]."<br>";

Echo $db_result;

$sql = "insert into pong (pingpong,dtime) values ('$db_result', NOW())";
Echo $sql;
mysql_query($sql) or die(mysql_error());
}
?>


Пробвай го така. Поздрави.



Активен

Registered Linux user: 473460
http://skyhost.bg - Хостинг и Домейни

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
crontab setting
Настройка на програми
vox 5 2667 Последна публикация Aug 24, 2011, 09:56
от b2l
crontab
Настройка на програми
dwni2 18 4306 Последна публикация Feb 25, 2012, 18:22
от laskov
crontab pomosht
Кошче
klnnnnng 1 2171 Последна публикация Dec 20, 2012, 02:15
от dejuren
sleep 52 в командата за crontab ?
Настройка на програми
bILLY 2 1680 Последна публикация Dec 05, 2014, 21:49
от bILLY
crontab -e
Настройка на програми
Bogo 7 3412 Последна публикация Nov 13, 2018, 09:25
от 4096bits