วันอังคารที่ 17 มีนาคม พ.ศ. 2558

วิธีการเขียน php ให้เพิ่ม user ใน ubuntu

ไฟล์ php
<?php
$user = $_GET['user'];
echo exec('sudo useradd -m -b /home -s /bin/bash $user');
?>

แก้ไขไฟล์  /etc/sudoers
#nano /etc/sudoers
โดยเพิ่ม
www-data ALL=(root) NOPASSWD: /usr/sbin/useradd

ทดสอบสอบรันไฟล์ php

วันอังคารที่ 3 มีนาคม พ.ศ. 2558

เขียน scrip python เพื่อสำรองฐานข้อมูล mysqldump

# nano autobk.py

#! Python Auto Backup database
import subprocess

cmd = 'mysqldump -uroot -pPassword  --all-database --lock-all-table | bzip2 -c > /backup/db-backup_$(date +%Y%m%d_%H%M%S).sql.bz2'
pid = subprocess.call(cmd, shell=True)

exit()

หากเป็นเซอร์เวอร์อื่น

#! Python Auto Backup database
import subprocess

cmd = 'mysqldump -p3306 -h 127.0.0.1 -uroot -pPassword  --all-database --lock-all-table | bzip2 -c > /backup/db-backup_$(date +%Y%m%d_%H%M%S).sql.bz2'
pid = subprocess.call(cmd, shell=True)

exit()

อ้างอิง http://apro45.blogspot.com/2014/05/crontab-mysqldump.html

FTP ด้วย bash shell script

สร้าง bash shell script ให้ดึงไฟล์ .sql.bz2 ใน /home/backup_db ไปไว้ที่ FTP โฟลเดอร์ file_db
  - [host] = hostname หรือ ip server
  - [user] = ftp username
  - [pass] = ftp password

ตัวอย่างไฟล์

#!/bin/sh

cd /home/backup_db

ftp -n [host] << EOF
prompt
user [user] [pass]
cd file_db
binary
mput *.sql.bz2
bye
EOF

exit 0


แก้ปัญหา mysqldump กับ crontab

วิธีการแก้ปัญหา เมื่อสั่ง Crontab สำรองข้อมูล MySQL แล้วไม่ทำงานให้ หรือทำงานแปปเดียว

- ต้องใส่ตัวเรียกเต็มๆของโปรแกรม เช่น /usr/local/bin/mysqldump , /usr/bin/bzip2

ตัวอย่างไฟล์สำรองข้อมูล MySQL

#!/bin/sh

today=$(date '+%d')

/usr/local/bin/mysqldump -uUSER -pPASS --all-database --lock-all-table| /usr/bin/bzip2 -c > /home/backup_db/db-date"$today".sql.bz2