ก๊วนซอฟท์แวร์ </softganz> SoftGang (Gang Software)

Web &amp; Software Developer Gang.

Topic List

โดย Little Bear on 21 ก.ย. 52 12:11

ปัญหาการลืม password เป็นเรื่องปกติ เนื่องจากเราชักจะมี password มากเกินไปเสียแล้ว และยังหาวิธีการดี ๆ ที่มีความปลอดภัยในการจำรหัสไม่ได้เสียที จะจดไว้ในสมุด ก็มีคนบอกว่าห้าม จะให้จำ ก็จำไม่หมด

เอาเป็นว่า กรณีของ MySql หากเราลืมรหัสของ root ก็เข้าไป reset หรือ ตั้งรหัสใหม่ก็แล้วกัน ขอบันทึกวิธีการ reset password ไว้กันลืม (ก่อนจะลืมวิธีการ reset password อีก)

วิธีการ reset password ของ MySql คือ

  1. หยุดการทำงานของ mysql ก่อน

    # /etc/init.d/mysql stop

  2. Start MySQL เป็น save mode. โดยคำสั่ง

    # mysqld_safe –skip-grant-tables &

  3. Login MySQL โดย user root

    # mysql -u root

  4. Update password root (ใสรหัสใหม่แทน NEW PASSWORD)

    mysql> use mysql;
    mysql> update user set password=PASSWORD(”NEW PASSWORD”) where user=’root’;
    mysql> flush privileges;
    mysql> quit;
    

  5. Restart service ของ mysql ก็เป็นอันว่าเรียบร้อย

    #/etc/init.d/mysql restart

  6. แล้วลองเข้าใหม่ดูครับ

    # mysql -u root -p

ที่มา SnappyTux

โดย Little Bear on 3 ก.ย. 52 18:29

อาจจะต้องเขียน bash scripting มากขึ้น หลังจากต้องดูแล server เอง เลยขอเก็บคู่มือ - reference ของการเขียน bash scripting มาเก็บไว้เพื่อศึกษาในภายหลัง

อยู่ที่ Advanced Bash-Scripting Guide - An in-depth exploration of the art of shell scripting

โดย Little Bear on 13 ก.ค. 52 00:32

เหตุเริ่มเกิดมาได้สัก 2-3 วันแล้ว แรก ๆ ก็เกิดกับบางเว็บ เช่น www.psu.ac.th แล้วก็เริ่มหลายเว็บมากขึ้น จนมาวันนี้ ping ไปทุกเว็บก็เป็นเหมือนกันหมด แม้กระทั่ง google.com

อาการ : เวลา ssh ไปที่ Server@CAT-HY แล้ว ping ไปที่ google.com จะเกิด error ดังนี้

ping: unknown host google.com

ก็พยายามหาทางดู ลอง reboot server แล้วก็ไม่หาย (เสียดายอุตส่าห์เปิดมาตั้ง 30 วันแล้ว) ลอง ssh เข้าไปทุก vps แล้ว ping ดู ก็เป็นเหมือนกัน เลยคิดว่าน่าจะมีปัญหาที่ proxmox-ve เลย ssh ไปที่ proxmox-ve แล้ว ping ดู ก็มีอาการเหมือนกัน

เลยตั้งเป้าว่า น่าจะเกิดจาก DNS ของ CAT (202.129.27.134 , 202.129.27.135) มีปัญหา คิดว่าพรุ่งนี้จะโทรไปหา CAT ให้เขาเช็คดูเสียหน่อยว่ามีปัญหาอะไรบ้างไหม?

ระหว่างนั้นก็คิดว่า หากเราเปลี่ยน DNS ไปใช้ของที่อื่น จะเกิดอะไรขึ้นบ้าง ก็เลยลองเสี่ยงดู โดยเพิ่ม nameserver 208.67.222.222 ซี่งเป็นของ OpenDNS เข้าไปใน /etc/resolv.conf โดยการแก้ไขไฟล์ /etc/resolv.conf เป็น/เพิ่ม

nameserver 208.67.222.222
nameserver 208.67.220.220

It's work!!!!!!

ขอบคุณ OpenDNS แล้วพรุ่งนี้ค่อยโทรไปสอบถาม CAT-HY อีกที.

