วันจันทร์ที่ 27 เมษายน พ.ศ. 2558

การติดตั้ง php syslog viewer บน ubuntu

การติดตั้ง php syslog viewer บน ubuntu

อ้างอิง http://citec.us/forum/index.php?showtopic=23359&mode=threaded&pid=55496 จัดทำเมื่อ 1/12/2008
ทดลองบน Ubuntu 8.04
บทนำ
  1. ติดตั้ง syslog-ng ด้วยคำสั่ง
    apt-get install syslog-ng
  2. ดาวน์โหลดโปรแกรม php syslog viewer ด้วยคำสั่ง
    wget http://downloads.sourceforge.net/phpsyslogviewer/phpsyslogviewer-7.2.1.tar.bz2
  3. ติดตั้งโปรแกรม bzip2 ด้วยคำสั่ง
    apt-get install bzip2
  4. แตกไฟล์ phpsyslogviewer ด้วยคำสั่ง
    tar xjvf phpsyslogviewer-7.2.1.tar.bz2
  5. ดาวน์โหลดโปรแกรม speedupd ซึ่งเป็นโปรแกรมเร่งความเร็วให้เอนจิ้นป้อนข้อมูลสู่ฐานข้อมูล mysql ด้วยคำสั่ง
    wget http://jaist.dl.sourceforge.net/sourceforge/phpsyslogviewer/speedupd-7.3.2.tar.bz2
  6. ในโฟลเดอร์ install ของ phpsyslogviewer จะมีสคริปที่ใช้ติดตั้งตารางต่าง ๆ ให้กับฐานข้อมูล เราจะต้องทำการสร้างฐานข้อมูลเสียก่อน มิฉะนั้นจะพบกับข้อผิดพลาดและไม่สามารถรันสคริปดังกล่าวผ่านได้ มีขั้นตอนดังนี้
    1. เปลี่ยนไดเร็กทอรี่ไปยังโฟลเดอร์ phpsyslogviwer-7.2.1
    2. เข้าสู่ mysql ด้วยคำสั่ง
      mysql -u root -p แล้วป้อนรหัสผ่านของ root
    3. สร้างฐานข้อมูลชื่อ syslogng ด้วยคำสั่ง
      mysql>create database syslogng;
    4. ออกจาก mysql ด้วยคำสั่ง
      mysql>exit;
    5. สร้างตารางข้อมูลด้วยการใช้ script จากไฟล์ install/phpsyslogviewer.sql ด้วยคำสั่ง
      mysql -u root -p syslogng < install/phpsyslogviewer.sql
  7. ป้อนค่า username และ password เข้าไปในไฟล์ intalll/newuser.sql.php ดังเช่น
    $user = "myuser"; // Your Username
    $pass = "mypassword"; // Your Password
  8. ติดตั้งโปรแกรม php5-cli เพื่อให้รันคำสั่ง php ผ่าน command line ด้วยคำสั่ง
    apt-get install php5-cli
  9. รันภาษา php-command line เพื่อ insert ข้อมูล user และ pass เข้าสู่ตารางข้อมูล user ของฐานข้อมูล syslogng ด้วยคำสั่งดังนี้
    php install/newuser.sql.php
  10. รันภาษา php-command line ด้วยคำสั่งต่อไปนี้
    php install/newuser.sql.php | mysql -u root -p syslogng
  11. จัดการเว็บไดเรคทอรีเพื่อให้สามารถเรียกดูข้อมูลผ่านเวบบราวเซอร์ได้ ด้วยการสำเนาไฟล์ ด้วยคำสั่งดังนี้
    cp -R htdocs /var/www/phpsyslogviewer
  12. แก้ไขไฟล์คอนฟิกคือ /var/www/phpsyslogviewer/config.php เพื่อกำหนดค่าที่สำคัญเกี่ยวกับฐานข้อมูลดังนี้
    $db_user = "root"; // Database Username
    $db_pass = "rootpass"; // Database Password
    $db_host = "localhost"; // Database Hostname
    $db_name = "syslogng"; // Database Name
  13. รันคำสั่งต่อไปนี้
    chown root:www-data /var/www/phpsyslogviewer/config.php
    chmod 440 /var/www/phpsyslogviewer/config.php
  14. เข้าดูเว็บไซต์ของ phpsyslogviewer ได้ที่ http://ipaddress/phpsyslogviewer และจะได้หน้าต่างดังรูป


  15. เมื่อ Login แล้วจะได้หน้าต่างดังนี้


  16. ติดตั้งแพ็คเกจ speedupd-7.3.2 เพื่อเร่งความเร็วให้เอนจิ้นป้อนข้อมูลสู่ฐานข้อมูล mysql ขั้นตอนนี้อาจยุ่งยากนิดหน่อย เพราะต้องทำการคอมไพล์แพ็คเกจด้วยตัวเองใหม่ ขอย้ำว่าต้องทำนะครับขั้นตอนนี้ มิฉะนั้นใครที่เคยใช้ phpsyslog-ng จะรู้ซึ้งว่าอึดอัดเป็นอย่างไร ให้ทำตามคำสั่งต่อไปนี้
    tar xjvf speedupd-7.3.2.tar.bz2
    cd speedupd-7.3.2
    apt-get install debhelper cmake libdaemon-dev libconfuse-dev fakeroot
    dpkg-buildpackage -rfakeroot
    ถ้า่มีปัญหาให้อ่านดู อาจจะต้องติดตั้ง libmysqlclient15-dev เิพิ่มเติมด้วยคำสั่ง
    apt-get install libmysqlclient15-dev
  17. ตอนนี้เราจะได้แพ็คเกจตระกูล debian ชื่อว่า speedupd_7.3.0_i386.deb (สำหรับ 64 bit OS จะชื่อ speedupd_7.3.0_amd64.deb) ให้ติดตั้งแพ็คเกจและกำหนดค่าให้กับไฟล์ speedupd.confดังนี้
    cd ..
    dpkg -i speedupd_7.3.0_i386.deb 
    (สำหรับเครื่องที่เป็น 64 bit ใช้ speedupd_7.3.0_amd64.deb) 
    vi /etc/speedupd.conf
    /etc/init.d/speedupd start
  18. ต่อไปเป็นการกำหนดค่าให้กับ syslog-ng ทำการส่งค่าไปเก็บยังฐานข้อมูลทำตามนี้เลยครับ ง่าย ๆ ผู้เขียนตัดวิธีการเก็บข้อมูลการจราจรคอมพิวเตอร์ส่วนอื่นออก เพื่อให้สามารถทำความเข้าใจได้ง่าย ๆ ครับ หากใครมีไฟล์คอนฟิคเก่าอยู่แล้วก็เพิ่มเติมเฉพาะส่วนที่ต้องการเก็บข้อมูลในฐานข้อมูลได้เลยครับ  โดยให้แก้ไขในไฟล์ /etc/syslog-ng/syslog-ng.conf เป็นดังต่อไปนี้ ซึ่งถ้าส่วนไหนมีอยู่แล้วก็ไม่ต้องนะครับ

    options {
                recv_time_zone (+07:00);
                send_time_zone (+07:00);
                sync (0);
                time_reopen (100);
                log_fifo_size (1000);
                long_hostnames (off);
                use_dns (no);
                use_fqdn (no);
                create_dirs (yes);
                chain_hostnames(yes);
                keep_hostname (yes);
    };

    source s_sys {                                                                       
                       file ("/proc/kmsg" log_prefix("kernel: "));
                       unix-stream ("/dev/log");
                       internal();
                       udp(ip(0.0.0.0) port(514));
                       tcp(ip(0.0.0.0) port(514) keep-alive(yes));
    };

    destination d_mysql {pipe("/var/log/mysql.pipe" template("INSERT INTO logs (host, facility, priority, level, tag, datetime, program, msg) VALUES ( '$HOST', '$FACILITY', '$PRIORITY', '$LEVEL', '$TAG', '$YEAR-$MONTH-$DAY $HOUR:$MIN:$SEC', '$PROGRAM', '$MSG' );\n") template-escape(yes));
    };

    filter f_kernel { facility (kern); };
    filter f_messages { level(info..emerg) and not (facility(mail) or facility(authpriv) or facility(cron)); };

    log {source(s_sys); filter(f_messages); destination(d_mysql); };

    log {source(s_sys); filter(f_kernel); destination(d_mysql); };
  19. สร้างสคริปเพื่อทำไปน์สำหรับส่งค่าสตรีมจากไปน์สู่ฐานข้อมูล งานนี้เป็น bash สคริปครับ ฟังดูวุ่นวายแต่ทำจริงง่ายมากครับ ให้สร้าง script file ด้วยคำสั่งต่อไปนี้
    # vim syslog2mysql.sh
  20. แล้วใส่ข้อมูลต่อไปนี้ลงไปในไฟล์  แล้วบันทึกไฟล์

    #!/bin/bash
    if [ ! -e /var/log/mysql.pipe ]
    then
    mkfifo /var/log/mysql.pipe
    fi
    while [ -e /var/log/mysql.pipe ]
    do
    mysql -u root --password=radius syslogng < /var/log/mysql.pipe >/dev/null
    done

  21. ทำการเปลี่ยนสิทธิไฟล์ แล้วรันคำสั่งต่อไปนี้
    # chmod +x syslog2mysql.sh

    # ./syslog2mysql.sh &

    # /etc/init.d/syslog-ng start
  22. เมื่อเปิดข้อมูลผ่านเว็บดูจะไ้ด้ดังรูป ซึ่งเ็ป็นตัวอย่างที่มี Total Hosts จำนวน 1 Hosts

