如何解决是否可以在Mac OS上以编程方式更改DNS?
| 使用SystemConfiguration框架或其他框架的任何示例吗? (类似的问题在Mac OS X上以编程方式查找DNS服务器设置有相当令人困惑的答案)解决方法
我最近有同样的问题。我在这里发布了我的解决方案:
http://blog.notampering.com/
这是代码段...希望对您有所帮助。
#include <stdio.h>
#include <SystemConfiguration/SCPreferences.h>
#include <SystemConfiguration/SCDynamicStore.h>
int main (int argc,const char * argv[])
{
//get current values
SCDynamicStoreRef dynRef=SCDynamicStoreCreate(kCFAllocatorSystemDefault,CFSTR(\"iked\"),NULL,NULL);
CFDictionaryRef ipv4key = SCDynamicStoreCopyValue(dynRef,CFSTR(\"State:/Network/Global/IPv4\"));
CFStringRef primaryserviceid = CFDictionaryGetValue(ipv4key,CFSTR(\"PrimaryService\"));
CFStringRef primaryservicepath = CFStringCreateWithFormat(NULL,CFSTR(\"State:/Network/Service/%@/DNS\"),primaryserviceid);
CFDictionaryRef dnskey = SCDynamicStoreCopyValue(dynRef,primaryservicepath);
//create new values
CFMutableDictionaryRef newdnskey = CFDictionaryCreateMutableCopy(NULL,dnskey);
CFDictionarySetValue(newdnskey,CFSTR(\"DomainName\"),CFSTR(\"example.com\"));
CFMutableArrayRef dnsserveraddresses = CFArrayCreateMutable(NULL,NULL);
CFArrayAppendValue(dnsserveraddresses,CFSTR(\"8.8.8.8\"));
CFArrayAppendValue(dnsserveraddresses,CFSTR(\"4.2.2.2\"));
CFDictionarySetValue(newdnskey,CFSTR(\"ServerAddresses\"),dnsserveraddresses);
//set values
bool success = SCDynamicStoreSetValue(dynRef,primaryservicepath,newdnskey);
//clean up
CFRelease(dynRef);
CFRelease(primaryservicepath);
CFRelease(dnskey);
CFRelease(dnsserveraddresses);
CFRelease(newdnskey);
}
,此处记录了shell脚本版本:http://osxdaily.com/2015/06/02/change-dns-command-line-mac-os-x/
简短的版本是:
# Template:
networksetup -setdnsservers (Network Service) (DNS IP) (DNS IP) ...
# Example: set DNS for Wi-Fi to 8.8.8.8 8.8.4.4 1.1.1.1
sudo networksetup -setdnsservers Wi-Fi 8.8.8.8 8.8.4.4 1.1.1.1
# Example: Clear the manually assigned DNS so that the default values can take over
sudo networksetup -setdnsservers Wi-Fi Empty
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。