semicolon's blog

SSH Tunneling

เจอ Clip VDO ตัวอย่างการใช้งาน SSH Tunneling ที่ดูแล้วเข้าใจในทันที

http://www.linuxjournal.com/video/quick-and-dirty-ssh-tunneling

เลยลองใช้งานดูบ้าง พบว่า เออ ง่ายดีจริง ๆ

จากคำสั่ง

ssh -N -L LocalPort:RemoteIP:RemotePort username@Gateway

LocalPort = Port ในเครื่องเราเอง
RemoteIP = IP เครื่องเป้าหมาย
RemotePort = Port ของเครื่องเป้าหมาย
Gateway = SSH server ที่สามารถเชื่อมต่อเครื่องเป้าหมายได้

ลักษณะการเชื่อมต่อจะเป็นแบบนี้
localhost:LocalPort -> Gateway:22 -> RemoteIP:RemotePort

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

วิธีใช้ PyPI (Python Package Index) เพื่อลง Package ของ Python บน CentOS

วันนี้ได้ความรู้เพิ่มเติมเกี่ยวกับ Python อีก 1 อย่าง เนื่องจากต้องลง Library ให้น้องที่ทำงานใช้

จึงได้รู้จักเจ้า PyPI (Python Package Index)

ตอนแรกก็นึกว่าจะต้อง Compile แล้วลงเองซะแล้ว เพราะได้ Package มาเป็น .tar.gz

แต่ลองอ่าน ๆ ดูในเวบ ก็เดาว่าน่าจะมี Package Manager คล้าย ๆ กับ PHP (PECL)

จึงได้รู้จักกับเจ้า pip-python (ใน CentOS ลงด้วย yum install python-pip)

ถ้าต้องการ Install Package ให้ก็ทำได้โดย

pip-python install packagename

ถ้าไม่แน่ใจว่า Package ชื่ออะไรก็สามารถค้นหาได้โดย

pip-python search keyword

Linux : เคยลืมใช้ sudo กันบ้างไหม

ตัวอย่างเช่นผมต้องการย้ายไฟล์ไปที่ ๆ ต้องใช้สิทธิ root เท่านั้น (สิ่งที่ผมพิมพ์เข้าไปที่ Shell คือส่วนที่เป็นตัวหนานะครับ)

karn-mba:~ karn$ mv flasm* /opt/local/bin/
mv: rename flasm to /opt/local/bin/flasm: Permission denied
mv: rename flasm.ini to /opt/local/bin/flasm.ini: Permission denied

ปรากฏว่าลืม sudo ทำให้ติด permission ไม่สามารถย้ายไฟล์ได้

ปรกติผมก็จะกดลูกศรขึ้น เพื่อเรียกคำสั่งเดิมแล้วเติม sudo ไปข้างหน้า

karn-mba:~ karn$ sudo mv flasm* /opt/local/bin/

วิธีการปิด Printing Service ใน Samba

วันนี้ set up Samba บน Server ที่ IDC แล้วรู้สึกตะหงิด ๆ เพราะมี error log ที่เกิดจาก Samba ไม่สามารถ connect กับ CUPS (Print Server) ได้
ก็จะ connect ได้ยังไงหละ ก็​มันไม่ได้เปิดนี่ เพราะไม่มี Printer จะต่อด้วย เลยไม่รู้จะเปิดไปทำไม Web Server นะเฮีย

ผมจึงลองมั่วหาวิธีปิด Printing Service ใน Samba อยู่ซักพักจากการอ่าน Online Manual แต่ไม่สำเร็จ เลยขออำนาจพี่กู(เกิ้ล)
ขอปุ๊บ ได้ปั๊บ สั้น ๆ ง่าย ๆ ได้ใจความจาก Link นี้ครับ http://goo.gl/vnPQ2

ให้ใส่ configuration เหล่านี้ไว้ใน [global] section ครับ

 load printers = no
 printing = bsd
 printcap name = /dev/null

Shell Script : Sort list of files by number in filename

วันนี้นั่งดู access_log ของ web server แล้วอยากจะดูความเปลี่ยนแปลงของขนาดของ log file ตามเวลา
ซึ่งถ้าใช้คำสั่ง ls -l access_log* ตามปรกติ จะได้แบบนี้

-rw-r--r-- 1 root root  19777358 Jul  1 20:56 access_log
-rw-r--r-- 1 root root   1045888 Mar 24 04:04 access_log.100.gz
-rw-r--r-- 1 root root    944277 Jun 22 04:05 access_log.10.gz
-rw-r--r-- 1 root root    965624 Jun 21 04:04 access_log.11.gz
-rw-r--r-- 1 root root    328423 Jun 20 04:04 access_log.12.gz
-rw-r--r-- 1 root root    718064 Jun 19 04:04 access_log.13.gz

หน้าที่ของ   (Non-Breaking SPace)

