ฟังก์ชันบล็อก FS_SHELL

ฟังก์ชันบล็อก FS_SHELL จะทำคำสั่งหรือหลายคำสั่งที่อยู่ไกลออกไปในเชลล์แบบอินเตอร์แอ็กทีฟ

ความระวัง: คำสั่งของระบบสามารถทำให้ระบบที่อยู่ไกลออกไปเสี่ยงหรือได้รับความเสียหาย อีกทั้งไฟล์ที่มีอยู่แล้วอาจถูกเขียนทับโดยไม่มีการแจ้งเตือน

ต้องมีการเริ่มต้นไฟล์ระบบก่อนด้วย FS_INIT ทุกครั้งที่ทำงาน ให้ทำงานแบบเอเชียนโซนรอนกับแต่ละอุปกรณ์ที่เก็บข้อมูล

อินพุต RUN

เมื่อมีการเปลี่ยนแปลงเป็นบวก คำสั่งที่ระบุจะถูกทำงาน

อินพุต DEV

กำหนดอุปกรณ์ที่ใช้ในการเข้าถึงไฟล์ อุปกรณ์นี้ใช้ในโครงการและสามารถจัดการได้จากเมนูคอนเท็กซ์ภายใต้ โครงการ อุปกรณ์เก็บข้อมูลภายนอก

อินพุต PATH

ระบุเส้นทางไปยังไดเรกทอรีบนอุปกรณ์ที่เก็บข้อมูล เส้นทางนี้ตรงกับ Unix file path ในรูปแบบ UTF-8 ถ้ามีการสนับสนุน เส้นทางจะถูกแสดงออกมาเช่นนี้:

โฟลเดอร์/ซับโฟลเดอร์

การใช้เส้นทางเป็นตัวเลือก เมื่อมีการตั้งค่าที่เส้นทางนี้ ต้องสำเร็จในการเปลี่ยนไปยังไดเรกทอรีนั้น ถ้าไม่ได้ จะไม่ทำงานคำสั่งที่ต้องการ

อินพุต CMD

กำหนดคำสั่งทั้งหมดที่จะถูกทำงาน คำสั่งเหล่านี้ต้องมีการสิ้นสุดด้วยการขึ้นบรรทัดใหม่ เช่น "ls\n" ถ้าไม่ใช้การสิ้นสุดบรรทัด คำสั่งอาจจะไม่ถูกทำงาน คำสั่งเหล่านี้จะถูกทำงานตามแต่ละบรรทัดหลังจากที่เซิร์ฟเวอร์ได้ให้การตอบกลับ

หลังจากทำงานคำสั่งทั้งหมด ควรส่ง "exit\n" ที่สุดเพื่อปิดการเชื่อมต่อทันทีและคืนค่าที่ได้รับ หลังจากนั้นไม่ควรส่งคำสั่งอื่นๆ เพราะจะทำให้อาต์พุต ERROR ถูกตั้งเป็น TRUE

หมายเหตุ: หากการเชื่อมต่อถูกปิดอย่างไม่คาดคิดและคำสั่งหนึ่งๆ ไม่ได้ถูกส่ง อาต์พุต ERROR จะถูกตั้งเป็น TRUE

อินพุต PTY

กำหนดประเภทของคอนโซล (Pseudo-Terminal) สำหรับบางอุปกรณ์ ค่าตัวแปรนี้เป็นสิ่งจำเป็น ตัวอย่าง: "vanilla", "exec", "vt100", "vt102", "ansi", "xterm" เป็นต้น หากไม่ได้กำหนดค่า ค่าที่ใช้เป็น "vanilla"

ค่าที่ "exec" จะทำงานคำสั่งผ่าน SSH command ของระบบปฏิบัติการ ด้วยวิธีที่ทันสมัย แต่วิธีนี้มีประสิทธิภาพน้อยกว่า อินพุต ENV ถูกตั้งค่าก่อนการเชื่อมต่อ ดังนั้นอาจจะถูกละเลยไป อินพุต SIZE จะไม่ถูกใช้ในวิธีนี้

หากต้องการส่ง SSH parameters เพิ่มเติม สามารถเพิ่มได้ในแต่ละบรรทัดหลังจาก "exec" Parameters เป็น case-sensitive และจะถูกระบุตามตัวอย่างด้านล่าง ตัวอย่างนี้เปิดใช้งาน RSA algorithm สำหรับอุปกรณ์เก่า

exec
HostKeyAlgorithms=+ssh-rsa
PubkeyAcceptedAlgorithms=+ssh-rsa

มีการให้ SSH parameters ดังต่อไปนี้:

SSH Parameters สำหรับ exec ตัวอย่างค่า
KexAlgorithms +diffie-hellman-group1-sha1
Ciphers +aes128-cbc
HostKeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa
ConnectTimeout 10
ServerAliveInterval 30
ServerAliveCountMax 3

