Я хочу выполнить переменную внутри system("")
. Например как
system("iptables -i input -s VARIABLE -j drop")
VARIABLE - это IP-адрес, но он будет каждый раз меняться.
как я могу сделать это на C ++? если нет, то какое решение?
Я хочу выполнить переменную внутри system("")
. Например как
system("iptables -i input -s VARIABLE -j drop")
VARIABLE - это IP-адрес, но он будет каждый раз меняться.
как я могу сделать это на C ++? если нет, то какое решение?
Используйте std::string
для команды:
std::string cmd = "iptables -i input -s ";
std::string ipaddr = "192.168.11.22";
cmd += ipaddr;
cmd += " -j drop";
system(cmd.c_str());
Или немного проще, используя std::ostringstream
:
std::string ipaddr = "192.168.11.22";
std::ostringstream oss;
oss << "iptables -i input -s " << ipaddr << " -j drop";
system(oss.str().c_str());
Попробуй это
string cmd = "iptables -i input -s ";
cmd += VARIABLE;
cmd += " -j drop";
system(cmd.c_str());
Здесь команда построена для включения переменной.
Вы генерируете строку во время выполнения. Например:
std::string varip = somefunctiongivingastring();
std::string cmdstr= "iptables -i input -s " + varip + " -j drop";
Затем вы передаете его system
, преобразовывая его в необработанный const char*
с помощью
system (cmdstring.c_str());
Вы можете сделать то же самое на C, например
char cmdbuf[256];
char* varip = somfunctiongivingacstring();
snprintf (cmdbuf, sizeof(cmdbuf), "iptables -i input -s %s -j drop", varip);
Однако остерегайтесь внедрения кода; представьте, что может случиться, если somefunctiongivingacstring()
вернет "127.0.0.1; rm -rf $HOME; echo "
string
Вы можете сгенерировать строку во время выполнения, используя следующий код (IP-адрес можно заменить строковой переменной):
std::string ipAddress = "127.0.0.1";
std::stringstream ss;
ss << "iptables -i input -s " + ipAddress + " -j drop";
system(ss.str());
Чтобы правильно скомпилировать этот код, вам необходимо включить следующий заголовочный файл:
#include <sstream>
system("iptables -i input -s $VARIABLE -j drop")
сработало? Какая у вас операционная система? - person πάντα ῥεῖ   schedule 22.05.2016