สถานการณ์ของเรื่องนี้ คือ
ผมทำหน้าเวบที่ต้องการประหยัดพื้นที่ จึงต้องบีบขนาดของ Table ให้เล็กที่สุดเท่าที่จะทำได้

และในช่องหนึ่งผมต้องการใส่ข้อมูล

{syntaxhighlighter brush: plain; gutter: false;}Load (2){/syntaxhighlighter}

แต่เมื่อโดนบีบพื้นที่มาก ๆ ผลลัพธ์จะเป็นดังรูป

ทำให้ความสูงของช่องนั้นเพิ่มขึ้นโดยไม่จำเป็น ผมจึงต้องเปลี่ยน HTML เป็นดังนี้
{syntaxhighlighter brush: plain; gutter: false;}Load (2){/syntaxhighlighter}

ก็จะทำให้ได้ผลลัพธ์ตามต้องการ คือ

อย่าใช้โทรศัพท์...เพลินจนลืมขยับให้เพื่อนร่วมทาง

เหตุเกิดขณะกำลังโดยสารรถไฟฟ้า MRT ไปทำงาน
เมื่อเดินทางมาถึงสถานีศูนย์วัฒนธรรม จังหวะที่ผู้โดยสารกำลังจะขึ้นรถ ผมได้ยินเสียงพนักงาน MRT

"ด้านในยังว่างนะคะ ไม่เล่นโทรศัพท์นะคะ"

ด้วยในขณะนั้นมือถือผมซุกอยู่ในกระเป๋ากางเกง ไม่ได้หยิบขึ้นมาใช้แต่อย่างใด
จึงอุ่นใจได้ว่าไม่ได้เป็นเป้าหมายของคำพูดดังกล่าว

แต่ผมรู้สึกตะหงิด ๆ อยู่เล็กน้อย คิดว่าทาง MRT น่าจะหาคำที่ฟังแล้วรื่นหูกว่านี้
เหมือนที่ผมชอบคำขวัญที่ว่า

"ขยับนิด ชิดใน ไปด้วยกัน"

ฟังไพเราะ และน่าทำตามเป็นอย่างยิ่ง

ผมจึงถือวิสาสะคิดคำขวัญในกรณีนี้ว่า

"อย่าใช้โทรศัพท์...เพลินจนลืมขยับให้เพื่อนร่วมทาง"

Network Card Bonding on CentOS 5.4

สมมติมี network card 2 ใบคือ eth0 และ eth1
และเราต้องการสร้าง Trunk ที่มี IP 172.16.0.21 Netmask 255.255.255.0 Gateway 172.16.0.1

ให้แก้ไข file /etc/sysconfig/network-scripts/ifcfg-eth0 ให้มีข้อมูลดังนี้
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
MASTER=bond0
SLAVE=yes

และทำเช่นเดียวกันกับ ifcfg-eth1
เปลี่ยนแค่
DEVICE=eth1

จากนั้นให้สร้าง file /etc/sysconfig/network-scripts/ifcfg-bond0 โดยมีข้อมูลดังนี้
DEVICE=bond0
IPADDR=172.16.0.21
NETMASK=255.255.255.0
NETWORK=172.16.0.0
BROADCAST=172.16.0.255
GATEWAY=172.16.0.1
ONBOOT=yes
BOOTPROTO=none
USERCTL=no

Linux : Sort out unique values

ผมต้องการดูเวลาถึงหลักนาทีที่ไม่ซ้ำกัน จากผลลัพธ์ของ grep -i "no d-channel" /var/log/asterisk/full

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

[May 18 21:22:50] WARNING[5457] chan_dahdi.c: No D-channels available!  Using Primary channel 16 as D-channel anyway!
[May 18 21:22:54] WARNING[5457] chan_dahdi.c: No D-channels available!  Using Primary channel 16 as D-channel anyway!
[May 18 21:22:58] WARNING[5457] chan_dahdi.c: No D-channels available!  Using Primary channel 16 as D-channel anyway!

Linux : Run background process after logout

หากเราต้องการให้คำสั่งทำงานใน background เราสามารถสั่งด้วยการเติม & ต่อท้ายคำสั่ง เข่น

commanda &

แต่การสั่งแบบนี้ ถ้าเรา logout commanda จะหยุดทำงานทันทีเพราะได้รับ hangup signal

ถ้าเราต้องการให้รันไปเรื่อย ๆ ไม่ต้องหยุดเมื่อ logout เราจะต้องใช้คำสั่ง nohup ช่วย ดังนี้

nohup commanda &

โดยการสั่ง nohup คือการระบุไม่ให้ process รับ signal hangup เฉย ๆ ไม่เกี่ยวกับการทำงาน foreground หรือ background
ดังนั้นถ้าเราต้องการให้ run ใน background และ logout ก็ยังทำงานต่อ
เราจะต้องใส่ทั้ง nohup ด้านหน้า และ & ที่ด้านหลังครับ

Syndicate content