我有一個 iPhone 應用程序,可以遠端關閉 Mac 電腦。我想要這個應用程式來關閉我的 Ubuntu 電腦。
嘗試關閉時,我從應用程式收到以下訊息:
當 Ubuntu 關閉時:
“連接錯誤”
當 Ubuntu 開啟:
“zsh:1:找不到指令:osascript”
這讓我認為該應用程式實際上能夠訪問 zsh。如果是這樣:我是否不能為“osascript”創建一個別名,如下所示:
alias osascript="shutdown -h now"
問題是我仍然收到訊息(在 Iphone 應用程式中):
“zsh:1:找不到指令:osascript”
有什麼想法嗎?我的猜測是該應用程式正在使用 SSH,並且它使用與 Ubuntu 中的別名相同的用戶名。
對於失敗搜尋:我應該在“.zsh_history”中看到遠端存取命令嗎?我在這裡看不到應用程式的任何命令。
答案1
不要使用不支援 Linux 的應用程式。 「RMsrv Reboot」非常適合啟動和關閉 Linux。
答案2
ssh
該錯誤訊息至少與直接通過例如運行命令失敗的嘗試一致ssh someuser@somehost somecommand
。根據zsh
應用程式的啟動方式以及在哪個設定檔中放置別名,它可能只是未載入。此外,歷史文件只會由互動式會話寫入(這是一件「好事™」:想像一下,如果每個 zsh 腳本在執行時都會將其內容轉儲到歷史文件中)。
osascript
是命令列 AppleScript 解釋器(感謝福爾誇爾以獲得提示)。因此它不適用於 Ubuntu。但該應用程式很可能正在透過命令列參數運行一些小腳本來關閉 Mac。
如果關閉你的機器是你唯一想做的事情,你可以
/usr/bin/osascript
在你的 Ubuntu 機器上放置一些腳本來關閉它。例如:#!/bin/sh sudo /sbin/shutdown -h now
這假設無密碼存取至少
shutdown -h now
.您可以透過將以下行新增至您的文件/etc/sudoers
或其中包含的文件來實現此目的:YOURUSERNAME ALL = NOPASSWD: /sbin/shutdown -h now
如果您想對不同的命令(關機、重新啟動等)做出反應,您可以嘗試檢索應用程式使用的命令列參數。為此,首先在您的 Ubuntu 電腦上放置以下腳本,其名稱
osascript
為/usr/bin
(理論上列出的任何路徑都PATH
應該這樣做。不幸的是,ssh
經常使用自己的設定。請參閱下文。):PATH
#!/bin/sh logfile='/path/to/logfile' echo "$@" >> "$logfile" echo '---->8----' >> "$logfile"
不要忘記使其可執行(
chmod 755 /usr/bin/osascript
)。現在,您可以運行應用程式必須提供的不同選項,並每次檢查日誌檔案中的輸出(
tail -F /path/to/logfile
可能有幫助)。現在您只需要找到每個輸出中的差異並編寫一個做出相應反應的腳本。
如上所述,ssh
可能會使用自己的設置PATH
,這可能與您在終端會話 ( ) 中獲得的設置有很大不同echo $PATH
。幸運的是,您可以輕鬆地檢索PATH
使用過ssh
的
ssh localhost 'echo $PATH'
如果您在那裡看到/usr/local/sbin
或/usr/local/bin
,我建議將腳本放在那裡,但任何列出的目錄都可以。