Servercheck: FTP, SSH, Mail, ...

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Servercheck: FTP, SSH, Mail, ...

    Hi Leute,

    da ich hier viel lerne und selbst etwas rumprobiere, habe ich mal zur Übung einen kleinen Servercheck gemacht.

    Demo: zzqshare.de/server.php

    Vielleicht kann ja der eine oder andere damit etwas anfangen oder das Script sogar weiter ausbauen :)

    Gruß Inekai

    CODE SIEHE POSTING VON D0NUT
    "Die Wahrheit wird oft verdunkelt, aber sie erlischt nie."

    Livius
  • Habe deinen Code überarbeitet ;)

    Quellcode

    1. <?php
    2. $arr = array(
    3. array('FTP-Server', 21),
    4. array('SSH-Server', 22),
    5. array('SMTP Mail-Server', 25),
    6. array('HTTP Web-Server', 80),
    7. array('POP3 Mail-Server', 100),
    8. array('HTTPS Web-Server', 443),
    9. array('MySQL-Server', 3306)
    10. );
    11. function getStat($_statPath)
    12. {
    13. if (trim($_statPath) == '') {
    14. $_statPath = '/proc/stat';
    15. }
    16. ob_start();
    17. passthru('cat '.$_statPath);
    18. $stat = ob_get_contents();
    19. ob_end_clean();
    20. if (substr($stat, 0, 3) == 'cpu') {
    21. $parts = explode(" ", preg_replace("!cpu +!", "", $stat));
    22. } else {
    23. return false;
    24. }
    25. $return = array();
    26. $return['user'] = $parts[0];
    27. $return['nice'] = $parts[1];
    28. $return['system'] = $parts[2];
    29. $return['idle'] = $parts[3];
    30. return $return;
    31. }
    32. function getCpuUsage($_statPath = '/proc/stat') {
    33. $time1 = getStat($_statPath) or die("getCpuUsage(): couldn't access STAT path or STAT file invalid\n");
    34. sleep(1);
    35. $time2 = getStat($_statPath) or die("getCpuUsage(): couldn't access STAT path or STAT file invalid\n");
    36. $delta = array();
    37. foreach ($time1 as $k=>$v) {
    38. $delta[$k] = $time2[$k] - $v;
    39. }
    40. $deltaTotal = array_sum($delta);
    41. $percentages = array();
    42. foreach ($delta as $k=>$v) {
    43. $percentages[$k] = round($v / $deltaTotal * 100, 2);
    44. }
    45. return $percentages;
    46. }
    47. ?>
    48. <center><font face="verdana" size=4><b>Aktueller Servercheck von <? echo $_SERVER['SERVER_NAME'] ?> </b>
    49. <br><br>
    50. <font face="verdana" size=2>
    51. <center><table width=350 border=0 cellspacing=1 cellpadding=3 bgcolor=#808080><tr><td bgcolor=#C0C0C0>
    52. <b>Server</td><td bgcolor=#C0C0C0 align=center><b>Status</td><td bgcolor=#C0C0C0 align=center><b>Port</td></tr>
    53. <?php
    54. foreach($arr as $c) {
    55. if(@fsockopen($_SERVER['SERVER_NAME'], $c[1], $errno, $errstr, 5)) {
    56. $img = "up.png";
    57. } else {
    58. $img = "down.png";
    59. }
    60. echo '<tr>
    61. <td bgcolor="#EAEAEA">'.$c[0].'</td>
    62. <td align="center" bgcolor="#FFFFFF"><img src="'. $img .'" border="0" width="14" height="14" alt="" /></td>
    63. <td bgcolor="#EAEAEA" align="center">'.$c[1].'</td>
    64. </tr>';
    65. flush();
    66. }
    67. ?>
    68. </table>
    69. <br>
    70. <?php
    71. $cpu = getCpuUsage();
    72. $cpulast = 100-$cpu['idle'];
    73. echo "Momentane CPU-Auslastung: " . $cpulast . "%";
    74. ?>
    Alles anzeigen
    Bilder
    • up.png

      432 Byte, 14×14, 3.405 mal angesehen
    • down.png

      431 Byte, 14×14, 3.250 mal angesehen
  • Hi d0nUt,

    wow, ist natürlich schon was anderes Dein Code als meiner. Da kennt man halt den Profi und den Anfänger auseinander :?

    Was mir aber aufgefallen ist, dass bei Deinem Code immer bei Port 21 angegeben wird in der Tabelle und mein POP3-Server wäre angeblich down. Hier mal zum Vergleich:

    Meine Version:
    http://zzqshare.de/server.php

    d0nUt`s Version:
    http://zzqshare.de/servercheck.php

    Ich habe jetzt noch eine weitere Datei eingebunden, die die CPU-Last grafisch ausgibt. Eingebunden wird sie so:

    Ganz unten vor dem letzten echo:

    echo '<img src="ratingbar.php?rating='.$cpulast.'" border="0"><br>';
    echo "Momentane CPU-Auslastung: " . $cpulast . "%";

    Gruß Inekai
    Dateien
    • ratingbar.rar

      (663 Byte, 422 mal heruntergeladen, zuletzt: )
    "Die Wahrheit wird oft verdunkelt, aber sie erlischt nie."

    Livius
  • So, ich habe das ganze jetzt nochmals erweitert und grafisch ausgebaut (und ja, mit den hässlichen und unmodernen Tabellen :lol: ) aber wer`s dennoch brauchen kann, hier ist es (Vielleicht kann d0nUt, wenn er seinen Code nochmals überprüft, gleich die erweiterte Version verwenden, da sein Code um etwas kürzer ist als der meine):

    Demo: http://zzqshare.de/server/server.php

    Eine Frage dazu: das kann man ja auch theoretisch dazu einsetzen gegen Hackerangriffe, wo die CPU-Auslastung ja drastisch nach oben geht. Wäre es möglich, eine Warnmeldung mit einzubauen, wenn die CPU-Auslastung über einen längeren Zeitraum einen bestimmten Wert übersteigt und diese dann per eMail an den Seitenbesitzer- oder Admin weitergeleitet wird?

    Gruß Inekai
    Dateien
    • server.rar

      (6,16 kB, 518 mal heruntergeladen, zuletzt: )
    "Die Wahrheit wird oft verdunkelt, aber sie erlischt nie."

    Livius
  • "inekai" schrieb:

    Was mir aber aufgefallen ist, dass bei Deinem Code immer bei Port 21 angegeben wird in der Tabelle und mein POP3-Server wäre angeblich down. Hier mal zum Vergleich

    Ich habe einen Fehler bei der Ausgabe. Ist jetzt korrigiert.

    Dein pop3s server läuft aber nicht auf port 100. Du hast schlichtweg vergessen das down bild einzubauen

    dein code:

    Quellcode

    1. if(server gefunden)
    2. up.png
    3. else
    4. ip.png


    @hackerangriffe: Die CPU Last steigt nicht nur durch Hacker auf 100%. Aber eine Warnmeldung ist natürlich auch sonst OK. Allerdings ist ein PHP Skript für sowas nicht gut geeignet. In welchem Intervall willst du das denn aufrufen? Sekündlich?
    Dazu gibts bessere Software für z.B. munin (das verwende ich auch)
  • das hatte ich mir schon fast gedacht

    function getCpuUsage($_statPath = '/proc/stat')

    allerdings was muss ich dafür ein Pfad eingeben

    OS: Debian 3.1


    ALso die datei existiert und funktioniert auch habe ich gerade mit putty rausgefunden weiss auch nicht wieso die Fehlermeldung kommt.

    hat apache vllt keine erlaubnis ?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von IRA ()

  • Mach das doch per SSH. Um einen Webserver auch nur ansatzweise vernünftig über ein eigenes Webinterface überwachen/konfigurieren brauchst viel Erfahrung, die du offensichtlich nocht nicht hast. Wenn du das nicht ordentlich machst, wird dein Webinterface eher zum Risiko als zum Schutzfaktor.
    ~ mfg SeBa

    Ich beantworte keine PMs zu Computer-/Programmierproblemen. Bitte wendet euch an das entsprechende Forum.

    [Blockierte Grafik: http://i.creativecommons.org/l/by-sa/3.0/80x15.png]
  • Hallo, also ich nutze BB bb4.org/home1.html damit kann ich komplette Serverlandschaften überwachen und sehe auch error logs etc. Das gute ist, ich kann einfach selbst ein modul schreiben für einen Dienst und es hinzufügen.
    Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert, der letzte Netzknoten kommerzialisiert, die letzte Newsgroup moderiert wird, werdet Ihr merken, dass man mit Geld allein nicht programmieren kann.