Remote Shutdown Ubuntu บน Lan โดยใช้ Mac AppleScript
พยายามปิดคอมพิวเตอร์ 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?
คำตอบ
หากคุณกำลังจะพยายามทำทั้งหมดนี้ผ่านสคริปต์ของแอปเปิ้ลแสดงว่า "แมว" มีความคิดเห็นตรงประเด็น: คุณต้องมีฟอรัมของ 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
ในที่สุดฉันก็คิดออก นี่คือสิ่งที่ได้ผล:
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