Strona 1 z 1

[+] cron i uruchomienie skryptów

: 22 kwietnia 2010, 12:05
autor: szpecu
Witam.
Posiadam Debiana Lenny. Wrzuciłem do crona 3 skrypty.

Pierwszy skrypt:

Kod: Zaznacz cały

#!/usr/bin/php
<?php 

#
# Sprawdzanie procesu ventrilo_srv 
# v.1.0
#

function pid_check ($nazwaprogramu, $id)
{ 

   $buf = `ps -C $nazwaprogramu -o pid=`;
   @preg_match_all('/([0-9]+)/', $buf, $tab);
   #print_r($tab);
   $v = 0;
   foreach ($tab[1] as $v)
   {
       if ($id == $v) {$v = 1;}
   }
   if ($v == 1) {return true;} else {return flase;}

}

function file_check ($dir="/home/ventrilo")
{

   $buf = `find $dir -name "ventrilo_srv\.pid"`;
   @preg_match_all('/(.+)/', $buf, $tab);

   foreach ($tab[1] as $v)
   {

       $id = file_get_contents($v); 
       
       if (@pid_check("ventrilo_srv", $id))
       {
           print "OK PID: $v\n";
       }
        else
       {
           print "ERROR PID: $v\n";
           @unlink($v);
       }

   }

}

function proces_check ()
{

   $buf = `ps -C ventrilo_srv fo pid,command`;
   @preg_match_all('/([0-9]+)\s(.+)/', $buf, $tab);
   $i = 0;

   foreach ($tab[1] as $v)
   { 
       $t = explode(" ", trim($tab[2][$i]));
       $file_pid = $t[0].".pid";
       if (!@file_exists($file_pid) OR (filesize($file_pid) == 0))
       {
           echo `echo "$v" > $file_pid`;
           echo "Dodano PID:".$v." > ".$file_pid."\n"; 
       }       
       $i++;
   }

}

@file_check();
@proces_check();

?>
Drugi skrypt:

Kod: Zaznacz cały

#!/usr/bin/php
<?php

include('/var/www/panel/config.php');


// sprawdzanie daty
function date_diff($date1, $date2)
{

$d1 = explode("-", $date1);
$y1 = $d1[0];
$m1 = $d1[1];
$d1 = $d1[2];

$d2 = explode("-", $date2);
$y2 = $d2[0];
$m2 = $d2[1];
$d2 = $d2[2];

$date1_set = mktime(0,0,0, $m1, $d1, $y1);
$date2_set = mktime(0,0,0, $m2, $d2, $y2);

return(round(($date2_set-$date1_set)/(60*60*24)));
}
// -----

// Pobieranie informacji o czasie pracy serwera.
$UpTime = file('/proc/uptime');
$UpTime = $UpTime[0];

// Formatowanie danych...
$UpSecs = floor($UpTime % 60);
$UpMins = floor($UpTime / 60 % 60);
$UpHours = floor($UpTime / 3600 % 24);
$UpDays = floor($UpTime / 86400);

$UpTime = 'Czas pracy serwera: ';

if ($UpDays > 0)
  {
  $UpTime .= $UpDays;
  $UpTime .= ' d ';
  }
if ($UpHours > 0)
  {
  $UpTime .= $UpHours;
  $UpTime .= ' h ';
  }
if ($UpMins > 0)
  {
  $UpTime .= $UpMins;
  $UpTime .= ' m ';
  }
if ($UpSecs > 0)
  {
  $UpTime .= $UpSecs;
  $UpTime .= ' s';
  }

// Włączanie i wyłączanie serwerów.

