shell robot ภาค2


Posted in:

สืบเนื่องจากบทความเรื่อง 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 ###

scent's picture

อิ

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

ท่าน rooney

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

เอ่อ...

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

เทพจริงๆค

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

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.
  • Allowed HTML tags: <i> <center> <span> <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <br> <dt> <dd> <object> <embed> <hr> <img> <blockquote> <b> <u> <del> <div> <p> <table> <tr> <td> <font>

More information about formatting options