Monday, March 9, 2020

[Short Tip] Generate password

บันทึกกันลืมสั้น ๆ

เนื่องด้วยต้องการ generate password bacula-fd configuration อีกครั้ง แต่พบว่าไม่มีคำสั่ง สำหรับ bacula-fd แต่เราสามารถใช้ openssl generate แล้วเอามาใส่ได้

openssl rand -base64 33

ก็จะได้ password ขนาด 33 ตัวอักษร ก๊อปปี้ไปใส่ได้เลย

ที่มา จากที่นี่

Read More

Monday, June 6, 2016

install xenserver traceback most recent call last /opt/xensource/install/init line 249 elements

Today I try to install Xenserver from USB key that I make from Unetbootin. Everything fine until try to install, I found error like this.

Traceback (most recent call last): File "/opt/xensource/installer/init", line 249, in ?een elements | | Help screen
reboot = main(util.splitArgs(sys.argv[1:], ('-console', '-map_netdev')))
File "/opt/xensource/instalar/init", line 229, in main
rc = install.go(ui,args,answerfile_address, answerfile_script)
File "/opt/xensource/installer/install.py", line 121, in go
serial_console = hardwre.getSerialConfig()
File "/opt/xensource/installer/hardware.py", line 128, in PhysHost_getSerialConfig
assert rc === 0
AssertionError


Image com from This link I found the solution from this link, that I need to config a bit after make usb key After make USB installer key open the terminal and go to USB key
cd /Volumes/XEN
my USB mount is XEN, then use the command like this
mv boot/isolinux/isolinux.cfg boot/isolinux/syslinux.cfg
mv boot/isolinux boot/syslinux
mv syslinux.cfg syslinux.cfg.bak
That's it and now I can install Xenserver :)

Read More

Thursday, August 20, 2015

fstab mount nfs boot press S to skip mounting

Many time when booting machine that setting fstab to boot nfs file server and found this error look like this:
The disk drive for /nfspath is not ready yet or not present
Continue to wait; or Press S to skip mounting or M for manual recovery
and found this error in syslog like this:
mountall: mount /nfspath [617] terminated with status 32
mount.nfs: Failed to resolve server nfsserver: Temporary failure in name resolution
Ater search a bit we can avoid to wait when boot by edit fstab and put "nobootwait" option after line
Before:
nfsserver:/nfsserverpath    /nfspath    nfs    bg,vers=3,tcp,hard,intr
After:
nfsserver:/nfsserverpath    /nfspath    nfs    bg,vers=3,tcp,hard,intr,nobootwait

ref:findincity

Read More

Monday, June 8, 2015

How to fix perl: warning: Setting locale failed on Mac OS X

On Mac os x after using ssh on terminal to linux box you'll see
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
  LANGUAGE = "en_US:en",
  LC_ALL = (unset),
  LC_CTYPE = "UTF-8",
  LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
Create file on your home with name ".bash_profile" and add this line
export LC_CTYPE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
After added if you don't want to restart or re-login you can use this command to reload bash config
source ~/.bash_profile

Read More

Tuesday, November 11, 2014

How to create group with specific group id

Today is small tip for create group
Assume I need to create group "mai-ru" and I don't want group id auto but I want group id "9999"
The command is should be
sudo groupadd -g 9999 mai-ru
* be careful group id Values between 0 and 999 are typically reserved for system accounts.
So you should use group id more than 999 and make sure that the value is not already exist.

Read More

Friday, July 18, 2014

check or remove multiple backup files filter by number

Assume on the backup directory has files like this
backup-2011-01-01-data.tar.gz
backup-2011-02-01-data.tar.gz
backup-2011-03-01-data.tar.gz
. . .
backup-2012-01-01-data.tar.gz
backup-2012-02-01-data.tar.gz
backup-2012-03-01-data.tar.gz
. . .
backup-2013-01-01-data.tar.gz
backup-2013-02-01-data.tar.gz
backup-2013-03-01-data.tar.gz
. . .

If I want to check or remove all files from year 2011 to 2012 by command line, how to do that. Do one by one? just 24 times. but if more?

You can check on file by command line by :

$du -ch backup-2012-01-01-data.tar.gz
3.4M backup-2012-01-01-data.tar.gz
3.4M total

For more files and filter by number can use this command

$du -ch backup-{2011,2012}*
3.4M backup-2011-01-01-data.tar.gz
3.4M backup-2011-02-01-data.tar.gz
3.4M backup-2011-03-01-data.tar.gz
. . .
3.4M backup-2012-12-01-data.tar.gz
81.6M total

And you can remove files

rm backup-{2011,2012}*