if (($UpDays==0) && ($UpHours==0) && ($UpMins==2)) {

$sql = "select * from `vt_users` order by `port` ASC";
$zapytanie = mysql_query($sql);
while($row = mysql_fetch_array($zapytanie))
    {$date=date_diff(date("Y-m-d"), $row['data']);
        if($date<0)$data=''; else {

        unlink('/home/ventrilo/'.$row['port'].'/ventrilo_srv.pid');
    }
}

sleep(10);

$sql = "select * from `vt_users` order by `port` ASC";
$zapytanie = mysql_query($sql);
while($row = mysql_fetch_array($zapytanie))
    {$date=date_diff(date("Y-m-d"), $row['data']);
        if($date<0)$data=''; else {

            if(!eregi($row['port'],@file_get_contents('/tmp/ventrilo_start')) and !file_exists('/home/ventrilo/'.$row['port'].'/ventrilo_srv.pid')){
            $f = fopen('/tmp/ventrilo_start','a');
            if(fwrite($f, $row['port']."\n"))
            fclose($f);
            $sql="select `id` from `vt_users` where `port`='".$row['port']."'";
            $wiersz=mysql_fetch_array(mysql_query($sql));

                $sql="insert into `vt_logi` SET `user_id`='".$wiersz['id']."', `ip`='127.0.0.1', `data`='".date("Y-m-d H:i:s")."', `login`='SuperAdmin', `tresc`='1'";
                mysql_query($sql);

    }
}
}
}else
{
echo $UpTime;
}


?>
Trzeci skrypt:

Kod: Zaznacz cały