ปล. Thank for idea from configuring DNS

โดย Little Bear on 12 ก.ค. 52 22:44
  1. Check what is the new hard disk device name with "fdisk -l", it shoul be something like /dev/sdb
  2. Create a partition on it, supose the disk is /dev/sdb: "echo -ne "n\np\n1\n\n\nw\n" | fdisk /dev/sdb1"
  3. Make a filesystem on the partition: mkfs.ext3 /dev/sdb1
  4. Create a directory where to mount the partition: mkdir /newdirectory
  5. Edit fstab an add at the end of the file:
    /dev/sdb1  /newdirectory  ext3  defaults 0 0
  6. now mount:
    mount -a

ps. echo -ne part? is

  1. n -> new partition
  2. p -> primary partition
  3. 1 -> number of the partition
  4. just enter, here you should enter the first block
  5. just enter, here you should enter the last block
  6. write the partition table to the disk.
โดย Little Bear on 7 ก.ค. 52 11:33

มีการรวบรวมคำสั่ง(เครื่องมือ)สำหรับผู้ดูแล server/website ควรรู้เอาไว้ พร้อมทั้งรายละเอียดและตัวอย่างการใช้งาน บางคำสั่งก็สามารถใช้งานได้เลย บางคำสั่งต้องติดตั้งเพิ่มเติม

คำสั่งทั้งหมดคือ

  1. top - Process Activity Command
  2. vmstat - System Activity, Hardware and System Information
  3. w - Find Out Who Is Logged on And What They Are Doing
  4. uptime - Tell How Long The System Has Been Running
  5. ps - Displays The Processes
  6. free - Memory Usage
  7. iostat - Average CPU Load, Disk Activity
  8. sar - Collect and Report System Activity
  9. mpstat - Multiprocessor Usage
  10. pmap - Process Memory Usage
  11. netstat - Network Statistics
  12. ss - Network Statistics
  13. iptraf - Real-time Network Statistics
  14. tcpdump - Detailed Network Traffic Analysis
  15. strace - System Calls
  16. /Proc file system - Various Kernel Statistics
  17. Nagios - Server And Network Monitoring
  18. Cacti - Web-based Monitoring Tool
  19. KDE System Guard - Real-time Systems Reporting and Graphing
  20. Gnome System Monitor - Real-time Systems Reporting and Graphing

ดูรายละเอียดการใช้ได้จากที่มานะครับ

ที่มา 20 Linux System Monitoring Tools Every SysAdmin Should Know

โดย Little Bear on 5 ก.ค. 52 20:27

เพื่อป้องกันปัญหาโดน hack จากต่างประเทศ มีคำแนะนำให้ block การเข้าถึงจากต่างประเทศด้วยการ block IP จากต่างประเทศไม่ให้เข้าใช้บริการบางอย่างเช่น FTP , SSH

วิธีการดูได้จาก ThaiHostTalk นะครับ

ขออนุญาตคุณ icez และ ems นำมาเก็บไว้ก่อนนะครับ แล้วจะหาเวลามานั่งศึกษาดูอีกที

โดย Little Bear on 26 มิ.ย. 52 10:18

เกิดความสงสัยว่าใครกำลังล็อกอินในเครื่องเราบ้าง ลองตรวจด้วยคำสั่ง top แล้วเห็น 5 users ก็เลยอยากรู้

มีคำสั่งสำหรับตรวสอบเช่น

  • finger ... แสดงรายชื่อทุกคนที่กำลัง login อยู่ในปัจจุบัน
  • who ... เหมือนกับคำสั่ง finger
  • last ... ดูประวัติการ login/logout
  • lastb ... ดูรายการ bad / failed login ที่เข้ามาในระบบ
  • lastlog ... ดูเวลาการ login ครั้งล่าสุดของการ login เข้าสู่ระบบ
โดย Little Bear on 6 มิ.ย. 52 14:07

ผมทดลองเปิดสถานีวิทยุออนไลน์ ซึ่งมีหลายสถานี (port) และต้องการให้มันเปิดแบบอัตโนมัติในตอนเปิด server ก็ไปเจอวิธีการและ code ในเว็บนี้

ลองทำตามโค๊ดข้างล่าง

