1个

希望有人可以帮助解决这个问题。我正在尝试在 Mac OS Catalina 中编写一个自动终端脚本,它将关闭 WiFi,关闭自动日期和时间设置,并将我的 mac 设置为特定的系统日期和时间。我真的没有编程经验,但我到目前为止所做的工作是关闭 wifi 并更改系统日期和时间……但脚本不会在自动程序中退出……它只是一直在旋转。不确定如何让 Sudo -S 命令在设置系统日期和时间后退出。这是我到目前为止所拥有的:

networksetup -setairportpower en0 off

echo "password" | sudo -S date 0101000120

所以这将关闭 wifi,并传递我的密码(也可以通过对话框完成,但这不是我的问题)并将设置系统日期……然后自动轮就会旋转……

  1. 任何关于如何让终端脚本退出并继续执行下一个命令的想法......或者我应该运行它然后退出脚本因为它的旋转虽然不理想但也有效

  2. 命令打开和关闭 mac 系统日期和时间的自动更新?

非常感谢阅读并非常感谢任何帮助。

编辑:目前重写了 automator 任务以运行终端命令,要求输入密码然后将其传递:

networksetup -setairportpower en0 off pw="$(osascript -e 'Tell application "System Events" to display dialog "Password:" default answer "" with hidden answer' -e 'text returned of result' 2>/dev/null)" && / echo "$pw" | sudo -S date 0101000120

最后仍在无限循环中旋转轮子,但我可以单击它并强制停止。任何人都知道一种方法让它停止欣赏它!

  • echo将输出发送到控制台。密码提示需要输入您要查找的命令是expect然而,关闭 WiFi 并更改系统时间是一个相当奇怪的工作流程。你想达到什么目的? 
    – 艾伦
     2020 年 3 月 29 日 22:35
  • 我运行的是一家现已倒闭的公司的遗留程序,该公司在我工作的地方配置了旧但非常可靠的设备(不幸的是,没有针对 1998 年 Windows 程序的软件更新)。如果并行系统日期超过特定日期,它将不会运行。手动进入 mac 并手动更改所有这些东西只是一种痛苦,所以试图自动化它......主要是为了让我不必成为唯一能够启动它的人! 
    – rhk118
     2020 年 3 月 29 日 22:43
  • echo 提示正在将我的密码发送到终端并接受它......以下 sudo -s 命令运行但随后 AppleScript 只是旋转......尝试'expect'而不是'echo'但现在要求“再次预期输入” echo 似乎在提供。我写的所有东西都可以正常工作,只是不会结束或超过日期退出……回声是这样做的吗? 
    – rhk118
     2020 年 3 月 29 日 22:47
  • 抱歉,我很难跟上。您引用了 Applescript,但我没有看到您在哪里调用/引用它。另外,你不能只在 VM 本身而不是主机上设置日期吗? 
    – 艾伦
     2020 年 3 月 29 日 23:41
  • 谢谢艾伦。AppleScript 可能是错误的术语。我在 Automator 应用程序中使用终端命令。如果你复制并粘贴我在原始帖子中的代码,你会看到它是如何工作的(只需在我有“密码”的地方替换你的系统密码)......然后它挂起。我认为问题是我不知道如何退出 sudo -s 命令,它似乎陷入了循环。 
    – rhk118
     2020 年 3 月 29 日 23:58 

1 个回答

1个

我可以通过将密码从文件传递给 sudo 而不是使用 echo 来让它工作:

sudo -S date 0101000120 < ~/passwd.txt

我不确定这有什么安全隐患,但感觉不对......

如果您正在寻求一种快速而肮脏的解决方案,那么这样做就可以了,但是根据 nohillside 的评论,这里有一些无需密码即可运行 sudo 命令的说明。这些建议在 iTerm2 iTerm 2 和终端的 Mojave 上对我有用。

  • 1个
    它与问题中的版本具有大致相同的含义:有权访问passwd.txt(或访问问题中采用的方法的 Automator 文件)的任何人之后都可以以管理员身份登录。可能更好地用于visudo编辑 sudoers 文件并允许无密码 sudo 访问date特定用户的命令。 
    – 没有山坡
     2020 年 3 月 30 日 11:12
  • 好,谢谢。将 PW 放在这样的文件中让我感到不舒服,当我尝试时它也能正常工作,但自动程序只是在无限循环中旋转轮子。所以我对其进行了修改,要求输入密码,然后将其传递给 Sudo -S 命令……然后只需单击“退出”按钮即可让自动机停止旋转。仍然比进入首选项并更改所有这些要快。 
    – rhk118
     2020 年 3 月 30 日 19:13 
  • networksetup -setairportpower en0 off pw="$(osascript -e 'Tell application "System Events" to display dialog "Password:" default answer "password" with hidden answer' -e 'text returned of result' 2>/dev/null)" && /     echo "$pw" | sudo -S date 0101000120 
    – rhk118
     2020 年 3 月 30 日 19:13 
  • 有人知道关闭日期和时间自动更新的简单方法吗?我发现 parallels 非常擅长查找日期和时间并将其传递到 Windows,即使您取消选择它也是如此......一旦发生这种情况,Windows 程序就会冻结...... 
    – rhk118
     2020 年 3 月 30 日 19:17