วันพุธที่ 15 มิถุนายน พ.ศ. 2554

command format usb drive บน ubuntu

1. คุณต้องรู้ว่า directory driver เป็นอะไร
2. ใช้คำสั้ง umount ด้วยสิทธิที่ ใกล้เคียง root "sudo umount /dev/xxx" ในที่นี้ ใช้ sda1
3. ใช้คำสั้ง เพื่อทำการ format "sudo mkfs.vfat -n 'tapi' -I /dev/sdb1

วันอาทิตย์ที่ 22 พฤษภาคม พ.ศ. 2554

คำสั่งแปลงไฟล์ ogv เป็น flv

เอามาเก็บไว้ใช้เองกันลืม การใช้คำสั่ง ffmpeg แปลงไฟล์ .ogv ให้เป็น .flv
เนื่องจากหน้าจอของผมเป็น 1024x600 ต้องดัดแปลงและเปลี่ยนพารามิเตอร์หลายตัว
ลองใช้ดูหลายแบบแล้วตัวนี้ให้ผลออกมา "พอรับได้" ที่สุด ภาพก็พอดูได้ เสียงก็ไม่แปร่งเกินไป เสียอย่างเดียวอาการหวัดยังไม่หายเสียที

ffmpeg -i out-1.ogv -s 500x292 -ar 22050 -ab 56 -b 20 -r 12 -f flv -ac 1 -sameq output.flv

* เขียนทั้งหมดไว้บรรทัดเดียวกันนะครับ

อธิบาย
คำสั่งแปลงไฟล์ โดยใช้คำสั่ง ffmpeg
-i out-1.ogv หมายถึง รับชื่อไฟล์ต้นฉบับคือ out-1.ogv
-s 500x292 หมายถึง ปรับขนาดลดลงเหลือ 500x292 พิกเซล
-ar 22050 หมายถึง ปรับ audio rate เหลือ 22050
-ab 20 หมายถึง ปรับ audio bit rate เหลือ 20
-b 20 หมายถึง ปรับ video rate เหลือ 20
-r 12 หมายถึง ปรับ frame rate เหลือ 12 จากมาตรฐานคือ 15
-f flv หมายถึง ให้ใช้ฟอแมตเป็น flv
-ac 1 หมายถึง ปรับระบบเสียงไปใช้ ac1
-sameq หมายถึง ให้คุณภาพอื่น ๆ ยังคงเดิมเหมือนต้นฉบับ
output.flv เป็นไฟล์ที่ได้จากการแปลง

ลองมาหลายแบบ ตัวนี้ได้ขนาดไฟล์พอประมาณ เล็กกว่าต้นฉบับนิดหน่อย ภาพใช้ได้ เสียงพอประมาณครับ...

วันจันทร์ที่ 2 พฤษภาคม พ.ศ. 2554

command line พื้นฐาน mysql

วันนี้เราจะมาเริ่มเรียนการใช้งานคำสั้งพื้นฐานใน mysql กันหน่อยนะครับ
1. เป็นคำสั้ง เข้าใช้งานนะครับ พิม# mysql -u -p (ENTER)
1.1 จะให้ใส่รหัส หลังจากใส่รหัสก็ใช้ได้แล้วครับ
2. เป็นคำสั้งเพิ่ม user # CREATE USER IDENTIFIED BY 'password';
3. เป็นคำสังให้ สร้างฐานข้อมูล # CREATE DATABASE ชื่อฐานข้อมูล ;
4. เป้นคำสั้งกำหนด สิทธิ ให้กับ ฐานข้อมูลนะครับ GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES ON databasename.* TO 'username'@'localhost' IDENTIFIED BY 'password';

shell script backup

First you need to connect your external hard drive and then mount it. Assuming you’ve done so already, here’s the backup script.

