แสดงบทความที่มีป้ายกำกับ script แสดงบทความทั้งหมด

วันเสาร์ที่ 31 ตุลาคม พ.ศ. 2558

[HOW TO] Script Backup Mysql Log (Shell Script)

[HOW TO] Script Backup Mysql Log (Shell Script)



#!/bin/bash
###################################################
#      ____             _               ____      #
#     / ___|_   _ _   _| |_ ___  _ __  / ___|     #
#    | |  _| | | | | | | __/ _ \| '_ \| |  _      # 
#    | |_| | |_| | |_| | || (_) | | | | |_| |     #
#     \____|\__,_|\__,_|\__\___/|_| |_|\____|     #
#                                                 #
###################################################
#            ScriptMySqlLogBackup.sh              #
###################################################

timestamp=$(date +"%Y%m%d")
MyHost="localhost"
MyUser="root"
MyPass=""
logDir="/var/log/mysql"
moveToDir=""

echo "[INFO] $(date +"%Y%m%d %T") : mysql log backup start";

mv $logDir/mysql.log $logDir/mysql.log.$timestamp
mv $logDir/mysql_error.log $logDir/mysql_error.log.$timestamp
mv $logDir/mysql-slow.log $logDir/mysql-slow.log.$timestamp

if [ -f "$logDir/mysql.log" ]
then
   echo "[WARN] $(date +"%Y%m%d %T") : mysql.log Move Failed";
else
   echo "[INFO] $(date +"%Y%m%d %T") : mysql.log Move Successed";
fi

if [ -f "$logDir/mysql_error.log" ]
then
   echo "[WARN] $(date +"%Y%m%d %T") : mysql_error.log Move Failed";
else
   echo "[INFO] $(date +"%Y%m%d %T") : mysql_error.log Move Successed";
fi

if [ -f "$logDir/mysql-slow.log" ]
then
   echo "[WARN] $(date +"%Y%m%d %T") : mysql-slow.log Move Failed";
else
   echo "[INFO] $(date +"%Y%m%d %T") : mysql-slow.log Move Successed";
fi

if [ -n "$MyPass" ]
then
   /usr/bin/mysqladmin --host=$MyHost --user=$MyUser --password=$MyPass flush-logs
else 
   /usr/bin/mysqladmin --host=$MyHost --user=$MyUser flush-logs
fi

echo "[INFO] $(date +"%Y%m%d %T") : flush-logs Successed";

zip $logDir/mysql.log.$timestamp.zip $logDir/mysql.log.$timestamp
zip $logDir/mysql_error.log.$timestamp.zip $logDir/mysql_error.log.$timestamp
zip $logDir/mysql-slow.log.$timestamp.zip $logDir/mysql-slow.log.$timestamp

if [ -f "$logDir/mysql.log.$timestamp.zip" ]
then
   echo "[INFO] $(date +"%Y%m%d %T") : mysql.log.$timestamp zip Successed";
   rm -rf $logDir/mysql.log.$timestamp
   echo "[INFO] $(date +"%Y%m%d %T") : mysql.log.$timestamp Deleted";
else 
   echo "[WARN] $(date +"%Y%m%d %T") : mysql.log.$timestamp zip Failed";
fi

if [ -f "$logDir/mysql_error.log.$timestamp.zip" ]
then
   echo "[INFO] $(date +"%Y%m%d %T") : mysql_error.log.$timestamp zip Successed";
   rm -rf $logDir/mysql_error.log.$timestamp
   echo "[INFO] $(date +"%Y%m%d %T") : mysql_error.log.$timestamp Deleted";
else 
   echo "[WARN] $(date +"%Y%m%d %T") : mysql_error.log.$timestamp zip Failed";
fi

if [ -f "$logDir/mysql-slow.log.$timestamp.zip" ]
then
   echo "[INFO] $(date +"%Y%m%d %T") : mysql-slow.log.$timestamp zip Successed";
   rm -rf $logDir/mysql-slow.log.$timestamp
   echo "[INFO] $(date +"%Y%m%d %T") : mysql-slow.log.$timestamp Deleted";
else 
   echo "[WARN] $(date +"%Y%m%d %T") : mysql-slow.log.$timestamp zip Failed";
fi


