Frage

In einem Informationssicherheitslabor arbeite ich an, ich habe mit der Ausführung mehrerer Befehle mit einem einzigen Aufruf von „system ()“ (geschrieben in C, läuft auf Fedora) beauftragt. Was ist die Syntax, die ich mehr als Befehl über system () ausführen kann? (Die Idee ist, Sie beliebige Befehle durch ein Programm, das auf einem Remote-Computer ausführen können, wenn das Programm mit dem Betriebssystem durch das System interagiert () -Aufruf.)

D.h.:.

char command[] = "????? \r\n"; 
system(command);
War es hilfreich?

Lösung

Das hängt von der Shell aufgerufen werden, um die Befehle auszuführen, aber in der Regel der meisten Schalen ; verwenden, um Befehle zu trennen, so etwas wie dies funktionieren soll:

command1; command2; command3

[EDIT]

Wie @dicroce erwähnt, können Sie && statt ; verwenden, die Ausführung bei der ersten Befehl zu stoppen, die einen Wert ungleich Null zurückgibt. Dies kann oder nicht erwünscht sein (und einige Befehle nicht Null auf Erfolg zurückgeben kann), aber wenn Sie versuchen, Befehle zu verarbeiten, die Sie wahrscheinlich mehrere Befehle zusammen in einem System nicht String sollte ausfallen können () aufrufen, da Sie nicht haben eine Möglichkeit, zu bestimmen, wo der Fehler aufgetreten ist. In diesem Fall würde Ihre beste Wette entweder einen Befehl zu einem Zeitpunkt ausgeführt werden soll oder einen Shell-Skript erstellen, das die entsprechende Fehlerbehandlung und rief, dass stattdessen führt.

Andere Tipps

Verwenden Sie && zwischen Befehlen. Es hat den Vorteil, dass es weiterhin nur die Ausführung von Befehlen, solange sie erfolgreich Fehlercodes zurück. Beispiel:

"cd / proc && cat cpuinfo"

Eine Möglichkeit kommt sofort in den Sinn. Sie könnten alle Befehle an ein Skript schreiben, dann führen Sie es mit:

system ("cmd.exe /c \"x.cmd\"");

oder, jetzt, ich habe bemerkt, dass Sie auf Fedora laufen:

system ("x.sh");
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top