Skip to content

ควบคุมคอมพิวเตอร์ผ่านเครือข่ายด้วยภาษา Python กับโมดูล RPyC

สวัสดีผู้อ่านทุกท่านครับ บทความนี้ผมจะพาผู้อ่านไปควบคุมคอมพิวเตอร์ผ่านเครือข่ายด้วยภาษา Python กับโมดูล RPyC กันครับ

โมดูล RPyC ย่อมาจาก Remote Python Call เป็นโมดูลสำหรับควบคุมคอมพิวเตอร์ผ่านเครือข่ายด้วยภาษา Python และยังสามารถทำระบบคลัสเตอร์ (clustering) และแจกจ่ายทรัพยากรระหว่างกัน (distributed-computing) ได้อีกด้วย
รองรับทั้ง Python 2 , Python 3
ใช้ License: MIT

สามารถติดตั้งได้โดยใช้คำสั่ง pip:

$ pip install rpyc

เราจะไปลองเขียนโปรแกรมควบคุมคอมพิวเตอร์ผ่านเครือข่ายด้วยภาษา Python กับโมดูล RPyC กันเลยครับ

ผมลง Ubuntu ไว้ใน VMware โดยผมต้องการควบคุมเครื่อง Ubuntu จากระบบปฏิบัติการ Windows

โค้ดส่วนเครื่องคอมพิวเตอร์ที่จะควบคุม

>>> from rpyc.utils.server import ThreadedServer
>>> import os
>>> import rpyc
>>> class MyService(rpyc.Service):
      def exposed_echo(self, text):
        os.system(text) # ให้รับข้อมูลที่ส่งมาจากตัวแปร text เป็นคำสั่ง สั่งงานตามที่ต้องการ
        return os.name+" is ok." # ส่งข้อมูลกลับไปยังเครื่องที่ควบคุม
>>> server = ThreadedServer(MyService, port = 18812) # เรียกใช้คลาสคำสั่ง MyService และตั้งค่า port สำหรับใช้ควบคุมเครื่องคอมพิวเตอร์
>>> server.start() # ทำงาน

ให้รันโค้ดส่วนเครื่องคอมพิวเตอร์ที่จะควบคุมก่อนครับ ต่อไปเขียนโค้ดส่วนเครื่องคอมพิวเตอร์ควบคุมกัน

โค้ดส่วนเครื่องคอมพิวเตอร์ควบคุม

>>> import rpyc
>>> con = rpyc.connect("192.168.177.143",18812) # เชื่อมต่อไปยัง Ubuntu โดยอ้างอิง IP และ port ของเครื่องที่จะควบคุม
>>> con.root.echo("echo 'Ok'") # ส่งข้อมูล
'posix is ok.'

ผลลัพธ์
ควบคุมคอมพิวเตอร์ผ่านเครือข่ายด้วยภาษา Python กับโมดูล RPyCควบคุมผ่านเครือข่ายด้วยภาษา Python กับโมดูล RPyC

อ่านเอกสารการใช้งานโมดูล RPyC ได้ที่ https://rpyc.readthedocs.org
ติดตามบทความต่อไปนะครับ
ขอบคุณครับ

Published on Categories เครือข่าย

About wannaphong

วรรณพงษ์ ภัททิยไพบูลย์ ผู้ดูแลเว็บ wannaphong.com และผู้เขียนบทความบล็อกนี้ นักศึกษาชั้นปีที่ 1 สาขาวิทยาการคอมพิวเตอร์และสารสนเทศ คณะวิทยาศาสตร์ประยุกต์และวิศวกรรมศาสตร์ มหาวิทยาลัยขอนแก่น วิทยาเขตหนองคาย

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องที่ต้องการถูกทำเครื่องหมาย *