if [ -n "$moveToDir" ]
then
   if [ -f "$logDir/mysql.log.$timestamp.zip" ]
   then
       mv $logDir/mysql.log.$timestamp.zip $moveToDir/mysql.log.$timestamp.zip
       echo "[INFO] $(date +"%Y%m%d %T") : move mysql.log.$timestamp.zip to $moveToDir";
   else 
      echo "[WARN] $(date +"%Y%m%d %T") : mysql.log.$timestamp.zip not found or move Failed";
   fi

   if [ -f "$logDir/mysql_error.log.$timestamp.zip" ]
   then
      mv $logDir/mysql_error.log.$timestamp.zip $moveToDir/mysql_error.log.$timestamp.zip
      echo "[INFO] $(date +"%Y%m%d %T") : move mysql_error.log.$timestamp.zip to $moveToDir";
   else 
      echo "[WARN] $(date +"%Y%m%d %T") : mysql_error.log.$timestamp.zip not found or move Failed";
   fi

   if [ -f "$logDir/mysql_error.log.$timestamp.zip" ]
   then
       mv $logDir/mysql_slow.log.$timestamp.zip $moveToDir/mysql_slow.log.$timestamp.zip
       echo "[INFO] $(date +"%Y%m%d %T") : move mysql_slow.log.$timestamp.zip to $moveToDir";
   else 
      echo "[WARN] $(date +"%Y%m%d %T") : mysql_slow.log.$timestamp.zip not found or move Failed";
   fi
else 
   echo "[WARN] $(date +"%Y%m%d %T") : Move Failed";
fi

echo "[INFO] $(date +"%Y%m%d %T") : mysql log backup finish";
#============================
#edit ScriptMySqlLogBackup.sh
#============================
MyHost="localhost"
MyUser="root"
MyPass=""
logDir="/var/log/mysql"

#============================
#edit crontab
#============================
crontab -e

0 23 * * * /path/to/ScriptMySqlLogBackup/ScriptMySqlLogBackup.sh > /path/to/ScriptMySqlLogBackup/ScriptMySqlLogBackup.log

วันอาทิตย์ที่ 14 มิถุนายน พ.ศ. 2558

[HOW TO] LINE Bot on Raspberry PI with LINE API Python

[HOW TO] LINE Bot on Raspberry PI with LINE API Python   

1. ทำการอัพเดท packet ของ raspbian ก่อน
sudo apt-get install update
sudo apt-get install upgrade
 2. ซึ่ง [LINE API Python] จำเป็นต้องลง packet python 
sudo apt-get install python
sudo apt-get install python-pip
3. ทำการ download [LINE API Python] จาก https://github.com/carpedm20/LINE ในนี้จะมีทั้งวิธีใช้ด้วย
wget https://github.com/carpedm20/LINE/archive/master.zip
unzip master.zip
cd LINE-master/
4. ทำการแก้ไข ไฟล์ api.py ให้สามารถเชื่อมต่อกับ server หลักได้
ทำการเพิ่ม สคริป ภายใต้
def ready(self):
  """
  After login, make `client` and `client_in` instance
  to communicate with LINE server
  """
เอาเครื่องหมาย + ออกด้วย
+        self.transport = THttpClient.THttpClient(self.LINE_HTTP_URL)
 +        self.transport_in = THttpClient.THttpClient(self.LINE_HTTP_IN_URL)
 +        self.transport.setCustomHeaders(self._headers)
 +        self.transport_in.setCustomHeaders(self._headers)
 +        self.protocol = TCompactProtocol.TCompactProtocol(self.transport)
 +        self.protocol_in = TCompactProtocol.TCompactProtocol(self.transport_in)
 +        self._client = CurveThrift.Client(self.protocol)
 +        self._client_in = CurveThrift.Client(self.protocol_in)
 +        self.transport.open()
 +        self.transport_in.open()

5. ทำการรันไฟล์ config.py และ ติดตั้งด้วย setup.py
python config.py
python setup.py install

6. หากไม่มี Error  ใดๆในการติดตั้ง ให้ทดลองการส่งข้อความด้วยไฟล์ echobot.py ใน examples (อย่าลืมเข้าไปแก้ไฟล์ โดยการใส่ ID และ Pass ด้วยนะครับ)
vi echobot.py



เพิ่มเติม script checks status
vi check.py
import subprocess
from line import LineClient, LineGroup, LineContact

try:
    client = LineClient("ID", "PASS")
    #client = LineClient(authToken="TOKEN")
except:
    print "Login Failed"

