Skocz do zawartości
Szukaj w
  • Więcej opcji...
Znajdź wyniki, które zawierają...
Szukaj wyników w...
Dave

Daemon działający z większością botów administracyjnych w PHP

Rekomendowane odpowiedzi

Witam.

 

Tak jakoś ostatnio @Paweł MFnarzekał, że nic nie dodaje, tak więc skoro coś już napisałem to postanowiłem również tu zamieścić

 

<?php
/*
W pliku /etc/crontab na końcu dodajemy nową linijkę:
* *     * * *   root    php /root/checker.php #to jest ścieżka do naszego skryptu w php
Następnie wpisujemy komendę:
systemctl restart cron
*/
require('tsApps/classes/ts3admin.class.php');
require('tsApps/include/config/config.php');
$tsAdmin = new ts3admin($config[1]['connection']['host'], $config[1]['connection']['query_port']);
$test = $tsAdmin->connect();
if($test['success']) {
  $tsAdmin->login($config[1]['connection']['login'], $config[1]['connection']['password']);
  $tsAdmin->selectServer($config[1]['connection']['port']);
  $clients = $tsAdmin->clientList();
  $bots_online = [];
  foreach($clients['data'] as $client) {
          if($client['client_type']==1)
            array_push($bots_online,$client['client_nickname']);
  }
  $prefixes = [ //Wprowadzone w celu integracji z configiem tsApp
  '',
  '(tsApps) ',
  'tsApps • ',
  'tsApps | ',
  'tsApps » ',
  '(m-bot) ',
  '(mBot) '
  ];
  $okk_array = [
    [
      'command' => 'cd /root/tsApps/ && screen -LdmS tsApp1 tsApp1 php core.php -i 1',
      'screen_name' =>'tsApp1',
      'bot_nickname' => $prefixes[$config['connection']['prefix']].$config[1]['instance']['name']
    ],
    [
      'command' => 'cd /root/tsApps/ && screen -LdmS tsApp2 tsApp2 php core.php -i 2',
      'screen_name' => 'tsApp2',
      'bot_nickname' => $prefixes[$config['connection']['prefix']].$config[2]['instance']['name']
    ],
    [
      'command' => 'cd /root/tsApps/ && screen -LdmS tsApp3 tsApp3 php core.php -i 3',
      'screen_name' => 'tsApp3',
      'bot_nickname' => $prefixes[$config['connection']['prefix']].$config[3]['instance']['name']
    ],
    [
      'command' => 'cd /root/tsApps/ && screen -LdmS tsApp4 tsApp4 php core.php -i 4',
      'screen_name' => 'tsApp4',
      'bot_nickname' => $prefixes[$config['connection']['prefix']].$config[4]['instance']['name']
    ],
    [
      'command' => 'cd /root/tsApps/ && screen -LdmS tsApp5 tsApp5 php core.php -i 5',
      'screen_name' => 'tsApp5',
      'bot_nickname' => $prefixes[$config['connection']['prefix']].$config[5]['instance']['name']
    ],
    [
      'command' => 'cd /root/tsApps/ && screen -LdmS tsApp6 tsApp6 php core.php -i 6',
      'screen_name' => 'tsApp6',
      'bot_nickname' => $prefixes[$config['connection']['prefix']].$config[6]['instance']['name']
    ],
    [
      'command' => 'cd /root/teleport/ && screen -LdmS Teleport Teleport php core.php',
      'screen_name' => 'Teleport',
      'bot_nickname' => 'NeoSpeak » Teleport'
    ],
    [
      'command' => 'cd /root/tsApps/ && screen -LdmS Zegarynka Zegarynka php timebot.php',
      'screen_name' => 'Zegarynka',
      'bot_nickname' => 'Zegarynka'
    ],
  ];
  foreach($okk_array as $ok) {
    if(!in_array($ok['bot_nickname'], $bots_online)) {
      echo "\e[0;31;40m >> Bot ".$ok['bot_nickname']." jest offline\n";
      echo "\e[0;31;40m >> Trwa restartowanie bota...\n";
      shell_exec("screen -wipe");
      $screen_list = shell_exec("screen -list | grep -v 'There are screens on' | grep -v 'Sockets in /run/screen/S-root' | grep -v 'Dead' | grep '".$ok['bot_nickname']."'| cut -c 6-20");
      if(sizeof(explode("\n", $screen_list))>0){
        //zamykanie procesu
        shell_exec("screen -S ".$ok['screen_name']." -X kill");
        shell_exec("screen -wipe");
      }
      shell_exec($ok['command']);
      sleep(2);
    } else {
      echo "\e[0;34;40m >> Bot ".$ok['bot_nickname']." jest online\n";
    }
  }
}else{
  print_r($test);
}
echo "\e[1;37;40m";

Skrypt jest przystosowany do tsApps, ale kto chociaż trochę umie modyfikować kod nie będzie miał problemu z wprowadzeniem tego do swojego bota (no bo to wy przecież sami napisaliście te wszystkie boty... 😉 )

 

Pozdro,

@Dave

  • Lubię to! 1
  • Kocham To! 2
  • Hahaa! 1

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
 echo "\e[0;31;40m >> Bot ".$ok['bot_nickname']." jest offline\n";
      echo "\e[0;31;40m >> Trwa restartowanie bota...\n";

skoro jest offline to nie TRWA RESTARTOWANIE 

tylko włączanie? bo restart to chyba można wykonać jeżeli cokolwiek jest włączone

Czy też mylę w ogóle co ten bot robi lulz

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Bot może być podłączony, ale posiadać błąd w stylu:

  1. Nieprawidłowa nazwa
  2. Connection lost (proces istnieje)

W tych przypadkach jest pełny restart aplikacji, tak więc jedyną poprawką tekstową to, że nie jest offline, tylko np. "posiada usterkę itp". Każdy sobie może nazywać według uznania, a mimo tego bot ma tak na prawdę za zadanie zrestartować/uruchomić aplikację. Można oczywiście powymyślać sobie, że w takim i takim przypadku ma pisać, że bot jest uruchamiany, a w innych że jest restartowany, ale czy to ma sens? Myślę, że to tylko zbędny kod.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.


  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...