Read More

Sunday, July 21, 2013

squid proxy error NONE/417

เริ่มต้นจากอยากจะเข้า e-fin กะเค้าบ้าง แต่พอเข้าโปรแกรมทีไร ก็จะให้ใส่ proxy เหมือนดังรูปข้างบนตลอด ซึ่งเจ้า squid proxy เราก็ติดตั้งเอง เรื่อง authentication ก็ไม่มี ลองเทสหลายหนก็เข้าใช้งานไม่ได้
ลองหาข้อมูลในอากู๋ ที่หลาย ๆ คนใช้งาน ก็เจอหลายที่ที่มีคนถามว่าเข้าไม่ได้ แต่ส่วนใหญ่จะตอบให้ติดต่อ "ผู้ดูแลระบบ" เพื่อขอรหัสผ่านในการใช้งาน อ้าวก็เราเนี่ยแหละดูแลระบบ และเราก็ไม่ได้มีรหัสให้ต้องใช้งาน แล้วจะทำยังไงดี ...

หลังจากเกิดปัญหาดังกล่าวก็ปล่อยปัญหาไปสักพัก ใจก็ยังอยากจะเข้าให้ได้ ตอนนี้ความอยากเข้าใช้งานยังเท่าเดิม แต่ความอยากรู้ว่าทำไมเข้าโปรแกรมไม่ได้กลับมากกว่า แล้วก็นึกขึ้นได้ว่าทำไมเราไม่ลองดูใน log ของ squid ดูล่ะว่าเกิดอะไรขึ้น เมื่อนึกขึ้นได้ก็จัดการ remote เข้าไปดู แล้วเราก็เจอแบบนี้

NONE/417

ไม่ได้ก๊อปมาทั้งหมด เอามาแค่ส่วนสำคัญ ก็เลยกลับไปลองถาม google อีกครั้งนึง ก็ได้คำตอบจากเว็บนี้ ว่าต้องเพิ่มคำสั่งใน config file แบบนี้
ignore_expect_100 on
เลยจัดการเพิ่มเข้าไป แล้วจัดการให้ squid เรียก config file ที่เราแก้ไขมาใช้
bingo !!! เข้าใช้งานได้แล้ว

Read More

Thursday, June 14, 2012

How to check public ip by command line


ปกติเวลาต้องการดูไอพีจริง (public ip) จากเครื่อง desktop เราก็สามารถเปิดเว็บบราวเซอร์ที่ถนัด ( IE , Firefox , Chrome , Opera , Safari etc. ) ขึ้นมาแล้วเข้าไปที่เว็บที่บอกไอพีจริงได้ เช่น http://myipaddress.com/show-my-ip-address/ ก็จะพบข้อความ

Your computer's IP address is:* xxx.xxx.xxx.xxx

โดยที่ xxx.xxx.xxx.xxx เป็นไอพีจริงครับ
อ้าวแล้วถ้าเราใช้ command line อยู่จะทำยังไงละ จริง ๆ ก็ใช้หลักการเดียวกับการใช้งานบน desktop ครับเพียงแต่ข้อความที่แสดงเป็น code มองจนตาลายครับ และยิ่งกว่านั้นสำหรับเว็บ myipaddress นั้นในบางครั้งจะมีให้ใส่ Captcha ดังนั้นจึงเป็นการลำบากที่จะใช้เว็บนี้
พอดีไปเจอเว็บ itswapshop มีวิธีสั้น ๆ ในการใช้ command line โดยใช้เว็บ ifconfig.me เมื่อเข้าผ่านเว็บบราวเซอร์ก็จะพบข้อความไอพีสั้น ๆ เลย และสำหรับ command line โดยใช้คำสั่งดังนี้
curl ifconfig.me
curl สำหรับ ubuntu or debian สามารถลงด้วยคำสั่ง
sudo apt-get install curl
หากไม่ต้องการลงโปรแกรมเพิ่ม และลินุกซ์มีโปรแกรม wget อยู่แล้วสามารถใช้คำสั่ง
wget -qO- ifconfig.me/ip

ที่มา : itswapshop

Read More

Thursday, April 12, 2012

How to remove old kernel

