วันเสาร์ที่ 5 กุมภาพันธ์ พ.ศ. 2554

เทคนิคการแสดง ECHO ไม่ขึ้นบรรทัดใหม่ ในลินุกซ์

ปกติการแสดงผลผ่าน Shell ในระบบลินุกซ์ จะขึ้นบรรทัดใหม่ แต่มีบางกรณีที่ไม่ต้องการให้ขึ้นบรรทัดใหม่ เช่น เราต้องการรับค่าจากแป้นคีย์บอร์ดจากผู้ใช้ ดังนั้น ในการเขียน Shell Script เราจะใช้ -n เพื่อไม่แสดงการขึ้นบรรทัดใหม่ ดังนี้

# cd /bin
# echo -n “STRING ” && ls | wc -l
# echo “STRING ” && ls | wc -l

ตัวอย่าง


การทำงาน ครั้งแรก cd ไปยังไดเร็คทอรี่ /bin ท่านสามารถย้ายไดเร็คทอรี่ไปยังตำแหน่งที่ตนต้องการได้
จากนั้น echo โดยใช้ -n และ ไม่ใช้ -n จะเห็นว่าหากไม่ใช้ -n จะมีการขึ้นบรรทัดใหม่

ปล. เทคนิคเล็ก ๆ น้อย ๆ ครับ

เทคนิคการตรวจสอบว่าในระบบของเรามีผู้ใช้งานเป็นใครบ้าง ในลินุกซ์

ในการตรวจสอบว่ามี user อะไรบ้างในคอมพิวเตอร์ของเรานั้น ท่านสามารถตรวจสอบได้จากไฟล์ /etc/passwd

ด้วยคำสั่งต่อไปนี้
# cat /etc/passwd | cut -d: -f1

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

เทคนิคการตรวจสอบ Performance ของ HDD

การตรวจสอบ performance หรือประสิทธิภาพของฮาร์ดดีกส์ สามารถตรวจสอบได้ด้วยโปรแกรม hdparm

ท่านต้องติดตั้งในระบบของท่าน ก่อนใช้งาน

1. ติดตั้งโปรแกรม hdparm ใน Fedora และ CentOS ด้วยคำสั่ง
# yum install hdparm

2. เรียกคำสั่ง
# hdparm -tT /dev/shm หรือ /dev/sda หรือ /dev/hda
-t คือ device read timings
-T คือ cache read timings

เทคนิคการตรวจสอบ Good Last Login ที่เข้ามา

สำหรับวันนี้แนะนำเทคนิคการตรวจสอบว่า คนที่ล็อกเข้าสู่ระบบของเราสำเร็จแล้วมีใครบ้าง เพราะบางครั้ง อาจจะเป็น hacker ที่เข้าระบบเราโดยรู้รหัสผ่านของเราจากการใช้โปรแกรมสุ่มรหัสผ่าน และพยายามล็อกเ้้ข้าสู่ระบบของเราครับ

คำสั่งที่ใช้ตรวจสอบ Good Last Login ที่เข้ามา คือ

#last | more

ตัวอย่าง



ปล.
/var/log/wtmp เก็บคนที่ล็อกอินเข้ามาในระบบเราได้
/var/log/btmp เก็บล็อกที่เข้ามาไม่ได้

เทคนิคการตรวจสอบว่าใครพยายามบุกรุก โดยการล็อกอินเข้าระบบของเรา ในลินุกซ์

วันนี้มีเทคนิคเล็ก ๆ น้อย ๆ คือการตรวจสอบว่ามีใครพยามล็อกอินเข้ามาในเครื่องของเรา

คำสั่งตรวจสอบ bad last login ที่พยายามเข้าระบบคือ
#lastb | more
คำสั่งตรวจสอบ bad last login ที่พยายามเข้าระบบคือ #lastb | more
เมื่อ lastb หมายถึง คนที่พยายามเข้ามาแต่ล้มเหลวครับ

ตัวอย่าง



ปล.ท่านจะเห็นว่า ระบบ ของท่านมีรายละเอียดของ bad last login จำนวนมาก เพราะว่า มีคนจากทุกมุมโลกพยายามจะเจาะระบบเข้ามายังคอมพิวเตอร์ของท่านครับ

เทคนิคการเคลียส์ LAST LOGIN สำหรับลินุกซ์

