업 스케일링, 예를 들어, 실패, 시세 및 백 슬래시의 특수 문자를 이스케이프와 NSTask에 아래의 것입니다 통과 할 때 문제가된다.
networksetup -getsecurewebproxy Wi-Fi | awk -F ': ' '{ print $2 }' && networksetup -getwebproxy Wi-Fi | awk -F ': ' '{ print $2 }
그러나 당신은 쉘 스크립트에 코드를 추가하고, 당신은 문제가되지 않습니다 NSTask로 쉘 스크립트를 실행합니다.
.h file
@property (nonatomic, strong) __block NSTask *buildTask;
@property (nonatomic, strong) NSPipe *outputPipe;
.m file
NSMutableArray *arguments = [[NSMutableArray alloc] init];
[arguments addObject:@"Wi-FI"];
[arguments addObject:@"off"];
//location of script to run
NSString * locationOfScript = [[NSBundle mainBundle] pathForResource:@"wifi" ofType:@"sh"];
self.buildTask = [[NSTask alloc] init];
self.buildTask.launchPath = locationOfScript; //location of wifi script to run
self.buildTask.arguments = arguments;
// Output Handling
self.outputPipe = [[NSPipe alloc] init];
self.buildTask.standardOutput = self.outputPipe;
[[self.outputPipe fileHandleForReading] waitForDataInBackgroundAndNotify];
[self.buildTask launch];
[self.buildTask waitUntilExit];
if ([self ->_buildTask terminationStatus] == 0) {
//Confirms NSTask completes correctly.
}
xcode 프로젝트에서 새 파일을 만들면 다음과 같은 프로젝트가 추가됩니다.
#!/bin/sh
networksetup -setwebproxystate Wi-Fi off
당신이 그렇지 않으면 오류 (파일을 찾을 수 없습니다) 받게됩니다 +는 X wifi.sh chmod를 위해 터미널을 사용해야 할 것입니다있는 NSMutableArray의 인수를 위해 쉘 스크립트로 전달됩니다
및 위의 예에서 "$ {1}"이 @ "Wi-Fi"인 경우 액세스 할 수 있습니다.
다른 질문에 대해서는 관리자 암호 요구 사항을 무시할 수 없습니다. sudoers 파일에 명령을 추가 할 수 있지만 암호는 묻지 않습니다. 그러나이 방법은 프로덕션 응용 프로그램에서는 실용적이지 않습니다.
양말 질문에 가장 쉬운 방법은 프로젝트 이름 socks.sh에 새 파일을 작성하는 것입니다. [-setsocksfirewallproxy 네트워크 서비스 도메인 포트 번호 인증 된 사용자 이름 암호] [-setsocksfirewallproxystate networkservice on | 오프] networksetup 및 사용 가능한 옵션에 대한 자세한 정보를 들어
가 networksetup 사람 페이지 (아래 링크) [링크]
https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man8/networksetup.8.html이 감사에서 찾을 수 있습니다,이를 확인합니다. 하지만 양말 프록시를 설정하는 방법? 나는 도서관에서 도움이되는 것을 찾지 못했습니다. – Daniel
새 스크립트 socks.sh를 만들고 [- setsocksfirewallproxy networkservice domain portnumber authenticated username password] 또는 [-setsocksfirewallproxystate networkservice on | off] 더 많은 정보를 찾을 수 있습니다 [link] https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man8/networksetup.8.html [/ link] – LawrencePires
여러 인수를 전달할 때 까다로운 점은 무엇입니까? 'NSTask'를 통해? 공백으로 분리 된 인수에 인수 배열을 설정하기 만하면됩니다. '/ bin/sh' 또는'-c' 옵션을 사용하지 마십시오. 셸이 관련 될 이유가 거의 없습니다. –