SSH ให้แค่ Remote Shell ไม่สามารถเรียกฟังก์ชัน/โมดูล Python บนเครื่อง Remote ได้โดยตรง
วิธีแก้: รันสคริปต์บน Remote แล้วอ่านผลลัพธ์
- เขียนสคริปต์ Python บนเครื่อง Remote
- ใช้ Paramiko Exec Command เรียกสคริปต์นั้น
- อ่านผลจาก
stdoutหรือเขียนไฟล์แล้วอ่านไฟล์กลับ
ตัวอย่างแนวคิด
import paramiko
ssh = paramiko.SSHClient()
ssh.connect(host, username=user, password=pass)
stdin, stdout, stderr = ssh.exec_command('python3 /remote/script.py')
result = stdout.read().decode()
print(result)
ทางเลือก: ใช้ Pyro (Python Remote Objects)
Pyro4 ช่วยให้ Object ใน Process หนึ่ง เรียก Method ของ Object ใน Process อีกตัว (แม้บนเครื่องต่างเครื่อง) ได้เหมือน Local Call
- รองรับ Parameter/Return Type เกือบทุกอย่าง
- จัดการ Network/Serialization ให้อัตโนมัติ
- เหมาะสำหรับ Distributed Application