การเคลียส์ ชื่อล็อกอินที่เข้ามาหลังสุด ปกติเห็นแต่ hacker ใช้กัน เพราะไม่ต้องการให้ทราบว่าใครเข้าใช้คนล่าสุด ซึ่งก็คือตัวเขาเอง สามารถทำได้ด้วยคำสั่งต่อไปนี้

การเคลียส์ LAST LOGIN สำหรับ UNIX

# cat /dev/null > /var/log/wtmp
# wtmp และ btmp คือ Last Logined User และ Bad Login Attemps Login
# cat /dev/null > /var/log/wtmpwtmp และ btmp คือ Last Logined User และ Bad Login Attemps Login

เทคนิคการตรวจสอบใครล็อกเข้าระบบของเราคนล่าสุด ในลินุกซ์

สำหรับวันนี้นำเทคนิคเล็ก ๆ ที่น่ารู้มาฝากครัับ
การตรวจสอบว่าใครล็อกเข้ามาในระบบลินุกซ์ของเราคนล่าสุด ด้วยคำสั่ง

#last

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



การแสดงรายชื่อการล็อกอินจะเพิ่มท้ายไฟล์ไปเรื่อย ๆ ในตัวอย่างนี้ คนที่ล็อกเข้ามาล่าสุดคือ

root pts/0 202.28.33.253 Sat Jan 8 04:19 – 05:22 (01:03)
root pts/0 202.28.33.253 Sat Jan 8 04:19 – 05:22 (01:03)

Root เข้ามาจากเครื่องหมายเลข 202.28.33.253 ในวันเสาร์ เวลา ตีสี่ถึงตีห้ากว่า ๆ ครับ !!

คำสั่งที่เกี่ยวข้อง : last

เทคนิคการเคลียส์ history ในลินุกซ์

ปกติการใช้งาน linux เมื่อ Login เ้ข้าสู่ระบบแล้วจะมีการเก็บคำสั่งที่ใช้งานในอดีตเอาไว้ในไฟล์ .bash_history
หากท่านไม่ต้องการให้ระบบทำการเก็บ History ก่อนออกจากระบบด้วยคำสั่ง Logout ท่านต้องเคลียส์ค่า history ด้วยคำสั่งต่อไปนี้

#history -c

เมื่อ history คือคำสั่งในการตรวจสอบคำสั่งที่เคยเรียกใช้ในอดีต
เมื่อ -c คือ พารามิเตอร์สำหรับการเคลียส์ข้อมูล

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


คำสั่งที่เกี่ยวข้อง : linux command, history , เคลียส์ประวัติคำสั่งลินุกซ์

เทคนิคการบีบอัดและขยายไฟล์ด้วย rar – unrar ในระบบลินุกซ์

เทคนิคนี้เป็นการบีบอัดและขยายไฟล์ด้วย rar และ unrar เนื่องจากสามารถจุจำนวนไฟล์ได้มากกว่า แบบ zip มีใจความสำคัญดังนี้

ก่อนอื่นท่านต้องติดตั้ง rar และ unrar ก่อนครับ

การติดตั้ง
# wget http://rarlab.com/rar/rarlinux-3.7.1.tar.gz
# tar xvzf rarlinux*
# cd rar
# make
# make install

หรือใน fedora และ centos ใช้คำสั่ง
# yum install unrar

ใน FreeBSD ใช้คำสั่ง
# pkg_add -v -r unrar

ใน Debian ใช้คำสั่ง
# apt-get install unrar

การติดตั้งโดยใช้ไบนารีไฟล์จาก rarlab
# cd /tmp
# wget http://www.rarlab.com/rar/rarlinux-3.6.0.tar.gz

จากนั้น
# tar -zxvf rarlinux-3.6.0.tar.gz
# cd rar
# ./unrar
# cp rar unrar /bin

การบีบอัด ใช้คำสั่งดังนี้
#rar -a backup *

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



ในการแตกไฟล์ในไดเร็คทอรี่ปัจจุบันใช้คำสั่ง
# unrar e filename.rar

การแสดงรายชื่อไฟล์ใน rar
# unrar l filename.rar

การแตกไฟล์โดยมีโครงสร้างไดเร็คทอรี่เหมือนกับที่ตอนบีบอัด
# unrar x filename.rar

คำสั่งที่เกี่ยวข้อง : linux unrar, rar, zip, unzip , file compression, การบีบอัดไฟล์ ,ลินุกซ์