while True:
    op_list = []

    for op in client.longPoll():
        op_list.append(op)

    for op in op_list:
        sender   = op[0]
        receiver = op[1]
        message  = op[2]

        msg = message.text
        if 'GetRAM' in msg:
                proc=subprocess.Popen('egrep --color "Mem|Cache|Swap" /proc/meminfo', shell=True, stdout=subprocess.PIPE, )
                output=proc.communicate()[0]
                sender.sendMessage("[%s] %s" % (sender.name, output))

        if 'GetDATE' in msg:
                proc=subprocess.Popen('date', shell=True, stdout=subprocess.PIPE, )
                output=proc.communicate()[0]
                sender.sendMessage("[%s] %s" % (sender.name, output))

        if 'GetKERNAL' in msg:
                proc=subprocess.Popen('uname -a', shell=True, stdout=subprocess.PIPE, )
                output=proc.communicate()[0]
                sender.sendMessage("[%s] %s" % (sender.name, output))


ขอบคุณ Api ดีๆจาก https://github.com/carpedm20/LINE
เครดิต : ตาเล็ก วินโด้

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

[HOW TO] Generate word ด้วย Python script

Generate word ด้วย Python script(หัดทำ)
วิธีรัน 
1.เข้า Terminal ด้วยสิทธิ์ Root
2.เมื่อสร้างไฟล์เสร็จให้ทำการเปลี่ยนไฟล์ให้ execute ได้ ด้วย
chmod +x genword.py
3. รันด้วยคำสั่ง 
./genword.py -f <fileName.txt> -n <line Of Number> -w <word Generate>



#!/usr/bin/python
######################################################
#____________________________________________________#
#_______________Mr.Pornmongkon Pongsai_______________#
#________________Computer Engineering________________#
#_____________Generate Word for Project______________#
#____________Create Date : 28 April 2015_____________#
#____________________________________________________#
######################################################
import sys
import getopt

def main(argv):
 fileName = 'default'
 lineNumber = 0
 wordGen = 'default'
 try:
  opts, args = getopt.getopt(argv,"hf:n:w:",["file=","number=","word="])
 except getopt.GetoptError:
  print 'Help : genword.py -f  -n  -w '
  sys.exit(2)
 for opt, arg in opts:
  if opt == '-h':
   print 'Help : genword.py -f  -n  -w '
   sys.exit()
  elif opt in ("-f", "--file"):
   fileName = arg
  elif opt in ("-n", "--number"):
   lineNumber = int(arg)
  elif opt in ("-w", "--word"):
   wordGen = arg  
 print '[log] : generate word start!'
 dataFile = open(fileName, 'w')
 i = 0
 while ( i < lineNumber ):
  dataFile.write(wordGen+'\n')
  i = i + 1
 dataFile.close()
 print '[log] : generate word finish!'
if __name__ == "__main__":
 print '######################################################'
 print '#____________________________________________________#'
 print '#_______________Mr.Pornmongkon Pongsai_______________#'
 print '#________________Computer Engineering________________#'
 print '#_____________Generate Word for Project______________#'
 print '#____________Create Date : 28 April 2015_____________#'
 print '#____________________________________________________#'
 print '######################################################'
 print '!!!-h for help!!!'
 main(sys.argv[1:])

วันพุธที่ 15 เมษายน พ.ศ. 2558

[HOW TO] Check status service linux with Python

เช็คสถานะ service linux ด้วย Python(หัดทำ)
    

     เพื่อเวลาที่ server ทำงานแล้วเกิดบาง service down เราจะได้ไม่ต้องมานั่ง start stop restart พวก service บ่อยๆ 
วิธีรัน 
1.เข้า Terminal ด้วยสิทธิ์ Root
2.เมื่อสร้างไฟล์เสร็จให้ทำการเปลี่ยนไฟล์ให้ execute ได้ ด้วย
chmod +x filename.py
3. รันด้วยคำสั่ง 
./filename.py 

#!/usr/bin/python
import commands
import time
import os
while True:
 #find process
        pc = commands.getoutput('ps -aux | grep nginx | grep -v grep').strip()

        if(len(pc) > 0):
                print 'process running. skip'
        else:
  print 'process not running'
                #stop program
                os.system('sudo service nginx stop')
                #start program
         os.system('sudo service nginx start')
  print 'process started'
 #Check every 1 minute
        time.sleep(1 * 60)