【问题标题】:how to programmatically edit /etc/hosts file on osx如何以编程方式在 osx 上编辑 /etc/hosts 文件
【发布时间】:2014-10-24 09:09:36
【问题描述】:

我想限制一些网站在 osx 上打开。我可以通过终端命令来做到这一点:

sudo /Applications/TextEdit.app/Contents/MacOS/TextEdit /etc/hosts

然后我们可以轻松编辑并保存此文件。只需编写本地 ip 和网站名称即可将该网站限制为 192.0.0.1 www.youtube.com。 我想以编程方式进行,我尝试如下:

system("echo \"192.0.0.1 www.facebook.com\" >> /etc/hosts");
此应用程序具有 root 权限,但仍无法附加它并显示 permission denied 消息。 谁能告诉我是什么问题,或者有没有其他方法可以编辑这个文件/etc/hosts

【问题讨论】:

  • @BasileStarynkevitch 需要详细说明吗?

标签: objective-c linux macos


【解决方案1】:

使用 Apple Script,您可以这样做。

do shell script "echo '192.0.0.1 www.facebook.com' >> /etc/hosts" with administrator privileges

在 Objective-C 中,您应该使用 NSTask 来运行 shell 命令。请参阅thesetwo 答案。

您也可以使用 NSFileHandle 在本机写入文件,而不是使用 shell 脚本。 要了解所有可能性,请查看Apple's Authorization Services Programming Guide

【讨论】:

  • 此命令中的sudo 毫无意义。它仅适用于重定向的左侧(运行echo,不需要提升权限)。
  • @AndrewMedico 我已经从 orkoden 的回答中删除了不正确的“sudo”。
猜你喜欢
  • 2014-08-04
  • 1970-01-01
  • 2016-10-18
  • 1970-01-01
  • 2015-08-15
  • 2013-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多