#! /bin/bash
echo Backup Started `date` >> ~/backuplog
mkdir /mnt/usbdrive/backups/`date +%Y%m%d`
tar -czf /mnt/usbdrive/backups/`date +%Y%m%d`/data.tar.gz /data
echo Backup Completed `date` >> ~/backuplog

The first line tells the script that is is using the BASH shell, which is located in /bin/bash on the file server. This is the standard location on nearly any UNIX machine.

The second line tells the script to write a line to a log file (located in our users home directory by specifying the tilde ~ ) with the days date. This log file can be referenced to ensure that the backup is completed each day.

The third line will create the folder on our mounted usbdrive, in the backups folder with the days date in the format YYYYMMDD (example: 20060915).

The fourth line actually creates the backup. On our file server we have created the folder /data where we store everything. We have multiple directories within the data folder for clients, internal documentation, resources, etc… and everything in that folder is compressed into an archive file using the tar command. The file is given the name data.tar.gz.

Finally, the fifth line writes a line to the backuplog telling us that the backup was completed and at what time.

NOTE: You must save this file somewhere on your computer, we recommend in the bin folder of your home directory, and you must give it execute permissions. If you want all users to be able to run the script, you need to use the chmod a+x command, if you want to keep it to yourself, then use the chmod u+x command. S, with it being saved in our home folder’s bin directory we type at the shell terminal:

chmod u+x /home/username/bin/backup

To run the script, simply type: backup from the terminal. Because we placed it in our bin directory (which is in our user’s execute path by default) the system looks there to execute the file. The entire process takes between one and two hours, and using a cronjob we have set this up to run automatically at noon everyday.

00 12 * * 1-5 /home/username/bin/backup

This CRON statement tells the operating system to run the backup command, which is located in the bin directory of the user’s home folder, at 12:00 noon, monday to friday. (We TRY to take weekends off so there isn’t a need for backups).

Now we have a simple script in place that will create a compressed archive of all our sensitive information on a daily basis and store it on our external hard drive.


////////////////////////////////////////////////////////////////////////////////////////
Backup script for Linux using tar and find

Every Linux distribution provides a range of utilities that you can use to make backups of your files. Here is the how I get the job done with crontab and a shell script using tar and find
Goal

I wanted to secure all the data-files on my system on a regular basis. Regular for me implies on an automated basis. I've tried doing a manual backup every week or so but that caused too much hassle, so effectively I stopped making backups....
Further, I wanted to have an up-to-date backup of the most essential configuration settings on my system. This would help me in case I accidentally lost some datafiles or setting on my system. In case of losing everything I would need to reinstall my Linux distribution (plus extra installed software) and restore data files and settings. I decided that a full backup of the whole system wouldn't be worth the effort (and resources!).
Choice of hardware

Say "backup" and most Unix people think "tapedrive". However, nowadays harddrives come that cheap that I chose to add an extra harddrive to my AMD 400 machine. This cheap option has the advantage that a harddrive can be mounted automatically, no need for manually inserting tapes. A disadvantage is that the backup resides in the same physical unit as the very data it is supposed to secure. However, since I do have a CD-writer om my local network I still have the option to copy a backup to a CD once in a while.
My main HD is 6Mb. The backup HD has 10Mb.
Script

After adding the drive to my machine I wrote a little shell script (for bash) that basically does the following:

* it mounts my backupdrive
* it checks the date
* every sunday it makes a full backup of some datafiles and some configuration settings, older incremental backups are removed. other days it backups files that have been accessed the last day
* it dumps all the contents of a mysql database to the backup drive and zips the file
* it unmounts the backup drive