เมื่อมีการแบ่ง /boot ออกมาอีกพาทิชั่นหนึ่ง พอใช้งานไปนาน ๆ ก็จะมีการอัพเดต kernel ใหม่หลายเวอร์ชั่นจนบางครั้งทำให้ /boot เต็มไม่สามารถอัพเดต kernel ใหม่ ๆ ได้จึงต้องเอา kernel เก่า ๆ ออกไปโดยก่อนที่จะ remove old kernel นั้นจะต้องตรวจสอบก่อนว่า kernel ที่ใช้ปัจจุบันเวอร์ชั่นอะไร
uname -a
จะได้ผลลัพธ์ประมาณนี้
Linux unix-tip 2.6.38-14-generic #58-Ubuntu SMP Mon Mar 5 18:29:54 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
ซึ่งจะพบว่า kernel version คือ 2.6.38-14-generic #58
ต่อไปเป็นคำสั่งในการตรวจสอบว่าในเครื่องมี kernel version อะไรอยู่บ้าง
dpkg -l | grep linux-image
จะได้ออกมาประมาณนี้
ii  linux-image-2.6.38-11-generic         2.6.38-11.50                               Linux kernel image for version 2.6.38 on x86/x86_64
ii  linux-image-2.6.38-12-generic         2.6.38-12.51                               Linux kernel image for version 2.6.38 on x86/x86_64
ii  linux-image-2.6.38-13-generic         2.6.38-13.57                               Linux kernel image for version 2.6.38 on x86/x86_64
ii  linux-image-2.6.38-14-generic         2.6.38-14.58                               Linux kernel image for version 2.6.38 on x86/x86_64
ii  linux-image-generic                   2.6.38.14.29                               Generic Linux kernel image
Now can remove kernel version 2.6.38-11 , 2.6.38-12 , and 2.6.38-13 by command line
sudo apt-get --purge remove linux-image-2.6.38-11-generic linux-image-2.6.38-12-generic linux-image-2.6.38-13-generic

หลังจากนั้นอาจจะใช้คำสั่งนี้ เพื่อลบ header file or unused application
sudo apt-get autoremove

Read More

Friday, April 6, 2012

How to install google chrome on ubuntu by repository


สำหรับ google chrome นั้นถ้าหากจะลงจำเป็นต้องไปโหลดไฟล์ .deb แล้วเอามาลงเอง ซึ่งมันยุ่งยากจนผมไม่เคยไปสนใจเลย ซึ่งปกติผมจะใช้ Chromium แทนมันลงง่ายดีจนกระทั่งวันนี้ได้อ่านบทความจาก ubuntuclub จึงรู้ว่าตอนนี้มี repository ของ google สำหรับลง google chrome ได้แล้วจึงลองสักหน่อย

วิธีการเริ่มด้วยเพิ่ม repository เข้าไป ใช้คำสั่งสองคำสั่งนี้ได้เลย
sudo sh -c 'echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' 
wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
หลังจากเพิ่ม repository เข้าไปเรียบร้อยแล้วก็ทำการ อัพเดตและลงโปรแกรมครับ
sudo apt-get update
sudo apt-get install google-chrome-stable
เพียงเท่านี้ก็สามารถใช้ google chrome ได้แล้วครับ

Read More

Thursday, April 5, 2012

Tip encode decode data by commandline


ทิปสั้น ๆ สำหรับการ เข้ารหัส (encode) และถอดรหัส (decode) โดยใช้ command line โดยสามารถนำไปใช้กับการทำให้ url สั้นลง (Shorturl) หรือใช้ในการตั้งรหัสผ่านต่าง ๆ ได้
คำสั่งที่ใช้ในการเข้ารหัส (encode)

echo test | base64
dGVzdAo=
จากตัวอย่างคำที่นำมาเข้ารหัสคือ test และเมื่อเข้ารหัสแล้วจะได้คำว่า dGVzdAo=
ในทางกลับกันเมื่อต้องการถอดรหัส (encode) ออกมาจะใช้คำสั่ง
echo dGVzdAo= | base64 -d
test
จากตัวอย่างทดลองนำคำ dGVzdAo= มาถอดรหัสออกมาจะได้คำว่า test กลับคืนมา
นอกเหนือจาก base64 ยังมีการเข้ารหัส และถอดรหัสอีกมากมาย ขอยกตัวอย่างอีก 1 แบบ ซึ่งเป็นการเข้ารหัสแบบ 1:1 ที่เรียกว่า rot13 เป็นการเลื่อนตัวอักษรออกไปจาก A เป็น N , B เป็น O ไปเรื่อย ๆ
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm
สำหรับในการเข้ารหัสจะใช้คำสั่ง
echo test | tr 'A-Za-z' 'N-ZA-Mn-za-m'
grfg
จากตัวอย่างเป็นการเข้ารหัสคำว่า test ซึ่งจะได้ผลลัพธ์ออกมา grfg เป็นต้น

Read More

Friday, December 23, 2011

how to backup - restore mysql


