2016-03-21 13 views
1

Ich brauche die Hersteller der Bildschirm/Anzeige erhalten von objective-cTerminal-OSX: Die „string“ Befehl erfordert die Befehlszeilen Entwickler-Tools

, um es zu erreichen, ich bin ein Terminal-Befehl von obj-c läuft und Parsing seine Ausgabe.

Befehl

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

Sein auf meinem System funktioniert, aber wenn ich den gleichen Befehl leite entweder von meinem Code oder aus den Terminal auf dem System des Benutzers, es ist eine Aufforderung zeigt, mich zu fragen, einige zum Download Entwickler-Tools, die ich nicht auf allen Anwendersystemen ausführen kann.

Screenshot der Aufforderung:

enter image description here

Befehl Ergebnis auf meinem Terminal

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

ich den Code unten gegeben bin mit Terminal-Befehl auszuführen

-(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; 
} 

Bitte schlagen Sie etwas wie eine Alternative des Befehls oder eine mögliche Abhilfe vor.

Vielen Dank für Ihre Aufmerksamkeit.

Antwort

1

Sie können nicht wirklich, beste Option ist zu verwenden ioreg -lw0 | grep "EDID" | sed "/[^<]*</s///" | xxd -p -r senden Sie es an Ihre Haupt-Mac und dann filtern Sie es lokal mit strings -6.

EDIT: Nach Ihren Angaben in den Kommentaren sollten Sie: auf ihrem Mac laufen ioreg -lw0 | grep "EDID" | sed "/[^<]*</s///" | xxd -p -r > ~/Desktop/report.txt sagen Sie ihnen, um die Datei senden Sie. Angenommen, Sie haben es auf dem Desktop empfangen und dann strings -6 ~/Desktop/report.txt auf Ihrem lokalen Computer ausgeführt.

+0

'Filter es lokal mit Strings -6' Könnten Sie bitte @Daredevil –

+0

erarbeiten Wie senden Sie den obigen Befehl an die Remote-Computer? – StefanS

+0

tatsächlich habe ich eine Anwendung erstellt (Code in der Frage zur Verfügung gestellt). Benutzer führen die App auf ihren Mac-Büchern aus, und die Anwendung erfasst ihre Systeminformationen. –

Verwandte Themen