#!/bin/bash
#
# chkconfig: 345  91 35
# description: Starts and stops sc_serv.<br />
#          You know, the mp3 streaming thang.
#
#   Version 1.3 (nov 4 2001)
#   Now with more revisions! System now checks for pid file before cat
#   to display so that we receive no error messages. System also displays
#   pids as we are killing old processes. Profanity was removed from the<br />
#   startup messages. Tests for a pid file before reporting success. Displays
#   the relay server name when we start the daemon up, so that we know
#   which servers are getting booted. Pushed the success marker over to the<br />
#   right and added [] because I am just a slave to fashion.
#
#   Version 1.2 (nov 3 2001)
#   Same exact shit, but runs as nobody for security reasons. Just
#   in case we are worried about buffer overflows or whatnot.
#   
#   Version 1.1 (nov 3 2001)
#   Starts stops and restarts jobs. Also checks for existing daemons
#   before calling a start, and exits without starting new ones. This
#   prevents you from being a dumbass and starting multiple listeners
#   on the same port. I would suggest using the restart command
#   in these cases. Also creates a shoutcast.pid file that can be used
#   to discover all of the (many) pids used by shoutcast when running.
#
#   Version 1.0 (nov 3 2001)<br />
#   Starts and stops successfully.<br />
#   Kills old jobs on start command. Dirty, but<br />
#   does the job well enough. Tested functional on
#   mandrake version 8.1 but should work on redhat<br />
#   or any other distro that supports a standard<br />
#   sysv startup script.
#
#   Instructions for use.
#   1: untargzip shoutcast into the directory of your choosing
#   2: copy sc_serv into the /usr/sbin directory<br />
#   3: Create the directory /etc/shoutcast
#   4: copy the shoutcast.conf file into your /etc/shoutcast dir.
#   5: Edit the shoutcast.conf file to match your needs.
#   6: Make as many more conf files as needed to support<br />
#      multiple streams. Be sure to edit these files so that
#      you are not starting multiple shoutcast servers that
#      are either listening or broadcasting on the same port.
#   7: Copy this file into the /etc/rc.d/init.d directory
#   8: chmod this file +x (chmod ug+x /etc/rc.d/init.d/shoutcast)
#   9: run chkconfig --add shoutcast from the /etc/rc.d/init.d dir.
#   10:Run /etc/rc.d/init.d/shoutcast start<br />
#   11:Drink a beer, or light one up, and enjoy the tunes.
#

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up. This line may cause an error on incompatible
# distributions. Remove it if necessary. Also remove if the startup always
# fails for no apparent reason.
[[ ${NETWORKING} = "no" ]] && exit 0<br />
<br />
<br />
stop (){
 <a class="hashtag" href="/tags/First">#First</a> we want to kill the original servers, so we don't get errors.
  echo "Killing old shoutcast servers."
  for oldpid in `ps -A | grep sc_serv | cut -c 0-6`; do
      kill -9 $oldpid
      if [[ $1 == "-v" ]]
      then
          echo $oldpid
      fi
  done
  rm -f /var/run/shoutcast.pid
}<br />
<br />
<br />
start (){
  <a class="hashtag" href="/tags/Now">#Now</a> we can start the servers up.
  if [[ $1 == "-v" ]]<br />
      then
          echo "Starting up the new shoutcast servers. Starting..."
      fi
    <br />
  servcount=`expr 0`
  for cfile in `ls /etc/shoutcast`; do
      echo -n $cfile
      echo -n " -> "
      grep ^RelayServer /etc/shoutcast/$cfile
      # This is the line where we actually run the shoutcast program!
      <a class="hashtag" href="/tags/sudo">#sudo</a> -u nobody /usr/bin/sc_serv /etc/shoutcast/$cfile > /dev/null &
      /usr/bin/sc_serv /etc/shoutcast/$cfile > /dev/null &
      let servcount=servcount+1
  done
  <a class="hashtag" href="/tags/Create">#Create</a> the pid file...
  ps -A | grep sc_serv | cut -c 0-6 > /var/run/shoutcast.pid
  <a class="hashtag" href="/tags/Done">#Done</a> now!
  echo "Started $servcount servers."
}<br />
<br />
<br />
case "$1" in
  start)    
  if [[ ! -e /var/run/shoutcast.pid ]]
  then
    start $2
    
    if [[ -e /var/run/shoutcast.pid ]]<br />
    then        
        echo "Startup                      [SUCCESS]"
    fi
    
  else
      if [[ $2 == "-v" ]]
      then
        echo "Shoutcast is already running these processes:"
        #Toldja! Checks before displaying pid file.
        if [[ -e /var/run/shoutcast.pid ]]
        then
            cat /var/run/shoutcast.pid
        fi
        echo "Try calling shoutcast restart in order to kill old processes."
    else
        echo "SC_SERV is already running. Try calling shoutcast restart."
    fi
    echo "Startup                      [FAILED]"
  fi
    ;;
  restart)
    stop $2
    if [[ $2 == "-v" ]]
        then
            echo "Waiting for the old servers to die..."
        fi

    sleep 4
    start $2
    if [[ -e /var/run/shoutcast.pid ]]<br />
    then        
        echo "Startup                      [SUCCESS]"
    fi
    ;;
  stop)
  if [[ -e /var/run/shoutcast.pid ]];
  then
    stop $2
    echo "Shoutcast shutdown                   [SUCCESS]"
  else
    echo "There are no registered shoutcast servers running right now. Attempting to kill anyways."
    stop $2
  fi
    ;;
  *)
    echo "Usage: shoutcast (start|stop|restart) [-v]"
    