เมื่อไม่กี่วันที่ผ่านมี ก็มีข่าวเกี่ยวกับ การย้ายฐานข้อมูลที่ผิดพลาด (ยังระบุไม่ชัดเจน) ของบริษัทที่ให้บริการเกี่ยวกับโทรศัพท์มือถือค่ายหนึ่ง จึงทำให้คนที่ใช้ค่ายนั้น ไม่สามารถโทร หรือใช้ข้อมูล data ได้เลย ดังนั้น จะพบว่าระบบฐานข้อมูลนั้นจึงเป็นส่วนที่สำคัญ ในการพลักดันให้ระบบทำงานไปตามปกติ จึงต้องมีการวางแผนในการทำสำรอง (backup) ระบบฐานข้อมูลอยู่เสมอ และก่อนที่จะกระทำอะไรกับฐานข้อมูลก็ควรทำการ สำรองข้อมูลด้วย
การสำรองฐานข้อมูลที่จะกล่าวในบทความนี้เป็นการสำรองฐานข้อมูลของ MySQL ซึ่งเป็น DBMS ตัวหนึ่งที่นิยมใช้กัน นอกเหนือจากสามารถใช้งานได้ฟรีแล้ว ก็ยังสามารถทำงานได้อย่างมีประสิทธิภาพด้วย เกริ่นมาพอควรแล้วเข้าเรื่องการสำรองฐานข้อมูลกันเลยดีกว่า

  1. mysqldump เป็น script ที่มีประสิทธิภาพมาก ไม่ต้องไปหาจากที่ไหนมาพร้อมกับการติดตั้ง mysql อยู่แล้ววิธีใช้
    backup
    mysqldump -u -p > file.sql
    โดยคำสั่งนี้จะทำการสำรองฐานข้อมูลที่ชื่อ เก็บไว้ที่ไฟล์ file.sql ตัวอย่างเช่น ต้องการสำรองฐานข้อมูลที่ชื่อ unixtip เก็บไว้ที่ unixtip-12-2011.sql โดยฐานข้อมูลมี user คือ root มีรหัสผ่านคือ 1234
    mysqldump -uroot -p1234 unixtip > unixtip-12-2011.sql
    restore
    mysql -uroot -p1234 unixtip < unixtip-12-2011.sql
  2. phpmyadmin เมื่อต้องการทำการสำรองฐานข้อมูล แต่ไม่อยากใช้ คำสั่ง command line ให้วุ่นวาย ก็ใช้ phpmyadmin คงไม่มีใครไม่รู้จัก phpmyadmin นี้ ผมคงไม่ต้องอธิบายเพิ่มเติมแล้วครับ สำหรับวิธีการสำรองฐานข้อมูลก็ง่ายแสนง่าย เพียงเลือกฐานข้อมูล ที่ต้องการสำรอง จากนั้น คลิกที่ menu Export แล้วก็คลิก OK เท่านั้น ในขณะที่การ restore ก็เข้าไปที่ menu Import แล้วเลือกไฟล์ที่ Export มาเท่านั้นเอง ผมไม่ขออธิบายโดยละเอียดสำหรับวิธีการนี้ครับ เพราะมันง่ายจริง ๆ
  3. automysqlbackup สำหรับ script นี้จะเป็นตัวช่วยในการสำรองฐานข้อมูล ทุกวัน ให้เราโดย script นี้จะใช้ mysqldump อีกทีนึงครับ
    Install for debian , ubuntu
    sudo apt-get install automysqlbackup
    ไฟล์สำหรับ config automysqlbackup
    nano /etc/default/automysqlbackup
    สำหรับ automysqlbackup defaule setting นั้นจะทำการสำรองฐานข้อมูลไว้ใน /var/lib/automysqlbackup/ ซึ่งจะแบ่งเป็น daily, weekly และ monthly restore ถ้าทำการบีบอัดไฟล์ จะอยู่ในรูป unixtip_2011-12-23_07h25m.Friday.sql.gz ให้ทำการ decompress ก่อน ด้วยคำสั่ง
    gzip -d unixtip_2011-12-23_07h25m.Friday.sql.gz
    จะได้ไฟล์ unixtip_2011-12-23_07h25m.Friday.sql
    mysql -uroot -p1234 unixtip < unixtip_2011-12-23_07h25m.Friday.sql

Read More

Thursday, December 8, 2011

Debian Lenny 5.0 end of life


เจอข่าวจาก web H online บอกว่าทาง Debian ได้เตือนผู้ที่ใช้ Debian Lenny version 5.0 ว่าจะหมดอายุ End Of Life (EOF) แล้ว หรืออีกนัยนึงคือเลิก support แล้ว ในวันที่ 6 กุมภาพันธ์ 2012 ที่จะถึงนี้

