Remote Shutdown Ubuntu บน Lan โดยใช้ Mac AppleScript

Sep 09 2020

พยายามปิดคอมพิวเตอร์ Ubuntu จากระยะไกลบน LAN เดียวกันโดยใช้คอมพิวเตอร์ Mac หากฉันเปิด Terminal บน mac ฉันสามารถปิด Ubuntu ได้โดยใช้: ssh [email protected] จากนั้นพิมพ์รหัสผ่านจากนั้นพิมพ์ sudo poweroff พิมพ์รหัสผ่านอีกครั้ง สิ่งนี้ใช้ได้ผล

ปัญหาคือฉันต้องทำโดยใช้ Mac Applescript (ดังนั้นฉันสามารถสร้างกิจกรรมในปฏิทินและเรียกใช้ในช่วงเวลาหนึ่งของวันหลังจากการสำรองข้อมูลเสร็จสิ้น)

หมายเหตุ: ฉันสร้าง Applescript สำเร็จแล้วที่ Wakeonlan จะเปิดใช้งาน Ubuntu ในช่วงเวลาที่กำหนดของวัน:

tell application "Terminal"
    set currentTab to do script
    ("ssh [email protected];")
    delay 6
    --//password
    do script ("~/bin/wakeonlan 00:11.22.33.44.55")
    
end tell

สิ่งนี้ใช้งานได้ดีส่ง wakeonlan และเริ่ม Ubuntu แต่ฉันไม่สามารถหาวิธีทำสิ่งเดียวกันกับคอมพิวเตอร์ SHUTDOWN Ubuntu ได้อย่างไร ฉันได้ลองทุกอย่างแล้วหรือยัง? โพสต์ทั้งหมดที่ฉันพบแสดงเฉพาะวิธีการทำสิ่งนี้จาก Ubuntu Terminal ไม่ใช่จาก Mac AppleScript ใส่ใน Terminal ของ Mac?

คำตอบ

1 Frobozz Sep 12 2020 at 15:26

หากคุณกำลังจะพยายามทำทั้งหมดนี้ผ่านสคริปต์ของแอปเปิ้ลแสดงว่า "แมว" มีความคิดเห็นตรงประเด็น: คุณต้องมีฟอรัมของ Apple

แต่สำหรับฉันแล้วปัญหาที่แท้จริงของคุณคือวิธีหลีกเลี่ยงการถูกท้าทายเรื่องรหัสผ่าน และssh-copy-idถูกคิดค้นขึ้นอย่างแม่นยำเพื่อจุดประสงค์นั้น หากคุณยินดีที่จะให้มันไป ...

บนโฮสต์ Ubuntu เป้าหมาย:

สร้างผู้ใช้เฉพาะเพื่อจุดประสงค์นี้

sudo adduser --force-badname SandMan

จากนั้นแก้ไข / etc / sudoers เพื่ออนุญาตให้ SandMan รัน "sudo / sbin / shutdown ... " โดยไม่มีใครท้าทาย

sudo visudo

(สิ่งนี้จะเปิด "nano" เป็นตัวแก้ไขตามค่าเริ่มต้น - คุณจะต้องยุ่งเหยิงด้วยตัวเองฉันเปลี่ยนของฉันทั้งหมดเป็น vi) แทรกสิ่งต่อไปนี้ก่อนคำสั่งรวมในตอนท้าย:

%SandMan ALL=NOPASSWD: /sbin/shutdown

บันทึกไฟล์

ตอนนี้คุณควรจะสามารถเข้าสู่โฮสต์ของคุณโดยใช้ผู้ใช้ SandMan และดำเนินการsudo /sbin/shutdown --helpโดยไม่ถูกท้าทายสำหรับรหัสผ่าน

ในการอนุญาตให้คุณดำเนินการปิดเครื่องโดยตรงจากหน้าต่างเทอร์มินัล MAC ของคุณให้ลอง (จากเทอร์มินัล MAC ของคุณ):

ssh-keygen -t rsa -b 2048 -f ~/.ssh/SandMan_rsa
ssh-copy-id -i ~/.ssh/SandMan_rsa [email protected]

นี่เป็นไวยากรณ์ที่ดีสำหรับ Ubuntu 20.04 แต่ฉันไม่แน่ใจว่าสิ่งนี้จะใช้ได้กับ MAC โดยไม่ต้องปรับแต่ง แต่ถ้ามันได้ผลคุณควรจะสามารถปิดเป้าหมายของคุณจากเครื่อง MAC ด้วย:

ssh -i ~/.ssh/SandMan_rsa [email protected] /sbin/shutdown -h now

N.T. Sep 13 2020 at 22:12

ในที่สุดฉันก็คิดออก นี่คือสิ่งที่ได้ผล:

tell application "Terminal"
  activate
  do script ("ssh [email protected]")
  delay 6
  do script "password" in front window
  delay 7
  do script "sudo poweroft” in front window
  delay 5
  do script "password" in front window
end tell