This script (I've stored it in /root/scripts) is called every night at 3:01 AM by cron. The crontab file looks like:

1 3 * * * /root/scripts/daily_backup

Add this line using contab -e when root.

Code

Here's the actual code:

#!/bin/bash
#
# creates backups of essential files
#
DATA="/home /root /usr/local/httpd"
CONFIG="/etc /var/lib /var/named"
LIST="/tmp/backlist_$$.txt"
#
mount /mnt/backup
set $(date)
#
if test "$1" = "Sun" ; then
# weekly a full backup of all data and config. settings:
#
tar cfz "/mnt/backup/data/data_full_$6-$2-$3.tgz" $DATA
rm -f /mnt/backup/data/data_diff*
#
tar cfz "/mnt/backup/config/config_full_$6-$2-$3.tgz" $CONFIG
rm -f /mnt/backup/config/config_diff*
else
# incremental backup:
#
find $DATA -depth -type f \( -ctime -1 -o -mtime -1 \) -print > $LIST
tar cfzT "/mnt/backup/data/data_diff_$6-$2-$3.tgz" "$LIST"
rm -f "$LIST"
#
find $CONFIG -depth -type f \( -ctime -1 -o -mtime -1 \) -print > $LIST
tar cfzT "/mnt/backup/config/config_diff_$6-$2-$3.tgz" "$LIST"
rm -f "$LIST"
fi
#
# create sql dump of databases:
mysqldump -u root --password=mypass --opt mydb > "/mnt/backup/database/mydb_$6-$2-$3.sql"
gzip "/mnt/backup/database/mydb_$6-$2-$3.sql"
#
umount /mnt/backup

Discussion

data files:
All my data files are in /root, /home or /usr/local/httpd.

settings:
I chose to backup all the setting in /etc (where most essential settings are stored), /var/named (nameserver settings) and /var/lib (not sure about the importance of this one...). I might need to add more to the list but I still far from being a Unix-guru ;-). All suggestions are welcome!

tar versus cpio
The first version of this script used cpio to create backups iso tar. However, I found the cpio format not very handy for restoring single files so I chang ed it to tar. A disadvantage of using tar is that you can't (as far as I know) simply pipe the output of a find to it.
Using a construct like tar cvfz archive.tgz `find /home -ctime -1 -depth -print` caused errors for files that contained a space " " character. This problem was solved by wring the output of find to a file first (and using tar with the -T option).

Backup และ Restore ฐานข้อมูลผ่าน command

การ Backup และ Restore ฐานข้อมูลผ่าน command lineในการสำรองข้อมูล (Backup) หรือการคืนค่าข้อมูล (Restore) หลายท่านน่าจะเคยทำผ่าน web application เช่น phpMyAdmin มาบ้างแล้ว แต่ด้วยข้อจำกัดของ HTTP นั้นจะมีปัญหาสำหรับฐานข้อมูลที่มีขนาดใหญ่ ดังนั้นการใช้คำสั่งผ่าน command line นั้นจึงมีประสิทธิภาพมากที่สุด

การสำรองข้อมูลใน MySQL นั้นทางผู้พัฒนาเองได้ให้เครื่องมือช่วยมาด้วยชื่อว่า mysqldump สามารถทำการสำรองข้อมูลตามต้องการได้ โดยการใช้งานสั่งได้โดยทำงานผ่าน command line โดยมีรูปแบบ

BASH
mysqldump -u [username] -p[password] [database] > [filename]

ตัวอย่างการใช้งานเช่น

BASH
mysqldump -u root -pMyPass test > backup.sql
เป็นลักษณะการสั่งให้สำรองฐานข้อมูลลงในไฟล์ ในระบบปฎิบัติการ Unix/Linux นั้นเราสามารถใช้คำสั่งบีบอัดร่วมได้เช่น

BASH
mysqldump -u root -pMyPass test | gzip > backup.sql.gz
หรือ

BASH
mysqldump -u root -pMyPass test | bzip2 > backup.sql.bz2