โดยทาง Debian ได้เตือนให้อัพเกรดเป็น เวอร์ชั่น 6.0 โค๊ดเนมว่า Squeeze ครับ เครื่องที่ผมใช้อยู่อัพเกรดเรียบร้อยแล้ว :) ที่มา : H-online

Read More

Friday, October 28, 2011

how to make thunderbird notify new email like evolution on ubuntu

หลังจาก install thunderbird แล้ว ก็เกิดอยากได้ notify new email แบบ evolution บ้างจึงลองค้นดูก็เจอคนถามใน askubuntu พอดีเลย วิธีการคือ
  • add repository and update
    sudo add-apt-repository ppa:ruben-verweij/thunderbird-indicator
    sudo apt-get update
  • Install package
    sudo apt-get install xul-ext-indicator libnotify-bin
จากนั้นสังเกตุไอคอน indicator จะพบ ไอคอน thunderbird อยู่ และเมื่อมี new email ก็จะมี notify แล้วครับ

Read More

Thursday, October 27, 2011

how to install thunderbird

หลัง ๆ เริ่มได้ใช้โปรแกรมดูดเมล์มา เริ่มตั้งแต่ outlook on windows , evolution mail on ubuntu ก็พอใช้งานได้ แต่สำหรับ evolution เริ่มใช้งานมากขึ้นเจอกับเมล์ข้อความหลาย ๆ บรรทัด ( 2000 - 3000 บรรทัด ) ทีไรเลื่อน ๆ ดูข้อความแล้วชอบเด้งออกตลอดเลย แต่ก็ไม่ค่อยได้ไปสนใจเท่าไร พอดีวันนี้เจอเว็บ webupd8 พูดถึง thunderbird จึงลองดูบ้าง โดยขั้นตอนการ install จาก webupd8 สำหรับ Ubuntu 11.04, 10.10 or 10.04
  1. add repository and update package
    sudo add-apt-repository ppa:mozillateam/thunderbird-stable
    sudo apt-get update
  2. Install thunderbird
    sudo apt-get install thunderbird
  3. Install calendar plugin
    sudo apt-get install xul-ext-lightning
  4. ถ้าหากต้องการปรับแต่งหน้าตาให้ดูดีขึ้น ก็ลง add-on เพิ่มเข้าไป โดยไปโหลด Thunderbird Conversations เก็บไว้ในเครื่องแล้วเข้าโปรแกรม thunderbird แล้วเลือกที่ Tools -> Add-ons แล้วคลิกที่ไอคอน Tools for all add-ons แล้วเลือก Install Add-on from file จากนั้นก็ restart thunderbird ก็จะได้ตามรูป
  5. ถ้าหากมี calendar from evolution ให้ open thunderbird calendar, go Events&Task->import, and look into .local/share/evolution/calendar/system/calendar.ics file...
    หรือถ้ามีข้อมูลเกี่ยวกับ filter หรือการตั้งค่าต่าง ๆ สามารถใช้ tools->import เลยได้ แต่สำหรับผมเหมือนมันจะยังไม่โอเคนะ

Read More

Tuesday, October 25, 2011

how to move multiple file with CLI

