เจอ 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
ตัวอย่างการใช้งาน
วันนี้ได้ความรู้เพิ่มเติมเกี่ยวกับ 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
ตัวอย่างเช่นผมต้องการย้ายไฟล์ไปที่ ๆ ต้องใช้สิทธิ 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/
วันนี้ 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
วันนี้นั่งดู 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
สถานการณ์ของเรื่องนี้ คือ
ผมทำหน้าเวบที่ต้องการประหยัดพื้นที่ จึงต้องบีบขนาดของ Table ให้เล็กที่สุดเท่าที่จะทำได้
และในช่องหนึ่งผมต้องการใส่ข้อมูล
{syntaxhighlighter brush: plain; gutter: false;}Load (2){/syntaxhighlighter}
แต่เมื่อโดนบีบพื้นที่มาก ๆ ผลลัพธ์จะเป็นดังรูป

ทำให้ความสูงของช่องนั้นเพิ่มขึ้นโดยไม่จำเป็น ผมจึงต้องเปลี่ยน HTML เป็นดังนี้
{syntaxhighlighter brush: plain; gutter: false;}Load (2){/syntaxhighlighter}
ก็จะทำให้ได้ผลลัพธ์ตามต้องการ คือ
เหตุเกิดขณะกำลังโดยสารรถไฟฟ้า MRT ไปทำงาน
เมื่อเดินทางมาถึงสถานีศูนย์วัฒนธรรม จังหวะที่ผู้โดยสารกำลังจะขึ้นรถ ผมได้ยินเสียงพนักงาน MRT
"ด้านในยังว่างนะคะ ไม่เล่นโทรศัพท์นะคะ"
ด้วยในขณะนั้นมือถือผมซุกอยู่ในกระเป๋ากางเกง ไม่ได้หยิบขึ้นมาใช้แต่อย่างใด
จึงอุ่นใจได้ว่าไม่ได้เป็นเป้าหมายของคำพูดดังกล่าว
แต่ผมรู้สึกตะหงิด ๆ อยู่เล็กน้อย คิดว่าทาง MRT น่าจะหาคำที่ฟังแล้วรื่นหูกว่านี้
เหมือนที่ผมชอบคำขวัญที่ว่า
"ขยับนิด ชิดใน ไปด้วยกัน"
ฟังไพเราะ และน่าทำตามเป็นอย่างยิ่ง
ผมจึงถือวิสาสะคิดคำขวัญในกรณีนี้ว่า
"อย่าใช้โทรศัพท์...เพลินจนลืมขยับให้เพื่อนร่วมทาง"
สมมติมี 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
ผมต้องการดูเวลาถึงหลักนาทีที่ไม่ซ้ำกัน จากผลลัพธ์ของ 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!
หากเราต้องการให้คำสั่งทำงานใน background เราสามารถสั่งด้วยการเติม & ต่อท้ายคำสั่ง เข่น
commanda &
แต่การสั่งแบบนี้ ถ้าเรา logout commanda จะหยุดทำงานทันทีเพราะได้รับ hangup signal
ถ้าเราต้องการให้รันไปเรื่อย ๆ ไม่ต้องหยุดเมื่อ logout เราจะต้องใช้คำสั่ง nohup ช่วย ดังนี้
nohup commanda &
โดยการสั่ง nohup คือการระบุไม่ให้ process รับ signal hangup เฉย ๆ ไม่เกี่ยวกับการทำงาน foreground หรือ background
ดังนั้นถ้าเราต้องการให้ run ใน background และ logout ก็ยังทำงานต่อ
เราจะต้องใส่ทั้ง nohup ด้านหน้า และ & ที่ด้านหลังครับ