และยังเรายังสามารถสำรองฐานข้อมูลทั้งหมดด้วย
BASH
mysqldump -u root -pMyPass --all-databases | gzip > backup.sql.gz
และยังมีค่าอื่นเพื่อระบุรูปแบบได้ตามต้องการ เช่น
--add-drop-table เพื่อสั่งให้ drop ตารางที่มีอยู่ก่อน
--no-data เพื่อสั่งให้สำรองเฉพาะโครงสร้างของตาราง
--add-locks เพื่อสั่งให้มีการล็อคตารางและคลายล็อคตาราง

ส่วนการคืนค่าข้อมูลก็สามารถทำได้ด้วยการใช้คำสั่ง mysql มีรูปแบบการใช้งาน
BASH
mysql -u [username] -p[password] [database] < backup.sql
ตัวอย่างการใช้งานเช่น
BASH
mysql -u root -pMyPass test < backup.sql
ส่วนถ้าเป็นไฟล์บีบอัดเช่น
BASH
gunzip < backup.sql.gz | mysql -u root -pMyPass test
หรือ
BASH
bzip2 < backup.sql.bz2 | mysql -u root -pMyPass test
หวังว่าจะมีประโยชน์สำหรับทุกท่าน

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

การใช้งาน crontab

หลายๆคนน่าจะมีบ้างที่มีความจำเป็นที่จะต้องตั้งเวลาให้เครื่องของเราทำงาน บางอย่างให้โดยอัตโนมัติ ในเวลาที่เราต้องการ เช่น ทุกๆวันเวลาเที่ยงคืนเราต้องการให้มีการสั่งรัน script เพื่อ backup ข้อมูล ไอ้ครั้นจะมานั่งรอเวลาให้ถึงเที่ยงคืนแล้วก็มานั่งสั่งรัน script ด้วยตัวเองมันก็ออกจะเกินไปหน่อย ถ้าจะให้ดีพอถึงเวลาเที่ยงคืน ระบบมันก็ควรจะ backup ให้เองโดยอัตโนมัติเลยดิฟะ ซึ่งถ้าอยากจะให้เป็นเช่นนั้นก็ไม่ยากเพราะ linux มีเครื่องมือที่จะช่วยแก้ปัญหาในเรื่องนี้มาให้ อยู่แล้วในตัวไม่ต้องลงอะไรเพิ่ม นั่นก็คือ crontab น่ะเองครับ

วิธีการใช้งาน crontab ครับ

step 1: เข้า terminal แล้วก็พิมพ์ crontab -e เพื่อสร้าง crontab ที่จะใช้งาน โดยครั้งแรกที่เรียก crontab ขึ้นมาจะเห็นเป็นไฟล์เปล่าๆ มีแค่ comment บอกรูปแบบการเขียน crontab คร่าวๆดังนี้

# m h dom mon dow command

*** อธิบายเพิ่มเติมครับ ***
---------------------------------------------------------------------------------------
Field มีค่า รายละเอียด
---------------------------------------------------------------------------------------

m(minute) 0-59 เวลาเป็นนาที จะสั่งให้คำสั่งที่กำหนดทำงานทันทีเมื่อถึง

h(hour) 0-23 เวลาเป็นชั่วโมง จะสั่งให้คำสั่งที่กำหนดทำงานทันทีเมื่อถึง

dom(day of month) 1-31 เวลาเป็นวัน จะสั่งให้คำสั่งที่กำหนดทำงานทันทีเมื่อถึง

mon(month) 1-12 เวลาเป็นเดือน จะสั่งให้คำสั่งที่กำหนดทำงานทันทีเมื่อถึง

dow(day of week) 0-6 วันของแต่ละสัปดาห์ มีค่าดังนี้(อาทิตย์=0,จันทร์=1,...,เสาร์=6)

command คำสั่ง เราสามารถกำหนดคำสั่งหรือ script ที่ต้องการรันลงไปได้
---------------------------------------------------------------------------------------

step 2: เขียนคำสั่งลงไป เช่น

# m h dom mon dow command
0 0 * * * /home/rooney/backup.sh

