การนำ chatbot AI Abdul ของ Nectec มาประยุกต์ใช้งานกับงานผู้ดูแลระบบ network ( ยากๆ เราไม่ ง่ายๆ เราทำ)


    สืบเนื่องจากบทความที่แล้ว เราได้ทำการลองเล่นกับ abdul ไปบ้างแล้ว คราวนี้เราลองเอา Abdul มาประยุกต์ใช้งานครับ  ใครยังไม่รู้จัก abdul ลองอ่านได้ที่  https://havespirit.blogspot.com/2017/08/line-chatbot-as-conversation-ai.html

 ขอบคุณอาจารย์โคนัน จาก nectec มากๆ ครับ



 เนื่องจากงานหลักๆ ในหน้าที่ผมคือดูแลระบบ network และ server จึงพยายามนำมาประยุกต์ใช้กับงานที่ต้องดูแลระบบ network โดยปกติระบบ monitor นี้ ผมกับน้องอีกคนทำขึ้นมาเอง ใช้ python เก็บข้อมูลง mysql แล้วถ้าเกิดมี server down หรือ ห้อง server ร้อน มันก็จะแจ้งเตือนผ่าน ไลน์อยู่แล้ว แต่สมมติว่าถ้าอยากดูข้อมูลแบบ realtime ล่ะ ผมก็เลยเพิ่มช่องทางการตรวจสอบผ่าน line chatbot เลย สะดวกดี จะดูเมื่อไหร่ก็ได้


โดยปัจจุบันนี้ Line chatbot ที่ทำมาจาก abdul สามารถทำได้ดังนี้

1.ตรวจสอบดู bandwidth และจำนวนผู้ใช้งานอินเทอร์เน็ต แบบ realtime

   อันนี้เขียนด้วย python ดึงค่าจาก core swtich แล้วส่งไปที่ thingspeak และเก็บลง mysql จากนั้นเขียนด้วย php ดึงค่ามาแสดงรวมทั้งหมด แต่จริงๆ สามารถให้ abdul ดึงจาก thingspeak ตรงๆ ก็ได้ แต่ค่าที่ได้จะแยกกัน ใช้ XTEXT

/////////////////////////////////

2.ตรวจสอบดูอุณหภูมิและความชื่นห้อง server แบบ realtime
   อันนี้ใช้ nodemcu + dht22 แล้วยิงข้อมูลขึ้น thingspeak และเก็บใน mysql ครับ จากนั้นเขียนด้วย php ดึงค่าจาก thingspeak มาแสดงครับ  ใช้ XTEXT

   อ่านเพิ่มเติมได้ที่  https://havespirit.blogspot.com/2017/03/esp8266-dht11-mysql-thingspeak-line.html


///////////////////////////////////////


3.ดูสถานะของเครื่องคอมพิวเตอร์แม่ข่าย เฉพาะที่ down ย้อนหลังได้
    อันนี้เขียนด้วย python แล้วส่งข้อมูล ip ของ server ที่ down ขึ้น thingspeak แล้ว ให้ abdul เรียกผ่าน thingspeak ตรงๆ เลย ด้วย XTEXT แต่จะเห็น server ที่ down ทั้งหมดแม้จะผ่านมาแล้ว เรียงลำดับลงมา ตามวันเวลา
    วิธีการทำอ่านได้ที่ https://havespirit.blogspot.com/2017/08/python-ping-server-mysql.html

การตั้งค่าที่ abdul



////////////////////////////////

4.สามารถตรวจสอบสถานะ server ด้วยการ ping  โดยสามารถ ping จาก line chatbot ได้เลย แม้ server นั้นไม่ได้มี publish ip  อันนี้ที่ผมทำ ping เฉพาะ  port 80 น่ะครับ แต่เอาไปประยุกต์ใช้ได้ครับ


    อันนี้เขียนโปรแกรมบน php ครับ รับค่า พารามิเตอร์ เป็น IP หรือ name  ใช้ xtext


การตั้งค่าที่ abdul



/////////// code php //////


<?php
 error_reporting(0);
$server1 = $_REQUEST['ip'];
$server = gethostbyname($server1);

