私はackをicinga/nagiosサーバーに送信する機能を持っています。QNetworkAccesssManager icinga/nagios acknowledge
機能 - sendAcknowledge
void MNetworkConnector::sendAcknowledge(QString service, QString host)
{
QNetworkAccessManager *ackmanager;
ackmanager = new QNetworkAccessManager();
QString ackcommand = "http://nagioscore.demos.nagios.com/nagios/cgi-bin/cmd.cgi?cmd_typ=34&cmd_mod=2&host=#host#&service=#service#&com_author=nagiosadmin&com_data=Sent:+mMonitor&btnSubmit=Commit";
service = service.replace(" ", "+");
ackcommand = ackcommand.replace("#host#", host).replace("#service#", service);
connect(ackmanager, SIGNAL(finished(QNetworkReply*)),this, SLOT(replyFinished2(QNetworkReply*)));
QNetworkRequest myReq;
QUrl myUrl(ackcommand);
myUrl.setUserName("nagiosadmin");
myUrl.setPassword("nagiosadmin");
myReq.setUrl(myUrl);
myReq.setRawHeader("Referer", "http://nagioscore.demos.nagios.com/nagios/cgi-bin/cmd.cgi");
ackmanager->get(myReq);
}
機能 - replyFinished2
void MNetworkConnector::replyFinished2(QNetworkReply *r)
{
qDebug() << "reply output:" << r->readAll();
}
システムは、いくつかのエラーを返しました。 私は、企業のicingaサーバー上でこのソースをテストし、私はエラーが発生している場合: - :エラー:この は、すべてのコマンドが正常にオフに送信することができない
を認定されない私は、企業のicingaサーバー上でてmanualyそれをテストした場合、私はエラーを持っていますCSRF攻撃のようです!コマンドはClassic-UI経由で発行されませんでした。
私がマニュアルでnagiosテストサイトでテストしても、エラーはありません。設定サービスの確認はOKです。
私はこのソースをテストするとエラーが表示されます:申し訳ありませんが、指定されたコマンドをコミットする権限がありません。
どういうところが間違っていますか?あなたのすべてのアイデアをありがとう。最初は、Icingaの問題を解決する必要があります。これは代替テストとしてのみ使用されるNagiosテストページです。
これはコードの最初のバージョンです:-)。私は問題がそこにあると思ったので、それをQUrlで確認するように変更しました。 – exo
これはひどいです。すべての問題は、ホスト名が大文字と小文字を区別するためだけです:-(私はすべてのホストをBIGに転送し、ACKを送信すると... grrrrrrrr。2日と2分。 – exo
ああ、あなたが提供したコードとうまくいっていました。私はあなたが気付かなかった少しの詳細について問題が起きていると想像しました。あなたがホストとサービスを設定したコードの部分を聞いていました。あなたが問題を解決したことをうれしく思います。 – felipeptcho