#!/bin/bash
# zatrzymywanie serwerów
if [ -e "/tmp/ventrilo_stop" ]
then
cp /tmp/ventrilo_stop /tmp/ventrilo_stop_b
echo " ">/tmp/ventrilo_stop

    for x in $(cat /tmp/ventrilo_stop_b)
    do
        if [ -n "$x" ]
        then
    echo $x
                    b=${x#*;}
                    a=${x%;*}

                    kill -9 "$a"
                    rm "/home/ventrilo/$b/ventrilo_srv.pid"
        fi
    done
    rm /tmp/ventrilo_stop_b
fi

# uruchamianie serwerów
if [ -e "/tmp/ventrilo_start" ]
then
cp /tmp/ventrilo_start /tmp/ventrilo_start_b
echo " ">/tmp/ventrilo_start
    for x in $(cat /tmp/ventrilo_start_b)
    do
            if [ -n "$x" ]
            then
                    /home/ventrilo/$x/ventrilo_srv -f/home/ventrilo/$x/ventrilo_srv >/dev/null &
                    sleep 2
                    chmod 777 "/home/ventrilo/$x/ventrilo_srv.pid"

            fi
    done
    rm /tmp/ventrilo_start_b
fi
A o to logi, które mi cron wysyła:

Kod: Zaznacz cały

From root@cs.localdomain  Thu Apr 22 10:03:02 2010
Return-Path: <root@cs.localdomain>
X-Original-To: root
Delivered-To: root@cs.localdomain
Received: by cs.localdomain (Postfix, from userid 0)
    id 65F881E7A7EA; Thu, 22 Apr 2010 10:03:01 +0000 (UTC)
From: root@cs.localdomain (Cron Daemon)
To: root@cs.localdomain
Subject: Cron <root@cs> /var/www/files/1.sh
Content-Type: text/plain; charset=ANSI_X3.4-1968
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=root>
Message-Id: <20100422100302.65F881E7A7EA@cs.localdomain>
Date: Thu, 22 Apr 2010 10:03:01 +0000 (UTC)

/bin/sh: /var/www/files/1.sh: /usr/bin/php^M: bad interpreter: No such file or directory

From root@cs.localdomain  Thu Apr 22 10:03:03 2010
Return-Path: <root@cs.localdomain>
X-Original-To: root
Delivered-To: root@cs.localdomain
Received: by cs.localdomain (Postfix, from userid 0)
    id C3D2C1E7A7CE; Thu, 22 Apr 2010 10:03:01 +0000 (UTC)
From: root@cs.localdomain (Cron Daemon)
To: root@cs.localdomain
Subject: Cron <root@cs> /var/www/files/sprawdz.sh
Content-Type: text/plain; charset=ANSI_X3.4-1968
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=root>
Message-Id: <20100422100302.C3D2C1E7A7CE@cs.localdomain>
Date: Thu, 22 Apr 2010 10:03:01 +0000 (UTC)

/bin/sh: /var/www/files/sprawdz.sh: /bin/bash^M: bad interpreter: No such file or directory
Nie wiem, czego możne być to wina?
Pozdrawiam i dziękuje z góry za pomoc.

: 22 kwietnia 2010, 12:21
autor: lessmian2

Kod: Zaznacz cały

/bin/sh: /var/www/files/1.sh: [b][u]/usr/bin/php^M[/u][/b]: bad interpreter: No such file or directory
Masz zły znacznik końca linii. Popraw i będzie ok. Nie pisałeś czasem pod Windowsem i skopiowałeś pliki na Linuksa?

: 22 kwietnia 2010, 12:32
autor: szpecu
Ja tego skryptu nie napisałem, a osoba która go napisała teraz już mi pomoc nie chce. A mógłbyś mi wskazać gdzie ten znacznik znajdę? Jak tak przeglądam przez nano to nic takiego tam nie ma.

Kod: Zaznacz cały

/usr/bin/php^M

: 22 kwietnia 2010, 12:38
autor: lessmian2
Zainstaluj pakiet tofrodos i spróbuj:

Kod: Zaznacz cały

 dos2unix skrypt.php
Sprawdź czy dalej pluje błędami.

: 22 kwietnia 2010, 12:48
autor: szpecu

Kod: Zaznacz cały

dos2unix: Unable to access file skrypt.php.
Takie coś się wyświetliło.

A to mail od crona:

Kod: Zaznacz cały

From root@cs.localdomain  Thu Apr 22 10:46:02 2010
Return-Path: <root@cs.localdomain>
X-Original-To: root
Delivered-To: root@cs.localdomain
Received: by cs.localdomain (Postfix, from userid 0)
    id F005A1E7A7EA; Thu, 22 Apr 2010 10:46:01 +0000 (UTC)
From: root@cs.localdomain (Cron Daemon)
To: root@cs.localdomain
Subject: Cron <root@cs> /var/www/files/sprawdz.sh
Content-Type: text/plain; charset=ANSI_X3.4-1968
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=root>
Message-Id: <20100422104601.F005A1E7A7EA@cs.localdomain>
Date: Thu, 22 Apr 2010 10:46:01 +0000 (UTC)

/bin/sh: /var/www/files/sprawdz.sh: /bin/bash^M: bad interpreter: No such file or directory

From root@cs.localdomain  Thu Apr 22 10:47:02 2010
Return-Path: <root@cs.localdomain>
X-Original-To: root
Delivered-To: root@cs.localdomain
Received: by cs.localdomain (Postfix, from userid 0)
    id BF2B91E7A7EA; Thu, 22 Apr 2010 10:47:01 +0000 (UTC)
From: root@cs.localdomain (Cron Daemon)
To: root@cs.localdomain
Subject: Cron <root@cs> /var/www/files/sprawdz.sh
Content-Type: text/plain; charset=ANSI_X3.4-1968
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=root>
Message-Id: <20100422104702.BF2B91E7A7EA@cs.localdomain>
Date: Thu, 22 Apr 2010 10:47:01 +0000 (UTC)

/bin/sh: /var/www/files/sprawdz.sh: /bin/bash^M: bad interpreter: No such file or directory
Czyli teraz pluje o basha.

: 22 kwietnia 2010, 12:53
autor: lessmian2
Mama nadzieję, że zamiast skrypt.php wstawiłeś ścieżkę do swojego skryptu? Wykonaj w terminalu:

Kod: Zaznacz cały

dos2unix /var/www/files/1.sh
dos2unix /var/www/files/sprawdz.sh

: 22 kwietnia 2010, 13:01
autor: szpecu
Dziękuję Ci bardzo. Wszystko ładnie działa.