Pergunta

Em um laboratório de segurança da informação que estou trabalhando, eu fui encarregado de executar vários comandos com uma única chamada para "system ()" (escrito em C, em execução no Fedora). O que é a sintaxe que me permite executar mais de comando através do sistema ()? (A idéia é que você pode executar comandos arbitrários através de um programa em execução em um computador remoto, se os interage programa com o sistema operacional através do sistema () chamada.)

ou seja:.

char command[] = "????? \r\n"; 
system(command);
Foi útil?

Solução

Isso depende do shell que está sendo chamado para executar os comandos, mas em geral a maioria das conchas usar ; aos comandos separados para algo como isso deve funcionar:

command1; command2; command3

[EDIT]

Como @dicroce mencionado, você pode usar && vez de ; que irá parar a execução no primeiro comando que retorna um valor diferente de zero. Isto pode ou não pode ser desejado (e alguns comandos podem retornar diferente de zero em caso de sucesso), mas se você está tentando comandos do punho que pode falhar você deve provavelmente não cordas vários comandos juntos em uma chamada de sistema () como você não tem qualquer maneira de determinar onde a falha ocorreu. Neste caso, a sua melhor aposta seria ou para executar um comando em um momento ou criar um shell script que lidar executa o erro apropriado e chamada que em vez.

Outras dicas

Use && entre seus comandos. Tem a vantagem que ele só continua a execução de comandos, desde que eles retornam códigos de erro de sucesso. Exemplo:

"cd / proc && cpuinfo gato"

Uma possibilidade vem imediatamente à mente. Você poderia escrever todos os comandos de um script, em seguida, executá-lo com:

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

ou, agora que eu tenho notado que você está em execução no Fedora:

system ("x.sh");
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top