作为 Mac 关机

作为 Mac 关机

我有一个可以远程关闭 Mac 电脑的 iPhone 应用程序。我希望这个应用程序能够关闭我的 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,我建议将脚本放在那里,但任何列出的目录都可以。

相关内容