Я пытаюсь обновить DNS, используя код C ++.Мой метод заключается в использовании строки с каналом с nsupdate.
Когда я вызываю мою систему с помощью «echo -e» », файл трассировки говорит« неверное имя раздела -e, и я не понимаю, в чем проблема, потому что, если я вставлю строку в мой терминал linux,это правильно добавляет запись DNS.
std::ostringstream oss;
oss << "echo -e \"update add " << enumName << ".";
oss << m_configuration.m_zone << ". ";
oss << m_configuration.m_ttl << " NAPTR ";
oss << m_configuration.m_priority << " ";
oss << m_configuration.m_weight << " ";
oss << "\\\"S\\\" ";
oss << "\\\"" << boost::to_upper_copy<std::string>(service) <<m_configuration.m_serviceSuffix << "\\\" ";
oss << "\\\"" << m_configuration.m_regex << "\\\" ";
oss << "_" << service << "._" << m_configuration.m_srvRecord << "." << m_configuration.m_zone << ".\\n";
oss << "send\\nquit\" | nsupdate -l -v";
std::string msg = oss.str();
TRACE_DEBUG("msg: '%s'", msg.c_str());
res = (system((msg).c_str()) == 0);
Отладка трассировки показывает сообщение MSG, и когда я вставляю сообщение MSG в мой терминал, это работает ... но отладчик Jenkins показывает это: "неверное имя раздела: -e ошибка синтаксиса"
Буду признателен за любую помощь