teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

コマンド修正

2020/11/08 13:03

投稿

hondayuki0606
hondayuki0606

スコア2

answer CHANGED
@@ -5,8 +5,10 @@
5
5
 
6
6
  NSTask *task = [[NSTask alloc] init];
7
7
  [task setLaunchPath:@"/bin/bash"];
8
+ // 以下のコマンドで管理者権限ユーザ名取得
8
9
  [task setArguments:[NSArray arrayWithObjects: @"-c", @"dscl . -read /Groups/admin GroupMembership", nil]];
10
+ // 以下のコマンドでユーザ名取得
9
- //[task setArguments:[NSArray arrayWithObjects: @"-c", @"users", nil]];
11
+ //[task setArguments:[NSArray arrayWithObjects: @"-c", @"id -un", nil]];
10
12
 
11
13
  NSPipe *pipe = [[NSPipe alloc] init];
12
14
  [task setStandardOutput:pipe];

1

実装方法修正

2020/11/08 13:02

投稿

hondayuki0606
hondayuki0606

スコア2

answer CHANGED
@@ -3,17 +3,18 @@
3
3
 
4
4
  NSTaskで上記のコマンドを実行すれば良い
5
5
 
6
- NSTask *task = [[NSTask alloc] init];
6
+ NSTask *task = [[NSTask alloc] init];
7
- NSPipe *pipe = [[NSPipe alloc] init];
8
- [task setLaunchPath:@"/bin/ls"];
7
+ [task setLaunchPath:@"/bin/bash"];
8
+ [task setArguments:[NSArray arrayWithObjects: @"-c", @"dscl . -read /Groups/admin GroupMembership", nil]];
9
- [task setStandardOutput:pipe];
9
+ //[task setArguments:[NSArray arrayWithObjects: @"-c", @"users", nil]];
10
- [task launch];
11
10
 
11
+ NSPipe *pipe = [[NSPipe alloc] init];
12
+ [task setStandardOutput:pipe];
13
+ [task launch];
12
- NSFileHandle *handle = [pipe fileHandleForReading];
14
+ NSFileHandle *handle = [pipe fileHandleForReading];
13
- NSData *data = [handle readDataToEndOfFile];
15
+ NSData *data = [handle readDataToEndOfFile];
14
- NSString *string = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease];
16
+ NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
17
+ NSLog(string);
15
18
 
16
- NSLog(string);
19
+ 出力結果
17
-
18
- [task release];
19
- [pipe release];
20
+ GroupMembership: root testuser