shell robot ภาค2

สืบเนื่องจากบทความเรื่อง shell robot ภาคที่ 1 ตาม link นี้ http://www.ubuntuclub.com/node/169 ของน้อง nat3

อืม..... ^_^ แอบนึกในใจ "ชอบชะมัดยาดเลยแฮะโปรแกรมอาร๊ายโคตรเทพ(เทพเหมือนทีมแมนยู :p)" และประกอบกับช่วงนี้

โดนมอบหมายงานอะไรทำนองนี้มาจากท่านหัวหน้าก็เลยตัดสินใจสละเวลาจากการเล่น winning วันละนิดละหน่อยศึกษาเรื่องนี้

จนเริ่มที่จะมีความรู้ขึ้นมาสักหน่อยล่ะ ก็เลยเอาประสบการณ์การลองผิดลองถูกกับโปรแกรมเทพๆมาเล่าสู่กันฟัง

step1: ก่อนอื่นครับก่อนออกรบต้องมีอาวุธก่อน

$sudo aptitude install expect

หลังจากอาวุธพร้อมทีนี้ก็พร้อมโจมตีครับ โจทย์มีอยู่ว่าเราต้องทำการสร้าง script สำหรับ scp ไฟล์ไปยัง server แบบอัตโนมัติได้

อะฮ่า....ลองเลยดีก่า

step2: สร้างไฟล์เปล่าๆขึ้นมา 1 ไฟล์ก่อน

$touch scp.sh

ความหมาย: สร้างไฟล์ชื่อว่า scp.sh ครับ

step3: เปิดไฟล์ขึ้นมาแก้ครับ

$gedit scp.sh

ความหมาย: เรียกโปรแกรม gedit ที่เป็น text editor ตัวนึงขึ้นมาแก้ไขไฟล์ scp.sh โดยเนื้อหาในไฟล์ให้ใส่ลงไปประมาณนี้

(เอาตัวอย่างจาก net มานั่งโม)

#!/usr/bin/expect
spawn scp /var/log/report/report20080115.txt suchart@192.168.20.200:/media/data
expect "password:"
send "123456\n"
interact

ขั้นต่อมา rooney ขอชำแหละออกมาให้ดูกันทีละบรรทัด

#!/usr/bin/expect

ความหมาย: เรียกโปรแกรม expect ขึ้นมาทำงาน

spawn scp /var/log/report/report20080115.txt suchart@192.168.20.200

ความหมาย: ขอเริ่มจาก spawn ก่อนนะครับ spawn มันจะเอาไว้ใช้เรียกให้ process อะไรสัก process ให้รันขึ้นมา ในที่นี้คือ

สั่งรัน scp ครับ โดย

 

scp /var/log/report/report20080115.txt suchart@192.168.20.200:/media/data

คือให้ทำการ copy ไฟล์ชื่อ report20080115.txt ที่อยู่ตาม path ดังกล่าวไปยังเครื่อง ip address เบอร์ 192.168.20.200

โดยเก็บไว้ใน /media/data ของเครื่อง server และใช้ user ชื่อ suchart ในการ login เข้าเครื่อง server

 

expect "password:"

ความหมาย: ทางเราคาดหวังว่าทาง server จะร้องขอ password โดยขึ้น prompt มาถามยังงี้ ---> password:

send "123456\n"

ความหมาย: ส่ง password กลับไปให้ server โดย password คือ 123456 ส่วน \n หมายถึง enter ครับ

 

interact

ความหมาย: อันนี้ไม่แน่ใจ รู้สึกเหมือนกับว่าจะใช้ส่งการ control process ที่เราสั่งรันไปให้ user นั้นๆ(ใครเข้าใจกระจ่างแจ้ง

แวะมาขยายความหน่อยเน้อ)

*หลังจากเขียนลงไปทุกบรรทัดก็ทำการ save ไฟล์ครับ

step4: เปลี่ยน mode ของไฟล์สักหน่อย เดี๋ยวมันจะไม่ยอมรันเอาดื้อๆ

$chmod +x scp.sh

ความหมาย: เปลี่ยนโหมดให้ไฟล์ scp.sh สามารถ execute ได้

step5: ลองรัน script ดูครับ

$./scp.sh

เย่ ๆ ๆ สำเร็จ upload ไฟล์ได้แล้น password ก็ไม่ต้องกรอก Surprised

 

*ปล. เนื่องด้วยขี้เกียจจะเขียนดังนั้นวันนี้พอแค่นี้ก่อน จริงๆแล้วยังมี script สำหรับทำ ftp อีกนะครับ แต่วันนี้ง่วงขออิ๊บไว้ก่อน

และถ้าว่างๆ จะสอนลงโปรแกรม expect แบบ compile เองจาก source ให้ครับ เผื่อเอาไปทำ shell robot บน linux

ตัวอื่นที่ไม่มี apt-get

 

# # จบก่อนครับ Z Z Z Z Z ###

Comments

อิ

อิ อิตามดูลิ้งค์น้องแนทของเฮีย เด็ดมากเลยเอีย สุดยอด

ท่าน rooney

ท่าน rooney ช่วยเสริมเรื่อง security ให้หน่อยครับ เพราะ script นี้ถ้ากำหนด
permission ไม่ดี user ธรรมดาจะอ่าน password ได้ หรือจะวาง script ใน
/root เอาไว้ใช้คนเดียว?

เอ่อ...

ผมใช้วิธีตั้ง permission ของไฟล์เป็น 700 เอาน่ะครับ แล้ว user ที่ใช้รัน script จะเป้น user ที่สร้างไฟล์และ user นั้นก็จะไม่เปิดให้ ssh เข้ามาได้จากเครื่องอื่น ส่วนใครใช้วิธีอื่นก็ลองแนะนำมาได้นะครับ ^_^

เทพจริงๆค

เทพจริงๆครับพี่ ขอบคุณมาก ไม่ต้องนั่งใส่ password ที่จะหลายๆรอบอีกแล้ว