2016-03-21 6 views
1

私はobj-cと解析からのターミナルコマンドを実行しています、それを達成するためにobjective-cターミナルOSX:「文字列」コマンドのコマンドライン開発ツールが必要です

から画面/ディスプレイのメーカーを取得する必要がありますその出力。

コマンド

ioreg -lw0 | grep "EDID" | sed "/[^<]*</s///" | xxd -p -r | strings -6 

その私のシステム上で正常に動作しますが、私は、ユーザーのシステム上に自分のコードからまたはTerminalのいずれかから同じコマンドを実行していたときに、それはいくつかをダウンロードするために私に尋ねるプロンプトを示していますすべてのユーザーのシステムでは不可能な開発ツールです。プロンプトの

スクリーンショット:私の端末で

enter image description here

コマンド結果

n:~ user$ ioreg -lw0 | grep "EDID" | sed "/[^<]*</s///" | xxd -p -r | strings -6 
P .00 6 LP133WX3-TLA3 Color LCD n:~ user$ 

私はターミナルコマンドを実行するコードの下に与えられた

を使用しています0
-(NSString*)runCommand:(NSString*)commandToRun; 
{ 
    NSString *[email protected]""; 

    @autoreleasepool { 
    NSTask *task; 
    task = [[NSTask alloc] init]; 
    [task setLaunchPath: @"/bin/sh"]; 

    NSArray *arguments = [NSArray arrayWithObjects: 
          @"-c" , 
          [NSString stringWithFormat:@"%@", commandToRun], 
          nil]; 
    NSLog(@"run command: %@",commandToRun); 
    [task setArguments: arguments]; 

    NSPipe *pipe; 
    pipe = [NSPipe pipe]; 
    [task setStandardOutput: pipe]; 

    NSPipe *errorPipe = [NSPipe pipe]; 
    [task setStandardError:errorPipe]; 

    NSFileHandle *file; 
    file = [pipe fileHandleForReading]; 

    NSFileHandle *errorFile; 
    errorFile = [errorPipe fileHandleForReading]; 

    [task launch]; 

    NSData *data; 
    data = [file readDataToEndOfFile]; 

    NSData* errorData; 
    errorData = [errorFile readDataToEndOfFile]; 


    output = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding]; 

    NSString *errorOutput; 
    errorOutput = [[NSString alloc] initWithData: errorData encoding: NSUTF8StringEncoding]; 

    } 

    return output; 
} 

コマンドの代替案や回避策を提案してください。

ご注意いただきありがとうございます。

答えて

1

ioreg -lw0 | grep "EDID" | sed "/[^<]*</s///" | xxd -p -rをメインのMacに送信してから、strings -6でローカルにフィルタリングするのが最適な方法です。

編集:コメントの詳細を記入してください: Macで実行ioreg -lw0 | grep "EDID" | sed "/[^<]*</s///" | xxd -p -r > ~/Desktop/report.txtファイルを送信するように指示してください。デスクトップで受け取ったら、ローカルマシンでstrings -6 ~/Desktop/report.txtを実行してください。

+0

'それをローカルで文字列でフィルタリングする-6' @daredevilを詳しく教えてください –

+0

上記のコマンドをどのようにリモートコンピュータに送信しますか? – StefanS

+0

実際には、私はアプリケーションで質問を提供しています。ユーザーはMacBookでアプリケーションを実行しており、アプリケーションはシステム情報をキャプチャしています。 –

関連する問題