เทคนิคการสร้าง Ramdisk ในลินุกซ์ (เอา RAM มาทำ DISK) Linux Ramdisk

เทคนิคนี้เป็นการเอา RAM ซึ่งเป็นหน่วยความจำหลักของระบบคอมพิวเตอร์มาทำเป็น DISK ส่งผลให้การเข้าถึงไฟล์ทำได้เร็วมาก เพราะ RAM ทำงานได้เร็วกว่า harddisk และอุปกรณ์เก็บข้อมูลอื่น ๆ ถ้าเรานำ RAM มาใช้เป็นพื้นที่ให้บริการเนื้อหาภายในเว็บที่เรียกบ่อย ๆ จะเพิ่มความเร็วให้กับเว็บได้มาก บริษัท Google เองเก็บ Index หลัก ๆ เอาไว้ใน RAM เพื่อเพิ่มความเร็วในการเข้าถึงข้อมูล

ขั้นตอนมีดังนี้

1. สร้าง Directory ที่ต้องการทำ Ramdisk
2. Mount ด้วยพารามิเตอร์ tmpfs

เช่น
#mkdir /ram
#mount -v -t tmpfs -o size=128M none /ram -o noatime,nodiratime

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


ไดเร็คทอรี่ /ram จะเป็นการใช้งานหน่วยความจำหลักของคอมพิวเตอร์มาทำเป็นไดเร็คทอรี่ ดังนั้น ไฟล์ต่าง ๆ ใน /ram จึงหายเมื่อ down ระบบ

ปล. noatime และ nodiratime เป็นการกำหนดให้การอ่านเขียนไฟล์ทุกครั้งไม่ต้องเขียนเวลาที่ใช้ในการเข้าถึง เพราะถ้าไม่กำหนดทุกไฟล์ที่ถูกเปิดอ่านจะมีการเขียนว่าไฟล์ดังกล่าวถูกเปิดอ่านเมื่อไรทุกครั้ง

หากท่านนำ Database เก็บไว้ใน RAM จะทำให้การทำงานเร็วมาก จะนำเสนอเทคนิคนี้ในโอกาสต่อไปครับ

คำสั่งเกี่ยวข้อง : linux ramdrive, linux ramdisk, mount ramdisk, mount ramdrive, tmpfs

เทคนิคการแตกไฟล์ zip ภายในลินุกซ์

ในหัวข้อที่ผ่านมาเป็นการบีบอัดไฟล์ zip ในหัวข้อนี้ทำการแตกไฟล์ zip ผ่านคำสั่ง linux

หากท่านยังไม่ติดตั้งคำสั่ง unzip ให้ติดตั้งก่อนใช้งานครับ

ในตัวอย่างนี้เราได้ไฟล์ bk.zip เราสามารถออกคำสั่งดังตัวอย่างต่อไปนี้

#unzip bk.zip

ผลลัพธ์


เพียงเท่านี้ไฟล์ต่าง ๆ จะถูกแตกออกมาจาก zip ท่านสามารถใช้เทคนิคนี้ในการ backup หรือถ่ายโอนข้อมูลขึ้น/ลงเซิร์ฟเวอร์ได้ ค่อนข้างสะดวกครับ

คำสั่งเกี่ยวข้อง : zip, unzip, linux , unix, linux shell, shell command , CLI, command line interface

เทคนิคการบีบอัด zip ไฟล์ในลินุกซ์

ท่านสามารถบับอัดไฟล์จำนวนมาก ไว้ในไฟล์เดียวได้หลายวิธี สำหรับวันนี้นำเสนอวิธีบีบอัดด้วยโปรแกรม zip

ในตัวอย่างนี้ แสดงรายชื่อไฟล์ด้วย ls จะพบว่ามีไดเร็คทอรี่ a,b และ c รวมถึงไฟล์ original_loadvariables.fla, loadVariables.swf และ original_loadvariables.swf

ท่านสามารถเรียกใช้คำสั่ง tree เพื่อดูโครงสร้างของไดเร็คทอรี่ได้ดังตัวอย่าง

สุดท้ายคือคำสั่ง zip ใช้สำหรับบีบอัดไฟล์ โดยใช้ -r สำหรับบีบอัดไดเร็คทอรี่ย่อยด้วย

แสดงรายละเอียดได้ดังนี้