การย้ายไฟล์จากที่หนึ่งไปยังอีกที่หนึ่ง ปกติแล้วถ้าหากใช้ Windows ก็จะเลือกไฟล์หลาย ๆ ไฟล์จากนั้นก็ Drag & Drop file ไปไว้อีกทีนึงได้เลย แต่ถ้าเป็น CLI (Command Line Interface) ละจะทำอย่างไร?
หากต้องการ move file ทั้ง directory '/home/user/a' and rename directory to directory '/home/user/b' เลยอาจใช้คำสั่งนี้
mv /home/user/a /home/user/b
หาก /home/user/b exist can use this command
mv /home/user/a/* /home/user/b
ในขณะที่ file ที่ต้องการจะ move มีบางไฟล์จาก /home/user/a โดยที่ต้องการ move file ที่ไม่ได้ถูกเปลี่ยนแปลงมาแล้วเกินกว่า 30 วัน
find /home/user/a -type f -mtime +30 -exec mv '{}' /home/user/b \;

Read More

Wednesday, October 19, 2011

automatic shutdown server by cron

หลาย ๆ ครั้งที่เครื่อง Server ไม่สามารถ shutdown ได้ในเวลาที่เราทำงาน ครั้นจะให้กลับมา shutdown ตอนดึก ๆ ก็คงจะไม่ดี ตัวช่วยในเรื่องเวลาที่ ubuntu, debian, linux, bsd, freebsd, unix ต่างก็มีนั่นก็คือ cron
การใช้งาน
เข้า Terminal แล้วใช้คำสั่ง สำหรับการตั้งเวลา cron ด้วย root
sudo crontab -e
หากว่าไม่ต้องการใช้ root ตั้งเวลา cron ต้องการเพียงแค่ user ที่ login อยู่ให้ใช้คำสั่ง
crontab -e
หากเรียกใช้งาน crontab ครั้งแรกอาจมีคำถามว่าต้องการเลือก shell editor แบบไหน ผมขอแนะนำให้เลือก nano สำหรับมือใหม่ครับ
เมื่อเรียกใช้คำสั่งแล้วจะพบกับหน้าจอสำหรับ กำหนดให้ cron ทำงาน โดย cron จะมีฟอแมตคือ
MIN HOUR DOM MON DOW CMD
โดยที่
MIN คือนาที มีค่าตั้งแต่ 0 - 59
HOUR คือชั่วโมง มีค่าตั้งแต่ 0 - 23
DOM ย่อมาจาก Day of month คือวันที่นั่นเองครับ มีค่าตั้งแต่ 1 - 31 ตามจำนวนวันในเดือนนั้น ๆ
MON คือเดือน มีค่าตั้งแต่ 1 - 12
DOW ย่อมาจาก Day of week คือ วันในสัปดาห์ มีค่าตั้งแต่ 0 - 6 โดยที่เริ่มตั้งแต่ 0 คือวันอาทิตย์, 1 คือวันจันทร์ ... ไล่ไปเรื่อย ๆ จน 6 คือวันเสาร์
CMD คือคำสั่งที่ต้องการจะสั่งให้ server ทำงานอัตโนมัติตามเวลาที่กำหนด ซึ่งตามบทความนี้คำสั่งที่จะใช้คือ shutdown -h now สำหรับปิดเครื่อง และ reboot สำหรับ restart เครื่อง server
เมื่อรู้ความหมายของ format cron แล้วดังนั้น หากต้องการปิดเครื่อง server ทุกวันเวลา ตีสาม คำสั่งคือ
00 03 * * * /sbin/shutdown -h now
ตัวอย่างสำหรับหากต้องการ restart server ในวันที่ 20 ตุลาคม เวลา ตีสาม ห้านาที มีคำสั่งคือ
05 03 20 10 * /sbin/reboot
เมื่อทำการแก้ไขเสร็จแล้วให้ save ด้วยคีย์ Ctrl+o กด enter และออกจาก editor ด้วยคีย์ Ctrl+x (สำหรับ editor nano) เพียงเท่านี้เครื่อง server ก็สามารถทำงานได้ตามที่เราต้องการโดยไม่ต้องนั่งหน้าเครื่องแล้วครับ

Read More

Cache .dep with squid-deb-proxy server

ปกติถ้าหากใช้เครื่องที่มี ubuntu เพียงเครื่องเดียวก็จะไม่มีความจำเป็นที่จะต้องเก็บ .dep ไว้ในเครื่อง server แต่ถ้าหากมีคนใช้ ubuntu ในออฟฟิศเดียวกันหลาย ๆ คน ครั้นจะให้แต่ละคนอัพเดตของตัวเองก็เกรงจะเปลือง bandwidth โดยใช่เหตุ ดังนั้นตัวช่วยในบทความนี้คือ squid-deb-proxy โดยมีขั้นตอนการติดตั้ง
[server]
  1. Install packages
    sudo apt-get install avahi-utils
    sudo apt-get install squid-deb-proxy
  2. Edit Configuration
    sudo vi /etc/squid-deb-proxy/allowed-networks-src.acl
    Add LAN IP such as LAN IP is 192.168.1.0 - 192.168.1.255 :
    192.168.1.0/24

    sudo vi /etc/squid-deb-proxy/mirror-dstdomain.acl
    Add all repository from all client ( can see in file /etc/apt/source.list ) to configuration file :
    # default ubuntu and ubuntu country archive mirrors
    .archive.ubuntu.com
    ports.ubuntu.com
    security.ubuntu.com
    #official third party repositories
    archive.canonical.com
    extras.ubuntu.com


  3. Restart service :
    sudo service avahi-daemon restart
    sudo service squid-deb-proxy start
    
  4. Check log file at :
    sudo tail -f /var/log/squid-deb-proxy/access.log

[Client]
  1. Install squid-deb-proxy-client
    sudo apt-get install squid-deb-proxy-client
  2. Check client con connect to proxy

    avahi-browse -kprt _apt_proxy._tcp
    +;eth2;IPv4;Squid\032deb\032proxy;_apt_proxy._tcp;local
    =;eth2;IPv4;Squid\032deb\032proxy;_apt_proxy._tcp;local;squidserver.local;192.168.1.10;8000;

    192.168.1.10 is squid-proxy-server
และหากต้องการยกเลิกการใช้งาน proxy ชั่วคราว สามารถทำการแก้ไขไฟล์ 30autoproxy ได้
sudo vi /etc/apt/apt.conf.d/30autoproxy
จากนั้นใส่เครื่องหมาย # ด้านหน้าบรรทัดแบบนี้
#Acquire::http { Proxy "http://192.168.1.10:8000/"; };

Read More

Tuesday, October 18, 2011

how to install openvpn + heartbeat on ubuntu server

การเชื่อมต่อข้อมูลสำหรับองค์กร ในบางครั้งจะมีข้อมูลที่ไม่อยากเอาขึ้น internet อาจเป็นข้อมูลที่มีความลับจึงไม่อยากเสี่ยงที่จะเอาขึ้น internet ดังนั้นจึงทำเป็น intranet (สำหรับในเครือข่าย lan เดียวกัน) ขึ้น แต่เมื่อมี สาขา เพิ่มขึ้นความต้องการใช้ข้อมูลของสาขาแรกในสาขาใหม่ที่อยู่ห่างออกไปก็มี แนวทางในการแก้ปัญหาแนวทางหนึ่งก็คือ openvpn เป็นการเชื่อมโยงสาขาใหม่ให้เสมือนทำงานอยู่ที่เดียวกับสาขาแรก โดยในบทความนี้จะแสดงขั้นตอนการ install openvpn step by step พร้อมกับ install heartbeat เพื่อคอยตรวจสอบ openvpn server โดยมี openvpn server จำนวน 2 เครื่อง ดังรูปด้านบน
กำหนดให้ openvpn server 2 เครื่องคือ 192.168.2.21 ( primary ) and 192.168.2.22 ( slave )
กำหนด virtual ip 192.168.2.20 openvpn
กำหนด real ip 123.4.5.6 ( เป็น firewall ที่ทำการ forward port ไปที่ openvpn server )

[Server]
  1. Install openvpn
    sudo apt-get install openvpn
  2. Copy files from /usr/share/doc/openvpn/examples/easy-rsa to /etc/openvpn
    sudo mkdir /etc/openvpn/easy-rsa
    sudo cp -R /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/easy-rsa/
  3. Edit file vars
    sudo vi /etc/openvpn/easy-rsa/vars
    Change these lines
    export KEY_COUNTRY="TH" #Change to your Country
    export KEY_PROVINCE="CM" #Change to your Province
    export KEY_CITY=""
    export KEY_ORG=""
    export KEY_EMAIL=""
  4. Setup CA and create server certificate
    cd /etc/openvpn/easy-rsa/
    sudo chown -R root:admin .
    sudo chmod g+w .
    source ./vars
    ./clean-all
    ./build-dh
    ./pkitool --initca
    ./pkitool --server server
    cd keys
    openvpn --genkey --secret ta.key
    sudo cp server.crt server.key ca.crt dh1024.pem ta.key ../../
  5. Create certificate file for client
    cd /etc/openvpn/easy-rsa
    source ./vars
    ./pkitool
    note : change to user machine.
  6. Configuring openvpn
    sudo vi /etc/openvpn/server.conf
    Change config :
    local 192.168.2.20   #virtual ip for heartbeat
    port 1194 
    # TCP or UDP server? 
    proto tcp 
    dev tun 
    ca /etc/openvpn/ca.crt 
    cert /etc/openvpn/server.crt 
    key /etc/openvpn/server.key  # This file should be kept secret 
    
    dh /etc/openvpn/dh1024.pem 
    server 192.168.201.0 255.255.255.0   #virtual ip for tunnel
    ifconfig-pool-persist ipp.txt 
    push "dhcp-option DOMAIN simdif.local" 
    push "dhcp-option DNS 192.168.2.1"           #DNS
    push "route 192.168.2.0 255.255.255.0" 
    push "route 192.168.201.0 255.255.255.0" 
    client-to-client 
    tls-auth ta.key 0 # This file is secret 
    comp-lzo 
    user nobody 
    group nogroup 
    persist-key 
    persist-tun 
    status openvpn-status.log 
    verb 4
    
  7. Restart service openvpn
    sudo /etc/init.d/openvpn restart
  8. ทำขั้นตอน 1-7 อีกครั้งกับเครื่อง openvpn server อีกเครื่อง
  9. Install heartbeat
    sudo apt-get install heartbeat
  10. Copy original config to /etc/ha.d/
    cd /usr/share/doc/heartbeat
    sudo cp ha.cf haresources authkeys /etc/ha.d/
  11. Edit ha.cf
    sudo vi /etc/ha.d/ha.cf
    Check and edit configuration
    debugfile /var/log/ha-debug 
    logfacility     local0 
    keepalive 4 
    deadtime 60 
    warntime 10 
    initdead 120 
    udpport 694 
    bcast   eth0            # Linux 
    auto_failback on 
    node openvpnserver01 
    node openvpnserver02
    ping_group group1 192.168.2.21 192.168.2.22
    
  12. Edit haresources
    sudo vi /etc/ha.d/haresources
    Change to :
    openvpnserver01 192.168.2.20 openvpn
  13. Edit authkeys
    sudo vi /etc/ha.d/authkeys
    Change to :
    auth 2
    2 sha1 test-ha
  14. Copy configuration file to 192.168.2.22
    cd /etc/ha.d
    scp ha.cf haresources authkeys username@192.168.2.22:
  15. Go to 192.168.2.22 and copy file to /etc/ha.d
    cd ~
    sudo cp ha.cf haresources authkeys /etc/ha.d
  16. Start heartbeat on the primary 192.168.2.21 and slave 192.168.2.22
    sudo /etc/init.d/heartbeat start
  17. Create firewall NAT both vpn server
    sudo echo 1 > /proc/sys/net/ipv4/ip_forward
    sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
  18. Edit file /etc/rc.local
    sudo vi /etc/rc.local
    Add 2 lines to configuration file
    sudo echo 1 > /proc/sys/net/ipv4/ip_forward
    sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    exit 0
    

[Client]
  1. Install openvpn
    sudo apt-get install openvpn
  2. Copy certificate file from server ca.crt .crt .key ta.key to /etc/openvpn
  3. Edit configuration
    sudo vi /etc/openvpn/client.conf
    Change to :
    client 
    dev tun 
    proto tcp 
    remote 123.4.5.6 1194 
    resolv-retry infinite 
    nobind 
    user nobody 
    group nogroup 
    persist-key 
    persist-tun 
    ca ca.crt 
    cert .crt 
    key .key 
    tls-auth ta.key 1 
    comp-lzo 
    verb 3
    log-append /var/log/openvpn.log
    
  4. Restart service openvpn
    sudo /etc/init.d/openvpn restart
  5. Check connection
    ifconfig
    tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
              inet addr:192.168.201.6  P-t-P:192.168.201.5  Mask:255.255.255.255 
              UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1 
              RX packets:152 errors:0 dropped:0 overruns:0 frame:0 
              TX packets:182 errors:0 dropped:0 overruns:0 carrier:0 
              collisions:0 txqueuelen:100 
              RX bytes:51111 (51.1 KB)  TX bytes:21776 (21.7 KB)
    

Read More

Monday, October 17, 2011

How to find current runlevel on unix with who

คำสั่ง who เป็นคำสั่งเอาไว้แสดงว่าตอนนี้มีใคร log in อยู่ในระบบบ้าง โดยเมื่อใช้คำสั่ง
who
จะแสดงผลประมาณนี้
yut  tty7         2011-10-17 08:55 (:0)
yut  pts/1        2011-10-17 08:55 (:0)
ในขณะที่คำสั่งสำหรับดู previous and current runlevel ก็คือคำสั่ง runlevel
runlevel
N 2
แต่สำหรับคำสั่ง who นั้นสามารถดู current runlevel ได้ด้วยคำสั่ง
who -r
         run-level 2  2011-10-17 08:54
โดยถ้าหากต้องการดูทั้ง current runlevel และ ดูว่ามีใคร log in ในระบบด้วย จะใช้คำสั่ง
who -a
           system boot  2011-10-17 08:54
           run-level 2  2011-10-17 08:54
LOGIN      tty4         2011-10-17 08:54              1008 id=4
LOGIN      tty5         2011-10-17 08:54              1014 id=5
LOGIN      tty2         2011-10-17 08:54              1034 id=2
LOGIN      tty3         2011-10-17 08:54              1036 id=3
LOGIN      tty6         2011-10-17 08:54              1042 id=6
LOGIN      tty1         2011-10-17 08:54              1637 id=1
yut        + tty7         2011-10-17 08:55  old         2043 (:0)
yut       + pts/1        2011-10-17 08:55 01:03        2133 (:0)

ที่มา www.theunixtips.com

Read More