เป็น การสั่งให้รัน backup script เวลา 24.00 น. ของทุกวัน โดยเครื่องหมาย * หมายถึงเอาทั้งหมด อย่างกรณีข้างต้น เครื่องหมาย * ตรง dom หมายถึงทำทุกๆวันของเดือน

หรือ

# m h dom mon dow command
55 6 * * 1,5 rm -rf /tmp/*

เป็นการสั่งให้ remove file ใน folder tmp ทิ้งในเวลา 6.55 น. ของทุกๆวันจันทร์และศุกร์ ในทุกๆเดือน

step 3: หลังจากสร้าง crontab เสร็จก็ save ซะครับ แต่ถ้าอยากจะแก้ไขก็ให้พิมพ์ crontab -e อีกครั้งเพื่อเรียก file ขึ้นมาแก้ หรือถ้าต้องการจะเรียกดูว่าเราได้มีการสร้าง crontab อะไรไปแล้วบ้างให้พิมพ์ crontab -l เพื่อให้ระบบมันลิสต์crontab ทั้งหมดที่ได้สร้างไว้โดย user คนนี้ขึ้นมาให้ดู แต่ถ้าเกิดอยากจะลบ crontab ของ user นี้ทิ้งก็ให้พิมพ์ crontab -r เพื่อ remove ครับ


ถ้ายังไม่ได้ให้ใช้ user root นะครับ น่าจะได้

ข้อมูลจาก :: http://www.ubuntuclub.com/html/index.php?option=com_content&task=view&id=466

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

nmap

nmap คือ อะไร ?

nmap (Network Mapper) เป็นโปรแกรมที่ใช้ในการสแกนตรวจสอบเครื่อง ต่างจากการใช้ IP Address หรือ ใช้ url ก็ได้ เพื่อที่จะหาข้อมูลเกี่ยวกับเครื่องนั้นๆ เช่น ดูว่าเปิด Port ไหนไว้บ้าง หรือดูว่า ใช้ OS แบบไหน มีการเปิด firewall หรือไม่เป็น ต้น

ที่จะ ยกตัวอย่างต่อไปนี้เป็นเพียงบางส่วนของคำสั่งใน nmap นะครับ

nmap -sP 192.168.0.0/24

-เป็น วิธีการสแกน ping ไปที่หมายเลข IP นั้นๆ ซึ่งไม่จำเป็นที่จะต้องเป็นเหมือนตัวอย่างก็ได้

nmap -sF 192.168.0.0/24

-เป็น การสแกนแบบ Stealth FIN มักจะ ใช้ในการเจาะระบบของ Firewall

nmap -sP -PT80 192.168.0/24

-เป็น การสแกนไปว่ามีเครื่องไหนบ้างที่ทำการเปิดพอร์ต 80 (HTTP) ไว้ ในกรณีนี้สามารถทำการเปลี่ยนหมายเลข Port ได้ตามต้องการ

nmap -sP 192.168.0.0/24 -D 10.0.0.1

-เป็น การเพิ่มค่า IP หลอกเข้าไปเสริม หลังคำสั่ง -D ทำให้ Firewall ตรวจจับได้ยาก

nmap -O 192.168.0.0/24

-จะ เป็นการสแกนดูว่าใช้ระบบปฏิบัติการ(OS)แบบไหน

nmap -O -T4 192.168.0.0/24

-เป็น การเพิ่มความเร็วในการสแกนจากคำสั่ง -T ตามด้วยตัวเลข 0-5 ยิ่ง ตัวเลขมากก็จะยิ่งมีความเร็วในการสแกนเพิ่มมากขึ้น

ทั้ง หมดนี้เป็นเพียงบางส่วนที่ยกมาให้เห็นถึงความหมาย,วิธีใช้คำสั่งและประโยชน์ของ nmap เท่านั้น

ซึ่งหวังว่าจะเป็นประโยชน์แก่ท่านผู้สนใจ ไม่มากก็น้อยนะครับ