คำสั่งเกี่ยวข้อง : zip, unzip, linux , unix, linux shell, shell command , CLI, command line interface

เทคนิคการเลือกรายการคำสั่งและทำงานผ่าน bashrc ในระบบลินุกซ์

เทคนิคนี้เป็นการเปลี่ยนไดเร็คทอรี่ไปยัง รายการที่แสดง

ตัวอย่างเช่น
สมมติว่าเรามี domain จำนวนมาก และเราต้องการเข้าถึงไดเร็คทอรี่ของแต่ละ โดเมน โดยไม่ต้องมาออกคำสั่ง cd /home/{domain}/public_html ให้เหนื่อย เราสามารถเขียนสคริปต์เก็บเอาไว้ในไฟล์ .bashrc ได้ ในตัวอย่างนี้เพียงเราพิมพ์คำสั่ง g (ได้รับการย่อให้สั้นที่สุด มาจากคำว่า go แปลว่า ให้ไปไดเร็คทอรี่ต่อไปนี้)
จากนั้นจะแสดงรายชื่อโดเมน และหมายเลขกำกับเอาไว้ เราเพียงพิมพ์หมายเลขด้านหน้าโดเมนเท่านั้น ระบบ Shell ของลินุกซ์จะนำเราไปยังไดเร็คทอรี่ของโดเมนให้อัตโนมัติ


โดยที่เขียนสคริปต์เพิ่มในไฟล์ .bashrc ดังนี้


หลังจากเีขียนไฟล์เสร็จเรียบร้อยแล้ว ให้ Logout ออกจากระบบก่อน แล้วจึง Login เข้าระบบอีกครั้ง หากสคริปต์ทำงานถูกต้อง ท่านสามารถพิมพ์ คำสั่ง g และระบุหมายเลขโดเมน จะเพียงเท่านี้ระบบปฏิบัติการจะย้ายท่านไปยังไดเร็คทอรี่ที่ท่านต้องการ โดยไม่ต้องพิมพ์คำสั่งให้เมื่อยมือครับ

ปล. เทคนิคนี้สำหรับคนไม่ชอบพิมพ์คำสั่งลินุกซ์ซ้ำ ๆ และยาว  ๆ ครับ

คำสั่งเกี่ยวข้อง : bashrc, bash, programming , linux , unix shell, shell script

เทคนิคการนับจำนวนคนที่กำลังออนไลน์ภายในเว็บไซต์ จากการนับ Session ด้วย php

เทคนิคนี้เป็นการตรวจสอบจำนวนคนที่กำลังออนไลน์อยู่ในเว็บของเรา เป็นวิธีที่ง่าย หลักการคือ นับจำนวน ไฟล์ที่อยู่ในโฟลเดอร์ /tmp ของระบบปฏิบัติการ (เฉพาะลินุกซ์เท่านั้น วินโดวส์ไม่เกี่ยว)

เขียนสคริปต์ดังนี้ และเก็บไว้บนเซิรฟเวอร์ บันทึกไฟล์ชื่อ /{www_root}/temp/online.php

<?php
$filename = glob(“/tmp/sess*”);
echo “จำนวนคนออนไลน์ “, count($filename);
?>


อธิบายโค๊ด


<?php คำสั่งเปิดสคริปต์ php
$filename คือชื่อตัวแปรสำหรับเก็บรายชื่อไฟล์
glob() เป็นคำสั่งในการอ่านไฟล์ ตัวอย่างนี้อ่านไฟล์ /tmp/sess* ชื่อไฟล์ขึ้นต้นด้วย sess หมายถึงจำนวน session ที่กำลังเปิดขณะนั้น
echo คือ คำสั่งแสดงข้อความบนจอภาพ
?> คำสั่งปิดสคริปต์ php




ผลลัพธ์



คำสั่งเกี่ยวข้อง : glob , php , session , web programming

เทคนิคการใช้ netstat นับจำนวน connection ของแต่ละ IP ที่เชื่อมต่อกับเซิร์ฟเวอร์

เทคนิคการใช้ netstat นับจำนวน connection ของแต่ละ IP ที่เชื่อมต่อกับเซิร์ฟเวอร์