esac

ขั้นตอนการติดตั้ง

  1. สร้างไฟล์ /etc/init.d/shoutcast แล้วเปลี่ยน attr เป็น 755
  2. copy ไฟล์ sc_serv (ที่ดาวน์โหลดมา) ไปไว้ที่ /usr/bin
  3. สร้างโฟล์เดอร์ /etc/shoutcast แล้วนำไฟล์คอนฟิกมาใส่ไว้ในนี้ จะกี่ไฟล์ก็ได้ ตอนเปิดเครื่องมันจะ start ให้หมด
โดย Little Bear on 5 มิ.ย. 52 12:22

ผมซื้อฮาร์ดดิสใหม่มาติดตั้งใน Ubuntu วิธีการติดตั้งดังนี้

1.ใช้ fdisk และ make.ext3 เพื่อกำหนดพาร์ทิชั่นให้กับฮาร์ดิสตัวใหม่

2.ทำการแบ่งพาร์ทิชั่นใหม่ (fdisk the partiion) บนฮาร์ดดินตัวใหม่โดยใช้โปรแกรม fdisk ตามขั้นตอนด้านล่าง

fdisk /dev/sdb
n
p
1
enter
enter
w

ระวัง หากพลาดจะทำให้ข้อมูลสูญหายทั้งหมดได้นะ

3.สร้าง ext3 filesystem ด้วยคำสั่ง

mkfs.ext3 /dev/sdb1

แล้วฮาร์ดดิสตัวใหม่ก็พร้อมที่จะถูก mount

ปล.อย่าลืมแก้ไขค่า /etc/fstab เพื่อเพิ่ม mount point ให้โดยอัตโนมัติหลังจากเปิดเครื่องซะด้วย

อ้างอิง

  1. install new harddisk on ubuntu box
  2. Ubuntu - How to add or create hard disk partition and make it automatically mount
โดย Little Bear on 4 มิ.ย. 52 23:04

ผมต้องการสำรองไฟล์ข้อมูลของ Express Accounting ทุกวัน โดยให้ใช้ชื่อวันเป็นชื่อไฟล์สำรอง

cd /home

สร้างไฟล์ /home/.backupdata ให้มีคำสั่งดังนี้

#!/bin/bash
DATE=`date +%a`  # Grab the day name of today
TARFILE=/tmp/backup-$DATE.tar.gz # Use it to create a filename
tar cvpfz $TARFILE Sharing > /tmp/backup-$DATE.log 2>&1

กำหนดสิทธิ์ให้เป็น rwxr-xr-x

chmod 755 .backupdata

กำหนดให้ crontab ทำการสำรองข้อมูลทุกวันเวลา 12.30 น. (เวลาพักเที่ยง)

crontab -e

กำหนดเวลาเป็น

30 12 * * *