bash

Topic: 
 

สคริปต์คัดลอกผู้ใช้จากระบบปัจจุบันไปยังไดเรคทอรี่ที่ติดตั้งลินุกซ์อีกตัวหนึ่ง
มีประโยชน์สำหรับติดตั้งลินุกซ์หลายตัว และต้องการให้ผู้ใช้เหมือนกับระบบปัจจุบัน ตัวอย่างการใช้งานเช่น

  • ติดตั้งลินุกซ์ผ่าน debootstrap
  • ติดตั้งลินุกซ์โดยการเมานต์ live cd แล้วคัดลอก squashfs มาติดตั้งโดยตรง

ข้อกำหนดคือ

  • ต้องใช้สิทธิ์ root ในการรัน
  • ต้องเป็นลินุกซ์ที่มีการเก็บไฟล์ผู้ใช้แบบมาตรฐาน คือเก็บที่ไฟล์ /etc/passwd, /etc/group และ /etc/shadow

สคริปต์มีดังนี้

 

update 2556-12-03

ลองใช้สคริปต์กับพาร์ติชั่นที่ขนาดไม่เท่ากันแล้วปรากฎว่าใช้ไม่ได้ เพราะ NTFS เก็บข้อมูลหลายอย่างมากกว่าแค่จุดเริ่มต้นและขนาด (ดูที่ NTFS Partition Boot Sector)

วิธีที่ได้ผลกว่าคือ ฟอร์แมตไดร์ฟไว้ก่อน -> เก็บ boot sector ไว้ 72 ไบต์ -> ทำ ntfsclone -> เอา boot recort ที่เก็บไว้มาเขียนทับ

ตัวอย่างเช่น จะคัดลอก ไดร์ฟ /dev/sda1 ไปยัง /dev/sdb1 ขั้นตอนจะเป็นดังนี้

$ sudo mkfs.ntfs -f /dev/sdb1
$ sudo dd if=/dev/sdb1 of=sdb1.img bs=72 count=1
$ sudo ntfsclone -O /dev/sdb1 /dev/sda1
$ sudo dd if=sdb1.img of=/dev/sdb1

*** สคริปต์ด้านล่างนี้ ล้าสมัยแล้ว ***

แก้ปัญหาเวลาใช้ ntfsclone ในการ restore พาร์ติชั่น NTFS มาลงในฮาร์ดดิสก์ลูกใหม่ ซึ่งจุดเริ่มต้นและขนาดอาจไม่เท่าของเดิม

วิธีการคือใช้ข้อมูลจากตาราง Master Boot Record ปัจจุบัน มาเขียนทับ boot record ของพาร์ติชั่น NTFS ที่ต้องการ โดยใช้เชลล์สคริปต์

$ vi ntfs_fix_boot_sector.sh
Topic: 
 

ปรับปรุงสคริปต์ให้สามารถบล๊อกโดยอัตโนมัติ

$ vi drupal_auto_blockuser.sh
Topic: 
 

ทำสคริปต์บล๊อกผู้ใช้ Drupal จากบรรทัดคำสั่ง (bash)

$ vi drupal_blockuser.sh
 

เห็นคำถามเกี่ยวกับการแบ่งไฟล์สื่อออกเป็นหลายส่วนที่ ubuntuclub.com
ด้วยต้องการคลายเครียด จึงวางแผนลงมือเขียนสคริปต์ โดยคิดให้สคริปต์มีการทำงานดังต่อไปนี้

Pages

Subscribe to RSS - bash
 

Syndicate

Subscribe to Syndicate

Who's online

There are currently 0 users online.