เทคนิคนี้เป็นการนับจำนวน connection ที่เกิดขึ้นของแต่ละ IP ที่กำลังเชื่อมต่อกับเครื่องเซิร์ฟเวอร์ โดยปกติไม่ควรเกิน 10-20 ครั้งต่อ 1 IP ถ้าเกินแสดงว่าเซิร์ฟเวอร์ของเราอาจกำลังถูกคนอื่นเขามาโจมตี หรืออาจมีการดูดหน้าเว็บของเราไปเป็นจำนวนมาก เราอาจจะบล็อก IP นั้นไปได้

#netstat -ntu | grep ESTABLISHED | awk ‘{print $5}’ | cut -d: -f1 | sort | uniq -c | sort -nr

ผลลัพธ์

คำสั่งเกี่ยวข้อง : netstat -u,netstat -ban,netstat -tulpn,netstat -g,netstat -ao,netstat -k,netstat -d,netstat -f,netstat -m,netstat -vb,netstat -t,netstat -na,netstat -ano,netstat -s,netstat -i,netstat -b,netstat -r,netstat -in,netstat -a -o,netstat -a -b,netstat -a -n,netstat -n -a,netstat -a -n -o,netstat commands,netstat command,command netstat,netstat -a command,netstat linux,linux netstat,netstat in linux,netstat on linux,netstat for linux,linux netstat -a,window netstat,win netstat,netstat ports,netstat windows,windows netstat,netstat for windows,netstat in windows,netstat -a windows,x-netstat,netstat x,netstat port,port netstat,netstat connections,ip netstat,netstat ip,x-netstat professional

เทคนิคการนับจำนวนไฟล์ใน linux ด้วยคำสั่ง ls และ wc

เทคนิคการนับจำนวนไฟล์ใน linux ด้วยคำสั่ง ls และ wc

#ls -al | wc

ตัวอย่างผลลัพธ์

คำสั่ง ls เป็นการแสดงรายชื่อไฟล์
-al เป็นการแสดงทุกไฟล์
| เรียกว่า pipe เป็นการส่งผลลัพธ์ออกมา
wc เป็นคำสั่ง word count
-l คือ นับ line (บรรทัด)

คำสั่งเกี่ยวข้อง : linux ls -ld,linux ls -ltr,linux ls -a,linux ls commands,linux ls command,linux ls -l command,linux ls by date,linux ls date,linux ls directories,linux ls size,linux ls sort,linux ls colors,linux ls options,linux ls directory,linux ls color,linux ls man,linux ls sort by date,linux ls output,linux ls full path,linux ls hidden,linux ls path,linux ls directories only,linux ls only directories,linux ls recursive,linux ls file size,linux ls permissions,linux ls command options,linux ls page by page,linux ls page,linux ls sort by size,linux ls sort size,linux ls format,linux ls count,linux ls examples,linux ls source,linux ls tree,linux ls order by date,linux ls wildcard,linux ls files only,linux ls source code,linux ls more,linux ls count files,linux ls help,linux ls subdirectories,linux ls filter,linux ls pause,linux ls command output,linux ls number of files,linux ls command

เทคนิคการตรวจสอบจำนวนการเชื่อมต่อกับเซอร์เวอร์ของเราในขณะนั้น ๆ บน Linux

คำสั่ง netstat เป็นการตรวจสอบการเชื่อมต่อกับเซอร์เวอร์ของเราในขณะนั้น ๆ ว่ามีจำนวนเท่าไร มาจากไอพีอะไร

ตัวอย่างการใช้งาน
#netstat -ntu | grep SYN_RECV | awk ‘{print $5}’ | cut -d: -f1 | sort | uniq -c | sort -nr

ผลลัพธ์
netstat

คำสำคัญ : netstat command,netstat windows,netstat linux,linux netstat,netstat port,netstat close_wait,man netstat,netstat live,windows netstat,netstat command in windows,netstat download,x-netstat,cmd netstat,netstat commands,netstat listening ports,netstat unix,netstat ip,netstat pid,unix netstat,analogx netstat live,netstat syn_sent,netstat agent,close_wait netstat,netstat udp,syn_sent netstat,netstat tutorial,netstat listening,ip netstat,netstat gui,netstat process,using netstat,netstat x,netstat ubuntu,netstat windows 7,dos netstat,netstat help,netstat ports,command netstat,netstat command in unix,aix netstat,download netstat,netstat port 80,x-netstat professional 5.5,netstat output,netstat man,netstat process id,netstat foreign address,netstat flags,netstat find