//Page Variables
    $online= $server.'  is online';
    $offline=$server.'  is offline';
//Functions
    function servercheck($server,$port){
        //Check that the port value is not empty
        if(empty($port)){
            $port=80;
        }
        //Check that the server value is not empty
        if(empty($server)){
            $server='localhost';
        }
        //Connection
        $fp=@fsockopen($server, $port, $errno, $errstr, 1);
            //Check if connection is present
            if($fp){
                //Return Alive
                return 1;
            } else{
                //Return Dead
                return 0;
            }
        //Close Connection
        fclose($fp);
    }
//Ports and Services to check
$services=array(
    'HTTP (Port 80)' => array($server => 80)
);

foreach($services as $name => $server){
 //echo $name;
   //echo $server;

    foreach($server as $host => $port){
        if(servercheck($host,$port)){ echo $online." "; }else{ echo $offline." "; }
    }

}
?>

// อันนี้ check เฉพาะ port 80 

 ที่มาของ code ครับ https://www.namepros.com/threads/server-status-script.271042/



/////////////////////////////

5.ดู service  port ของ  server ว่าทำงานไหม

    โดยเอา code php จากข้อ 4 มาประยุกต์ใช้ครับ


/////////////////// code php //////////////

<?php
 error_reporting(0);
$server1 = $_REQUEST['ip'];
$server = gethostbyname($server1);

//Page Variables
   $online= ' ==>  On '.' ,  ';
    $offline=' ==>  Off'.' ,  ';
//Functions
    function servercheck($server,$port){
        //Check that the port value is not empty
        if(empty($port)){
            $port=80;
        }
        //Check that the server value is not empty
        if(empty($server)){
            $server='localhost';
        }
        //Connection
        $fp=@fsockopen($server, $port, $errno, $errstr, 1);
            //Check if connection is present
            if($fp){
                //Return Alive
                return 1;
            } else{
                //Return Dead
                return 0;
            }
        //Close Connection
        fclose($fp);
    }
//Ports and Services to check
$services=array(
   'HTTP(80)' => array($server => 80),
    'HTTPS(443)' => array($server => 443),    
    'FTP(21)' => array($server  => 21),    
    'SSH(22)' => array($server => 22),
    'RDP(3389)' => array($server => 3389)

);


foreach($services as $name => $server){
 //echo $name;
   //echo $server;

    foreach($server as $host => $port){
        if(servercheck($host,$port)){ echo $online." "; }else{ echo $offline." "; }
    }

}
?>





///////////////////////////////////////


/////////////////////////////////


6.อันนี้ไว้ใช้หาเบอร์โทร ติดต่อระหว่างหน่วยงานภายในครับ
    พอดีมีฐานข้อมูลอยู่แล้ว เขียน php ดึงออกมาเป็น json โดยใช้ function XJSON ครับ

   
/// เพิ่มเติม 2007/08/24 07:12)

7. scanport  เอาไว้ check ว่า server เรา เปิด port อะไรไว้บ้าง

/////  code php scanport ////

<?php

error_reporting(~E_ALL);

$from = 1;
$to = 10000;

//TCP ports
$host = $_REQUEST['ip'];

//Create a socket
$socket = socket_create(AF_INET , SOCK_STREAM , SOL_TCP);
  echo $host." open port ==> \n\n\n";
 for($port = $from; $port <= $to ; $port++)
{
    //connect to the host and port
    $connection = socket_connect($socket , $host ,  $port);
    if ($connection)
    {
      echo " $port \n".",";

      //Close the socket connection
      socket_close($socket);

///////

  การตั้งค่า abdul



***************************************


ความคิดเห็น

แสดงความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

แจ้งเตือนเข้าไลน์กลุ่ม ผ่าน Line notify เมื่อมีคน login เข้า server ของเราผ่าน SSH (linux) หรือ remote desktop เข้ามา (windows server)

การทำ cloud iot ด้วย thingsboard ไว้ใช้เองครับ

การประยุกต์ใช้ line notify ในการแจ้งปัญหาการใช้งาน สำหรับ php