จบครับ

วันอังคารที่ 7 เมษายน พ.ศ. 2558

How to Shut Down and Reboot Remote PCs via the Command Prompt

Shutdown Command Parameters

PARAMETERFUNCTION
-sShuts down the comptuer.
-rReboots the computer.
-fForce-close all running applications.
-m \\ComputerSpecifies a specific computer on the network that you want to shut down or reboot. Absent this parameter, the command affects only the local PC on which it is run.
-t xxSets a delay (xx seconds) before the specified operation commences.
-c "message"Add your own text inside the quotations to provide remote users with a message about why and when their PC will shut down or reboot.
/aAborts a shutdown or restart if used during the (-t) delay period.
/hHibernates the computer.
/?Displays the full help document with all commands.
There are many more parameters and options for the shutdowncommand, most of which are only useful for those administering large networks. Small businesses and home users will primarily stick with the parameters above.

Shutdown Command Examples

To bring this all together, let’s go over a few examples. First, let’s say that you are connected to your office PC via Remote Desktop and you want to reboot it immediately. You know that no one else is using it and all of your documents and data are saved. While in the Remote Desktop session, launch Command Prompt on your office PC and type the following command:
shutdown -r -f -t 0
That command will reboot the computer (-r), force all applications to close so that one doesn’t get stuck and prevent the reboot from happening (-f), and it will happen immediately with a zero second delay (-t 0). In this case, we’re accessing the Command Prompt via Remote Desktop directly on the office PC, so we don’t need to specify the computer name with the -m parameter because we are, in effect, operating on the local machine, even though we’re not sitting in front of it.
command-prompt-shutdown
อ้างอิง : http://www.tekrevue.com/tip/shut-down-and-reboot-remote-pc/