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

scent's picture

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

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

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

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