หมายเหตุ: สำหรับรายละเอียดเพิ่มเติม ดูเอกสารภายนอก: https://linux.die.net/man/5/ssh_config (อังกฤษ)

อินพุต ENV

กำหนดตัวแปรสิ่งแวดล้อมที่ใช้งานอยู่ สามารถระบุได้หลายตัวแปร โดยการตั้งค่าตัวแปรละแถว ตัวอย่าง:

LANG=en_US.UTF-8
LC_ALL=en_US.UTF-8

อินพุต SIZE

กำหนดขนาดของเทอร์มินัล โดยปกติจะระบุในตัวอักษร แต่สามารถระบุได้ในพิกเซล เช่น "80x25" หรือ "640x480px" หากไม่ได้กำหนดค่า ค่าที่ใช้เป็น "80x25"

อินพุต RECV_PT

กำหนดเวลาหน่วงในการรับข้อมูลต่อคำสั่งในรูปแบบ T# หากไม่ได้ตั้งค่าวันหยุดพัก ค่าเริ่มต้นที่ใช้เป็น T#150ms หากค่านี้ต่ำเกินไป คำสั่งหลายๆ คำอาจจะถูกทำงานในขณะที่มีการออกข้อมูล

อินพุต TIMEOUT

ตั้งเวลาหน่วงในรูปแบบ T# สำหรับการทำงานคำสั่งทั้งหมด เมื่อถึงเวลานี้ การเชื่อมต่อจะถูกปิดและคืนค่าที่ได้รับ ERROR จะถูกตั้งเป็น TRUE เวลาหน่วงนี้จะถูกประเมินหลังจากการเชื่อมต่อและการตรวจสอบตัวตน ถ้าอินพุต PTY ถูกตั้งค่าเป็น "exec" เวลาที่ใช้ในการทำงานจะถูกประเมินทั้งหมด หากไม่ได้ตั้งเวลาหน่วง ค่าที่ใช้เป็น T#300s

อาต์พุต DONE

เมื่อทำงานสำเร็จ อาต์พุตจะให้การกระตุ้นเพื่อดำเนินการต่อ การกระตุ้นนี้เกิดขึ้นเมื่อสิ้นสุดกระบวนการ แม้ว่าจะมีข้อผิดพลาดเกิดขึ้นก็ตาม

อาต์พุต RETURN

คืนค่าที่ได้จากคำสั่งเมื่อทำงานสำเร็จ ค่านี้จะถูกเก็บไว้เพื่อการใช้งานในภายหลัง

หมายเหตุ: โปรดทราบว่าคอนโซลจะจัดรูปแบบข้อมูลที่ออกมา ดังนั้นอาจมีตัวควบคุมหรือข้อมูลไบนารีอยู่ด้วย

อาต์พุต RETERR

คืนค่าที่ได้จากคำสั่งเมื่อทำงานไม่สำเร็จ ในการเชื่อมต่อ SSH ก็เรียกว่า STDERR ค่านี้จะถูกเก็บไว้เพื่อการใช้งานในภายหลัง

หมายเหตุ: โปรดทราบว่าคอนโซลจะจัดรูปแบบข้อมูลที่ออกมา ดังนั้นอาจมีตัวควบคุมหรือข้อมูลไบนารีอยู่ด้วย

อาต์พุต ERROR

เมื่อเกิดข้อผิดพลาด อาต์พุตจะให้ข้อความที่มีข้อความแจ้งเตือนนี้เป็น FALSE หากไม่มีข้อผิดพลาดเกิดขึ้น สถานะนี้จะถูกเก็บไว้เพื่อการใช้งานในภายหลัง

สาเหตุที่เป็นไปได้:

  • บริการของอุปกรณ์ที่เก็บข้อมูลไม่ได้เริ่มต้น
  • อุปกรณ์ที่เก็บข้อมูลไม่ได้เริ่มต้น
  • ข้อมูลเข้าสู่ระบบไม่ถูกต้อง
  • เซิร์ฟเวอร์ที่อยู่ไกลออกไปไม่สามารถเข้าถึงได้
  • อุปกรณ์ที่เก็บข้อมูลไม่มีอยู่
  • เส้นทางที่ระบุไม่ถูกต้อง
  • ไม่สามารถเขียนข้อมูลลงในอุปกรณ์ที่เก็บข้อมูลได้
  • ไม่มีพื้นที่เก็บข้อมูลในอุปกรณ์ที่เก็บข้อมูลหรืออุปกรณ์ที่เก็บข้อมูลถูกป้องกันการเขียน
  • การเชื่อมต่อถูกปิดอย่างไม่คาดคิดก่อนที่จะส่งคำสั่งทั้งหมดได้
  • เวลาหน่วงที่กำหนดถึงแล้ว

ดูเพิ่มเติม