<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>iTopCN – iTop 集成</title><link>/docs/integration/</link><description>Recent content in iTop 集成 on iTopCN</description><generator>Hugo -- gohugo.io</generator><language>zh</language><lastBuildDate>Fri, 27 Jun 2025 00:00:00 +0000</lastBuildDate><atom:link href="/docs/integration/index.xml" rel="self" type="application/rss+xml"/><item><title>Docs: 数据同步概述</title><link>/docs/integration/01-data_synchro_overview/</link><pubDate>Fri, 27 Jun 2025 00:00:00 +0000</pubDate><guid>/docs/integration/01-data_synchro_overview/</guid><description>
&lt;div class="pageinfo pageinfo-primary">
&lt;p>数据同步允许将 iTop 对象与外部数据源（如 CSV 文件、LDAP 目录、数据库等）对齐。同步是单向的：从外部数据源到 iTop。&lt;/p>
&lt;p>如果不熟悉此功能，请先阅读本概述，然后参考&lt;a href="../02-data_synchronization/">数据同步参考&lt;/a>了解详细配置。&lt;/p>
&lt;/div>
&lt;h2 id="联邦化多个数据源">联邦化多个数据源&lt;/h2>
&lt;p>强大的数据同步引擎允许将来自多个信息源的数据（例如使用网络发现工具或资产管理工具时）联邦到 iTop 中。&lt;/p>
&lt;h2 id="使用数据源对象进行联邦化">使用数据源对象进行联邦化&lt;/h2>
&lt;p>这种联邦化在 iTop 中通过&lt;strong>数据源对象&lt;/strong>来定义。每个数据源定义了 iTop 如何处理来自特定源的特定类型对象的同步。&lt;/p>
&lt;h2 id="同步数据的通用流程">同步数据的通用流程&lt;/h2>
&lt;p>同步数据的通用（持续）流程基于以下步骤：&lt;/p>
&lt;ol>
&lt;li>&lt;strong>提取数据&lt;/strong> — 从外部源/应用程序提取数据 [不由 iTop 处理]&lt;/li>
&lt;li>&lt;strong>转换数据&lt;/strong> — 将数据转换为适合 iTop 的内容/格式 [不由 iTop 处理]&lt;/li>
&lt;li>&lt;strong>导入数据&lt;/strong> — 使用 MySQL 命令将数据导入 iTop 中的副本表 [不由 iTop 处理]&lt;/li>
&lt;li>&lt;strong>搜索匹配对象&lt;/strong> — 在 iTop 中搜索匹配对象 [由 iTop 处理]&lt;/li>
&lt;li>&lt;strong>创建/更新或删除&lt;/strong> — 在 iTop 中创建/更新或删除同步对象 [由 iTop 处理]&lt;/li>
&lt;li>&lt;strong>显示和管理&lt;/strong> — 在 iTop 中显示和管理同步对象&lt;/li>
&lt;/ol>
&lt;p>此流程可以通过两种方式执行：&lt;/p>
&lt;h3 id="方式一数据直接写入数据库">方式一：数据直接写入数据库&lt;/h3>
&lt;p>以下是从外部源到 iTop 的信息流示例，使用 ETL 直接将数据写入 MySQL。&lt;/p>
&lt;h4 id="在-itop-中实现数据同步">在 iTop 中实现数据同步&lt;/h4>
&lt;p>要在 iTop 中实现数据同步，请按照以下步骤操作：&lt;/p>
&lt;ul>
&lt;li>
&lt;p>从 iTop 管理菜单中，为要导入/同步的对象类型定义一个&lt;strong>数据源对象&lt;/strong>。这会创建一个特定的&lt;strong>副本表&lt;/strong>在 iTop 数据库中，名为 &lt;code>synchro_data_xxx&lt;/code>。（创建数据源后，检查数据源的&lt;strong>属性&lt;/strong>选项卡。临时表的名称显示在顶部。）&lt;/p>
&lt;/li>
&lt;li>
&lt;p>使用您喜欢的 ETL 工具或普通脚本，将来自外部源的数据填充到对应&lt;strong>数据源&lt;/strong>的 &lt;code>synchro_data_xxxx&lt;/code> 表中。您可以使用特殊列 &lt;code>primary_key&lt;/code> 来存储对象在外部应用程序中的任何标识符。此表中的每条记录将对应 iTop 中的一个对象。&lt;code>id&lt;/code> 列保留给 iTop 使用，不能写入。所有其他列对应于 iTop 对象的字段。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>通过执行页面 &lt;code>synchro/synchro_exec.php&lt;/code> 来触发 iTop 对象与临时表&lt;strong>副本&lt;/strong>之间的数据同步，可以在命令行模式下执行，或通过调用网页（例如使用 wget）来执行。&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>当然，您可以定期安排上述步骤 2 和 3（每小时、每天或每周）。&lt;/p>
&lt;p>有关更多信息，请参阅&lt;a href="../02-data_synchronization/#%E5%89%AF%E6%9C%AC">副本&lt;/a>。&lt;/p>
&lt;h3 id="方式二通过-csv-文件导入数据">方式二：通过 CSV 文件导入数据&lt;/h3>
&lt;p>另一种方法是创建一个中间 CSV 文件，并使用 iTop 提供的 PHP 脚本 &lt;code>synchro_import.php&lt;/code> 执行到 MySQL 的导入。&lt;/p>
&lt;p>在这种情况下，信息流如下所示：&lt;/p>
&lt;ol>
&lt;li>&lt;strong>提取数据&lt;/strong> — 从外部源/应用程序提取数据 [不由 iTop 处理]&lt;/li>
&lt;li>&lt;strong>转换数据&lt;/strong> — 将数据转换为适合 iTop 的内容/格式 [不由 iTop 处理]&lt;/li>
&lt;li>&lt;strong>写入数据&lt;/strong> — 将数据写入中间 CSV 文件 [不由 iTop 处理]&lt;/li>
&lt;li>&lt;strong>导入数据&lt;/strong> — 将数据导入 iTop 中的副本表 [由 iTop 处理]&lt;/li>
&lt;li>&lt;strong>搜索匹配对象&lt;/strong> — 在 iTop 中搜索匹配对象 [由 iTop 处理]&lt;/li>
&lt;li>&lt;strong>创建/更新或删除&lt;/strong> — 在 iTop 中创建/更新或删除同步对象 [由 iTop 处理]&lt;/li>
&lt;li>&lt;strong>显示和管理&lt;/strong> — 在 iTop 中显示和管理同步对象&lt;/li>
&lt;/ol>
&lt;h2 id="csv-导入与数据同步的区别是什么">CSV 导入与数据同步的区别是什么？&lt;/h2>
&lt;h3 id="数据同步">数据同步&lt;/h3>
&lt;p>数据同步旨在以定期方式从另一个系统导入数据到 iTop。它可以从命令行或 Web 运行，但不能交互式运行。数据同步针对大量不经常变化的数据进行了优化。例如，LDAP 服务器中的 10,000 个联系人可以每天同步到 iTop 一次。不太可能每天有超过一小部分用户记录被修改。iTop 可以高效地处理这种情况。&lt;/p>
&lt;p>同步数据时，iTop 会跟踪 iTop 对象与数据源之间的关系。因此，可以阻止用户在 iTop 中修改同步对象（部分或全部），并告知他们数据来源。这对于在 iTop 中&amp;quot;联邦化&amp;quot;多个数据源非常有用。&lt;/p>
&lt;h3 id="csv-导入">CSV 导入&lt;/h3>
&lt;p>CSV 导入可以交互式运行或从命令行运行。它更针对&amp;quot;一次性&amp;quot;导入。它可以从脚本（使用命令行界面或从 Web）或交互式使用。执行 CSV 导入时，iTop 不会记录有关数据来源的信息。数据加载到 iTop 后，授权用户可以修改对象，无需引用原始源。&lt;/p>
&lt;h3 id="总结">总结&lt;/h3>
&lt;p>&lt;strong>CSV 导入适用于：&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>将初始数据导入 iTop&lt;/li>
&lt;li>对数据执行批量转换（有时导出 &amp;gt; 在 Excel 中修改 &amp;gt; 重新导入，比直接在 iTop 中编辑对象更容易）&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>数据同步适用于：&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>在 iTop 中联邦化不同系统之间的数据&lt;/li>
&lt;li>通过某种计划机制导入数据&lt;/li>
&lt;li>阻止用户修改导入的数据&lt;/li>
&lt;/ul>
&lt;h2 id="同步的配置项">同步的配置项&lt;/h2>
&lt;p>当配置项与数据源同步时，其在 iTop 中的显示会略有不同。对 CI 的操作也可能受到限制，具体取决于数据源的配置。&lt;/p>
&lt;p>例如，对象中同步的字段可能对最终用户显示为&lt;strong>只读&lt;/strong>。还可以配置 iTop 以阻止用户删除同步对象。同步 CI 的确切行为由每个数据源的属性决定。&lt;/p>
&lt;p>（注意对象标题中的&amp;quot;锁&amp;quot;图标及其附加的工具提示）。&lt;/p>
&lt;h2 id="附加复杂性">附加复杂性&lt;/h2>
&lt;h3 id="设计">设计&lt;/h3>
&lt;p>此机制在设计时考虑了以下约束：&lt;/p>
&lt;ul>
&lt;li>针对每天同步大量数据进行优化&lt;/li>
&lt;li>易于与第三方数据管理工具（如 Talend）集成&lt;/li>
&lt;li>安全且易于操作/故障排除&lt;/li>
&lt;/ul>
&lt;h3 id="设置和常见陷阱">设置和常见陷阱&lt;/h3>
&lt;p>由于这些要求，设置它并不像人们想象的那么直观。下面描述了常见的陷阱：&lt;/p>
&lt;h4 id="从同步数据表中删除记录">从同步数据表中删除记录&lt;/h4>
&lt;p>从同步数据表中删除记录不会删除对象。它只会将对象从同步机制中&lt;strong>分离&lt;/strong>。用户将有权编辑或删除对象，就像它们是从 UI 中创建的一样。将对象重新附加到同步需要设置数据源以便可以进行协调，然后将记录重新引入同步数据表。同步机制将为您从同步数据表中删除记录。&lt;/p>
&lt;h4 id="定期重新创建完整的同步数据表">定期重新创建完整的同步数据表&lt;/h4>
&lt;p>使用相关设置，这可以工作。但是，当表被清空时（直到它再次被填充并且同步再次运行），用户不会看到相应对象被视为同步。同步执行需要很长时间，并且会严重影响 iTop Web 服务器的响应时间。对于每个同步的项目，都必须进行协调，需要执行查询来搜索最佳匹配。&lt;/p>
&lt;h4 id="使用此机制进行实时同步">使用此机制进行实时同步&lt;/h4>
&lt;p>通过 REST/JSON 等 Web 服务实现这要容易得多。范式更直观：创建一个对象（分别更新/删除），然后调用 REST 操作&amp;quot;对象创建&amp;quot;（分别更新/删除）。&lt;/p>
&lt;hr>
&lt;p>原文：&lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:advancedtopics:data_synchro_overview">https://www.itophub.io/wiki/page?id=3_2_0:advancedtopics:data_synchro_overview&lt;/a>&lt;/p>
&lt;p>版本：3_2_0/advancedtopics/data_synchro_overview.txt · Last modified: 2024/09/10 10:25 by 127.0.0.1&lt;/p></description></item><item><title>Docs: 数据同步</title><link>/docs/integration/02-data_synchronization/</link><pubDate>Fri, 27 Jun 2025 00:00:00 +0000</pubDate><guid>/docs/integration/02-data_synchronization/</guid><description>
&lt;div class="pageinfo pageinfo-primary">
&lt;p>数据同步功能允许将 iTop 对象与外部数据源对齐。管理员可在&amp;quot;配置 / 同步数据源&amp;quot;菜单中配置。&lt;/p>
&lt;p>如果不熟悉此功能，请先阅读&lt;a href="../01-data_synchro_overview/">数据同步概述&lt;/a>。&lt;/p>
&lt;ul>
&lt;li>想查看示例？请参阅&lt;a href="../09-synchro_howto_personsfromldap/">如何同步人员&lt;/a>&lt;/li>
&lt;li>想排查常见问题？请参阅&lt;a href="../03-data_synchronization-troubleshooting/">同步故障排除&lt;/a>&lt;/li>
&lt;/ul>
&lt;/div>
&lt;h2 id="数据源定义">数据源定义&lt;/h2>
&lt;p>数据源通过菜单 &lt;strong>管理工具 / 同步数据源&lt;/strong> 进行定义。&lt;/p>
&lt;p>每个数据源定义：&lt;/p>
&lt;ul>
&lt;li>要同步的对象的&lt;strong>目标类&lt;/strong>&lt;/li>
&lt;li>要同步的对象的&lt;strong>属性/字段列表&lt;/strong>&lt;/li>
&lt;li>如何&lt;strong>搜索/协调&lt;/strong>对象与 iTop 中已存在的对象&lt;/li>
&lt;li>在 iTop 中同步/更新以及可能删除对象的规则&lt;/li>
&lt;li>&lt;strong>同步对象&lt;/strong>对 iTop 最终用户的行为（哪些字段是只读的，是否允许用户删除对象等）&lt;/li>
&lt;li>一个可选的超链接和图标，用于将 iTop 用户引导到外部应用程序中的相应对象&lt;/li>
&lt;/ul>
&lt;h3 id="描述">描述&lt;/h3>
&lt;p>属性部分的这一部分定义了此同步数据源的一些通用参数。&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>属性&lt;/th>
&lt;th>必填？&lt;/th>
&lt;th>含义&lt;/th>
&lt;th>示例值&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>名称&lt;/td>
&lt;td>必填&lt;/td>
&lt;td>引用此数据源的名称&lt;/td>
&lt;td>来自 SCCS 的服务器同步&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>描述&lt;/td>
&lt;td>可选&lt;/td>
&lt;td>附加描述，仅供参考&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>状态&lt;/td>
&lt;td>必填&lt;/td>
&lt;td>implementation、production 或 obsolete：用于过滤/分类数据源&lt;/td>
&lt;td>production&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>目标类&lt;/td>
&lt;td>必填&lt;/td>
&lt;td>要同步的对象类&lt;/td>
&lt;td>Server&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>用户&lt;/td>
&lt;td>必填&lt;/td>
&lt;td>允许执行此同步的用户&lt;/td>
&lt;td>admin&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>通知联系人&lt;/td>
&lt;td>可选&lt;/td>
&lt;td>当同步执行完成且包含至少一个错误时，通过电子邮件通知的联系人&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>图标超链接&lt;/td>
&lt;td>可选&lt;/td>
&lt;td>指向代表此数据源的图像的超链接（URL）。此图标显示在 iTop 中同步对象标题旁&amp;quot;锁&amp;quot;符号的默认图标工具提示中&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>应用程序超链接&lt;/td>
&lt;td>可选&lt;/td>
&lt;td>指向同步数据来自的远程应用程序的超链接（URL）。超链接可以包含占位符，如 &lt;code>$this-&amp;gt;attcode$&lt;/code>（将被当前对象的属性值替换）或 &lt;code>$replica-&amp;gt;column_name$&lt;/code>（将被副本中命名列的值替换）&lt;/td>
&lt;td>&lt;code>https://myapp.acme.com/display/server/$replica-&amp;gt;primary_key$&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>数据表&lt;/td>
&lt;td>可选&lt;/td>
&lt;td>存储副本信息的 MySQL 表名。如果省略，系统将为您生成一个唯一名称&lt;/td>
&lt;td>synchro_data_servers_from_sccs&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h3 id="搜索与协调">搜索与协调&lt;/h3>
&lt;p>属性的这一部分定义了：&lt;/p>
&lt;ul>
&lt;li>副本表中的信息如何与 iTop 数据库的内容匹配&lt;/li>
&lt;li>此同步数据源关于创建新 iTop 对象的行为&lt;/li>
&lt;/ul>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>属性&lt;/th>
&lt;th>含义&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>协调策略&lt;/td>
&lt;td>&lt;strong>使用属性&lt;/strong>（use_attributes）：创建新副本时，系统将根据设置了&amp;quot;协调&amp;quot;标志为&amp;quot;是&amp;quot;的同步属性列表在 iTop 中搜索匹配对象。&lt;strong>使用主键&lt;/strong>（use_primary_key）：副本的 &lt;code>primary_key&lt;/code> 列预期包含 iTop 中对象的标识符。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>零个匹配时的操作&lt;/td>
&lt;td>协调在 iTop 中未找到任何对象时的操作。&lt;strong>创建&lt;/strong>（Create）指示系统创建目标类的新对象。&lt;strong>错误&lt;/strong>（Error）将导致系统将此情况报告为错误（即此同步数据源应仅更新现有对象）。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>一个匹配时的操作&lt;/td>
&lt;td>协调在 iTop 中找到一个匹配对象时的操作。&lt;strong>更新&lt;/strong>（Update）指示系统更新此对象。&lt;strong>错误&lt;/strong>（Error）将导致系统将此情况报告为错误（即此同步数据源应创建对象且从不更新现有对象）。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>多个匹配时的操作&lt;/td>
&lt;td>协调在 iTop 中找到多个匹配对象时的操作。&lt;strong>创建&lt;/strong>（Create）指示系统创建另一个对象。&lt;strong>错误&lt;/strong>（Error）将导致系统将此情况报告为错误。&lt;strong>取第一个&lt;/strong>（Take the first one）指示系统选择列表中的第一个对象并更新它。&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h3 id="删除规则">删除规则&lt;/h3>
&lt;p>此部分定义同步对象的删除处理方式：&lt;/p>
&lt;ul>
&lt;li>由 iTop 中的最终用户删除&lt;/li>
&lt;li>由同步系统本身删除&lt;/li>
&lt;/ul>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>属性&lt;/th>
&lt;th>含义&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>允许删除的用户&lt;/td>
&lt;td>哪些最终用户可以在 iTop 中删除同步对象。&lt;strong>无人&lt;/strong>（Nobody）：对象同步后，无人可以在 iTop 中删除它，只有同步系统可以删除它。&lt;strong>仅管理员&lt;/strong>（Administrators only）：只有管理员可以删除同步对象。&lt;strong>允许删除此类对象的所有人&lt;/strong>（Everybody allowed to delete such objects）：正常的访问规则适用于此类同步对象。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>全量加载间隔&lt;/td>
&lt;td>两次被认为是已加载（触及）所有副本的同步执行之间的持续时间。当副本在超过此值的时间内未被&lt;strong>触及&lt;/strong>时，它被视为过时。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>删除策略&lt;/td>
&lt;td>副本变为过时时执行的操作。&lt;strong>忽略&lt;/strong>（Ignore）：不执行任何操作，关联对象保持原样。&lt;strong>删除&lt;/strong>（Delete）：在 iTop 中删除关联对象（以及数据表中的副本）。&lt;strong>更新&lt;/strong>（Update）：按照下面的更新规则更新关联对象。&lt;strong>更新后删除&lt;/strong>（Update then Delete）：按照下面的更新规则更新关联对象，然后在保留持续时间后删除对象（及副本）。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>更新规则&lt;/td>
&lt;td>以分号分隔的值列表，格式为 &lt;code>attribute_code:value&lt;/code>，用于指定关联对象的哪个属性设置为哪个值。示例：&lt;code>status:obsolete;description:no longer synchronized&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>保留持续时间&lt;/td>
&lt;td>仅在删除策略设置为&amp;quot;更新后删除&amp;quot;时使用。在这种情况下，从源中删除的对象会立即更新，并且仅在保留持续时间后才从 iTop 中删除。&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>如果设置全量加载间隔为 7 天，保留持续时间为 14 天，则不再由源提供的对象将在 3 周后被删除。&lt;/p>
&lt;h3 id="属性">属性&lt;/h3>
&lt;p>&amp;ldquo;属性&amp;quot;选项卡定义：&lt;/p>
&lt;ul>
&lt;li>如何确定是否必须在 iTop 中创建新对象，或者是否必须将现有对象与副本关联（如果协调规则为属性中的&amp;quot;使用属性&amp;rdquo;）&lt;/li>
&lt;li>关联对象的哪些属性必须更新，以及如何更新&lt;/li>
&lt;/ul>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>属性选项卡&lt;/th>
&lt;th>用途&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>属性&lt;/td>
&lt;td>自动列出数据同步&amp;quot;目标类&amp;quot;的每个属性，及其标签和代码&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>协调&lt;/td>
&lt;td>指定此列中的值是否应用于检索现有的 iTop 对象。仅用于新副本&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>更新&lt;/td>
&lt;td>指定该 iTop 对象属性是否应由数据同步更新&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>更新策略&lt;/td>
&lt;td>指定该属性是否可以在 iTop 中编辑&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>协调键&lt;/td>
&lt;td>仅适用于外部键属性。指定用于检索远程对象的&lt;strong>一个&lt;/strong>属性。可以是 id 或作为远程类唯一标识符的字段&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h4 id="协调列">协调列&lt;/h4>
&lt;p>当新记录出现在 &lt;code>synchro_data_xxx&lt;/code> 表中时，同步机制将尝试将此记录与现有的 iTop 对象关联。如果一个或多个属性在&amp;quot;协调？&amp;ldquo;列中标记为&amp;quot;是&amp;rdquo;，这些列/属性将用于搜索匹配所有这些值的 iTop 对象。如果找到一个对象，它将成为与此记录关联的对象。如果未找到对象，将创建一个新的 iTop 对象。&lt;/p>
&lt;h4 id="更新列">更新列&lt;/h4>
&lt;p>更新列定义属性是否必须更新。&lt;/p>
&lt;ul>
&lt;li>选中 = 是：属性将被设置/更新&lt;/li>
&lt;li>未选中 = 否：此属性的外部源信息将被忽略，iTop 对象上的现有值将保持不变&lt;/li>
&lt;li>Null ⇒ 保留现有的 iTop 字段值&lt;/li>
&lt;li>空字符串 ⇒ 重置 iTop 对象字段&lt;/li>
&lt;/ul>
&lt;p>您必须使用自己的填充机制将 Null 值加载到 &lt;code>synchro_data_xxx&lt;/code> 表中，因为 &lt;code>synchro_import.php&lt;/code> 无法做到这一点。&lt;/p>
&lt;h4 id="更新策略列">更新策略列&lt;/h4>
&lt;p>更新策略列定义了在编辑 iTop 对象时更新属性的行为。可能的值包括：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>锁定&lt;/strong>（Locked）：属性将完全由数据同步驱动，在 iTop 用户界面中显示为只读（旁边有一个小锁图标）&lt;/li>
&lt;li>&lt;strong>解锁&lt;/strong>（Unlocked）：属性将由同步更新（每当源数据更改时），但最终用户仍可以在 iTop 中并行修改该属性&lt;/li>
&lt;li>&lt;strong>为空时初始化&lt;/strong>（Initialize if empty）：同步仅在该属性在 iTop 中的值为空时才设置值。该属性在 iTop 中保持可修改&lt;/li>
&lt;/ul>
&lt;h4 id="协调键列">协调键列&lt;/h4>
&lt;p>最后，协调键列定义如何处理引用另一个 iTop 对象的属性（即外键）。提供的数据可以包含外键的实际值（id）或另一个属性（如对象的名称），该属性必须唯一标识该对象。&lt;/p>
&lt;h3 id="状态">状态&lt;/h3>
&lt;p>状态选项卡显示有关同步执行的信息。如果同步从未运行，选项卡显示以下消息：&lt;/p>
&lt;pre tabindex="0">&lt;code>This synchro was never run. No log yet.
&lt;/code>&lt;/pre>&lt;p>否则，选项卡显示类似于下图的架构：&lt;/p>
&lt;h4 id="同步历史">同步历史&lt;/h4>
&lt;p>在屏幕左侧，每次同步执行都显示在历史列表中，显示总体状态、执行的开始日期和时间。&lt;/p>
&lt;p>单击此列表中的元素以在右侧两列中显示相应的状态详情。&lt;/p>
&lt;p>左侧列显示 &lt;code>synchro_data_xxxx&lt;/code> 表中记录的状态：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>新记录&lt;/strong>（New）：自上次执行同步以来添加到表中的记录&lt;/li>
&lt;li>&lt;strong>现有记录&lt;/strong>（Existing）：之前已存在且自上次执行同步以来已再次加载的记录&lt;/li>
&lt;li>&lt;strong>消失记录&lt;/strong>（Disappeared）：在超过 &lt;code>full_load_interval&lt;/code> 持续时间内未被加载的记录&lt;/li>
&lt;li>&lt;strong>忽略记录&lt;/strong>（Ignored）：对应于 iTop 中不再存在的对象&lt;/li>
&lt;/ul>
&lt;p>右侧列显示同步的后果，即对 iTop 中关联对象的修改。&lt;/p>
&lt;ul>
&lt;li>对于每个&lt;strong>新记录&lt;/strong>，后果可以是：在 iTop 中创建新对象（已创建）、更新 iTop 中已存在的对象（已更新）、与 iTop 中已是最新的对象简单关联（未更改），或尝试在 iTop 中创建或更新对象时出错（错误）&lt;/li>
&lt;li>对于每个&lt;strong>现有记录&lt;/strong>，后果可以是：更新关联对象（已更新）、完全无变化（未更改），或尝试更新关联对象时出错（错误）&lt;/li>
&lt;li>对于每个&lt;strong>消失记录&lt;/strong>，后果（取决于&amp;quot;删除规则&amp;quot;）可以是：在 iTop 中删除关联对象（已删除）、在 iTop 中更新关联对象（已更新）、在 iTop 中保持关联对象不变（无操作），或尝试在 iTop 中更新或删除关联对象时出错（错误）&lt;/li>
&lt;/ul>
&lt;h3 id="副本">副本&lt;/h3>
&lt;p>在 iTop 中，&lt;strong>副本&lt;/strong>用于存储状态信息以及 &lt;code>synchro_data_xxx&lt;/code> 表中加载的原始数据与关联 iTop 对象之间的关系。&lt;/p>
&lt;p>可以通过单击状态选项卡顶部的链接来显示给定数据同步源的副本。副本显示如下：&lt;/p>
&lt;p>副本的内容有助于理解数据同步机制的行为（并获取有关错误的更多信息），但其数据由同步维护，不应手动修改。&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>副本字段&lt;/th>
&lt;th>用途&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>同步数据源&lt;/td>
&lt;td>此副本所属的同步数据源&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>目标对象（ID）&lt;/td>
&lt;td>对应于该副本的 iTop 对象 id。当副本是新的且由于错误无法同步时，可以为空&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>目标类型&lt;/td>
&lt;td>同步数据源的目标类，也是目标对象的类&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>状态&lt;/td>
&lt;td>副本的状态：已修改、新建、过时、孤儿、已同步&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>最后出现&lt;/td>
&lt;td>该副本在源数据中最后一次出现的时间（相同的 &lt;code>primary_key&lt;/code>）&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>对象已创建？&lt;/td>
&lt;td>数据同步是否创建了 iTop 对象？&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>最后错误&lt;/td>
&lt;td>错误&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>警告&lt;/td>
&lt;td>发生某些非阻塞错误时的警告消息&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>创建日期&lt;/td>
&lt;td>同步数据源创建 iTop 对象的时间&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>最后修改日期&lt;/td>
&lt;td>该副本最后一次被源修改的时间&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>副本状态&lt;/th>
&lt;th>含义&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>新建（New）&lt;/td>
&lt;td>新接收的副本。在 &lt;code>syncho_exec.php&lt;/code> 发生以创建 iTop 对象之前的临时状态&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>已修改（Modified）&lt;/td>
&lt;td>修改的副本。在 &lt;code>syncho_exec.php&lt;/code> 发生以更新 iTop 对象之前的临时状态&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>已同步（Synchronized）&lt;/td>
&lt;td>副本和 iTop 对象已对齐&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>过时（Obsolete）&lt;/td>
&lt;td>数据中不再在源中，iTop 对象未被删除，否则副本也会被删除&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>孤儿（Orphan）&lt;/td>
&lt;td>这不应该发生。在这种情况下，同步的 iTop 对象已消失，同时未删除副本。此类副本可以安全地手动删除&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h2 id="使用-mysql-语句填充-synchro_data_xxxx-表">使用 MySQL 语句填充 synchro_data_xxxx 表&lt;/h2>
&lt;p>如果您使用 SQL 命令（使用 ETL 或自制脚本）填充 &lt;code>synchro_data_xxx&lt;/code> 表，您&lt;strong>必须&lt;/strong>注意永远不要创建重复记录。请记住，&lt;code>synchro_data_xxx&lt;/code> 表中的每条记录恰好对应 iTop 中的一个对象。&lt;/p>
&lt;p>为了避免此类重复，您&lt;strong>必须&lt;/strong>首先在插入新记录到表中之前查询现有记录。为了加速此查询，您可以构造一个唯一标识&amp;quot;源&amp;quot;对象的值并将此值存储在表的 &amp;ldquo;primary_key&amp;rdquo; 列中（该列具有唯一索引），或者使用记录列的任何组合并更改 &lt;code>synchro_data_xxxx&lt;/code> 表的定义以添加您自己的索引。&lt;/p>
&lt;p>然后触发 iTop 对象与临时表&lt;strong>副本&lt;/strong>之间的数据同步执行，通过执行页面 &lt;code>synchro/synchro_exec.php&lt;/code>，可以在命令行模式下执行，或通过调用网页（例如使用 wget）来执行。&lt;/p>
&lt;h2 id="使用-synchro_import-填充-synchro_data_xxxx-表">使用 synchro_import 填充 synchro_data_xxxx 表&lt;/h2>
&lt;p>请参阅：&lt;a href="../02-data_synchronization/">synchro_import.php&lt;/a>&lt;/p>
&lt;h2 id="如何指定相关对象列表链接集">如何指定相关对象列表（链接集）&lt;/h2>
&lt;p>某些类具有称为&lt;strong>链接集&lt;/strong>的属性。示例：&lt;code>UserLocal.profile_list&lt;/code>&lt;/p>
&lt;p>您可以通过在相应列中写入所有信息来同步这些列表：&lt;/p>
&lt;p>以下是指定登录将具有一个配置文件：&amp;lsquo;Portal User&amp;rsquo; 的示例&lt;/p>
&lt;pre tabindex="0">&lt;code>INSERT login, profile_list INTO data_synchro_userlocal_1 VALUES (&amp;#39;johndoe&amp;#39;, &amp;#39;profileid-&amp;gt;name:Portal User;reason:Customer&amp;#39;)...;
&lt;/code>&lt;/pre>&lt;p>您还可以指定多个链接（多个配置文件）。&lt;/p>
&lt;p>有关更多信息，请参阅&lt;a href="../import_a_link_set/">导入链接集&lt;/a>。&lt;/p>
&lt;h2 id="故障排除">故障排除&lt;/h2>
&lt;p>请参阅&lt;a href="../03-data_synchronization-troubleshooting/">数据同步故障排除&lt;/a>&lt;/p>
&lt;hr>
&lt;p>原文：&lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:advancedtopics:data_synchronization">https://www.itophub.io/wiki/page?id=3_2_0:advancedtopics:data_synchronization&lt;/a>&lt;/p>
&lt;p>版本：3_2_0/advancedtopics/data_synchronization.txt · Last modified: 2024/10/28 12:21 by 127.0.0.1&lt;/p></description></item><item><title>Docs: 同步故障排除</title><link>/docs/integration/03-data_synchronization-troubleshooting/</link><pubDate>Fri, 27 Jun 2025 00:00:00 +0000</pubDate><guid>/docs/integration/03-data_synchronization-troubleshooting/</guid><description>
&lt;div class="pageinfo pageinfo-primary">
&lt;p>数据同步过程中的常见问题及解决方法。&lt;/p>
&lt;/div>
&lt;h2 id="建议">建议&lt;/h2>
&lt;h3 id="选择-primary_key">选择 primary_key&lt;/h3>
&lt;p>使用每个值都唯一且稳定的 &lt;code>primary_key&lt;/code> 至关重要。&lt;/p>
&lt;ul>
&lt;li>确保&lt;strong>永远&lt;/strong>不会有 2 个源对象共享相同的 &lt;code>primary_key&lt;/code> 值。&lt;/li>
&lt;li>确保源对象永远不会在源中修改其 &lt;code>primary_key&lt;/code>。&lt;/li>
&lt;/ul>
&lt;p>&lt;code>primary_key&lt;/code> 字段必须在源数据的&lt;strong>单列&lt;/strong>中提供。如果要使用源字段的组合，请让源应用程序将它们连接成单个列。&lt;/p>
&lt;h3 id="协调属性">协调属性&lt;/h3>
&lt;p>如何在源数据同步上选择&lt;strong>协调属性&lt;/strong>：&lt;/p>
&lt;ul>
&lt;li>如果源应用程序是该类的主控（iTop 中不能直接创建该类的对象），则使用 &lt;code>primary_key&lt;/code> 进行协调，或者更准确地说，使用具有相同信息的列。将源应用程序的 &lt;code>primary_key&lt;/code> 存储在 iTop 对象字段中可以大大简化未来的故障排除。在这种情况下，源数据必须在 2 个不同的列中复制 &lt;code>primary_key&lt;/code> 列，第一个用作同步副本对象的 &lt;code>primary_key&lt;/code>，另一个用于更新 iTop 对象字段。&lt;/li>
&lt;li>否则，如果您选择可以在源中修改的 iTop 属性：这些&lt;strong>协调&lt;/strong>属性&lt;strong>必须由数据同步更新并锁定&lt;/strong>！仅当您确定它们在源中&lt;strong>无法修改&lt;/strong>时才不需要。&lt;/li>
&lt;/ul>
&lt;h2 id="内部处理">内部处理&lt;/h2>
&lt;h3 id="数据源导入">数据源导入&lt;/h3>
&lt;p>运行 &lt;code>synchro_import.php&lt;/code> 或使用您自己的进程更新 &lt;code>synchro_data_xxx&lt;/code> 表时，MySQL 会触发一些后台行为：&lt;/p>
&lt;ul>
&lt;li>更新与 &lt;code>synchro_data_xxx&lt;/code> 中每个更新行关联的 SynchroReplica 对象：&lt;code>status_last_seen = now&lt;/code>，&lt;code>status = 'modified'&lt;/code>&lt;/li>
&lt;li>为 &lt;code>synchro_data_xxx&lt;/code> 中每个创建的行创建 SynchroReplica 对象：&lt;code>status_last_seen = now&lt;/code>，&lt;code>status = 'new'&lt;/code>&lt;/li>
&lt;/ul>
&lt;h3 id="同步数据">同步数据&lt;/h3>
&lt;h4 id="处理未看到的副本">处理未看到的副本&lt;/h4>
&lt;p>对于以下副本：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-sql" data-lang="sql">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">SELECT&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">SynchroReplica&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">WHERE&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">sync_source_id&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#000">source_id&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">AND&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">STATUS&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">IN&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;new&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#39;synchronized&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#39;modified&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#39;orphan&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">)&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">AND&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">status_last_seen&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">&amp;lt;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">now&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#a40000">–&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#000">full_load_interval&lt;/span>&lt;span style="color:#000;font-weight:bold">)&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>更新 SynchroReplica：&lt;/p>
&lt;ul>
&lt;li>&lt;code>status = 'obsolete'&lt;/code>&lt;/li>
&lt;li>如果删除策略 = &amp;ldquo;更新&amp;rdquo; 或 &amp;ldquo;更新后删除&amp;rdquo;：使用更新规则更新 iTop 对象，更新 SynchroReplica 的 &lt;code>info_last_modified = Now&lt;/code>&lt;/li>
&lt;/ul>
&lt;h4 id="处理新副本">处理新副本&lt;/h4>
&lt;p>对于每个状态为 &amp;rsquo;new&amp;rsquo; 的 SynchroReplica，我们在 iTop 中搜索与源行具有相同值的每个协调 = &amp;lsquo;yes&amp;rsquo; 的数据同步属性的对象：&lt;/p>
&lt;ul>
&lt;li>如果&lt;strong>未找到&lt;/strong>对象（或多个匹配且&amp;quot;多个匹配时的操作&amp;quot; = &amp;ldquo;创建&amp;rdquo;）：我们创建一个新的 iTop 对象。如果创建成功，我们更新 SynchroReplica：&lt;code>info_creation_date = now&lt;/code>，&lt;code>dest_id = 刚创建对象的 id&lt;/code>，&lt;code>status_dest_creator = 'yes'&lt;/code>，&lt;code>status = 'synchronized'&lt;/code>。如果创建失败，我们更新 SynchroReplica：&lt;code>status_last_error = 失败创建的错误消息&lt;/code>&lt;/li>
&lt;li>如果找到&lt;strong>一个&lt;/strong>对象（或多个匹配且&amp;quot;多个匹配时的操作&amp;quot; = &amp;ldquo;取第一个&amp;rdquo;）：更新 SynchroReplica：&lt;code>dest_id = 检索到的对象的 id&lt;/code>，&lt;code>status_dest_creator = 'no'&lt;/code>，&lt;code>status = 'synchronized'&lt;/code>。更新 iTop 关联对象。如果成功，更新 SynchroReplica 的 &lt;code>info_last_modified = now&lt;/code>。如果失败，更新 SynchroReplica 的 &lt;code>status_last_warning = 失败更新的错误消息&lt;/code>&lt;/li>
&lt;li>如果找到&lt;strong>多个&lt;/strong>对象且&amp;quot;多个匹配时的操作&amp;quot; = &amp;ldquo;错误&amp;rdquo;：更新 SynchroReplica 的 &lt;code>status_last_warning = &amp;quot;n 个目标对象匹配协调条件：xxxxxxxx&amp;quot;&lt;/code>&lt;/li>
&lt;/ul>
&lt;h4 id="处理更新的副本">处理更新的副本&lt;/h4>
&lt;p>对于每个状态为 &amp;ldquo;modified&amp;rdquo; 的 SynchroReplica：&lt;/p>
&lt;ul>
&lt;li>更新 iTop 关联对象。如果成功，更新 SynchroReplica：&lt;code>info_last_modified = now&lt;/code>，&lt;code>status = 'synchronized'&lt;/code>。如果失败，更新 SynchroReplica：&lt;code>status_last_warning = 失败更新的错误消息&lt;/code>&lt;/li>
&lt;/ul>
&lt;h4 id="处理过时的副本">处理过时的副本&lt;/h4>
&lt;p>对于每个应该应用删除策略的 &amp;lsquo;obsolete&amp;rsquo; 副本：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-sql" data-lang="sql">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">SELECT&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">SynchroReplica&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">WHERE&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">sync_source_id&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#000">source_id&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">AND&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">STATUS&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">IN&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;obsolete&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">)&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">AND&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">status_last_seen&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">&amp;lt;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">now&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">_&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#000">retention_delay&lt;/span>&lt;span style="color:#000;font-weight:bold">)&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>如果删除策略 = &amp;ldquo;更新&amp;rdquo; 或 &amp;ldquo;更新后删除&amp;rdquo;：删除 iTop 对象，删除对应的 SynchroReplica(s)，删除 &lt;code>synchro_data_xxx&lt;/code> 表中对应的行&lt;/li>
&lt;/ul>
&lt;h2 id="常见问题">常见问题&lt;/h2>
&lt;h3 id="非唯一-primary_key">非唯一 primary_key&lt;/h3>
&lt;p>如果源中多个对象共享相同的 primary_key，您将遇到严重麻烦。这些具有相同 primary_key 的各种对象都将更新同一个 iTop 对象。该 iTop 对象将在每次源对象更改时发生变化，而您不会理解原因。&lt;/p>
&lt;h3 id="非稳定-primary_key">非稳定 primary_key&lt;/h3>
&lt;p>为源数据选择的 &lt;code>primary_key&lt;/code> 必须是稳定的，对于任何给定对象都永远不会改变。&lt;/p>
&lt;h4 id="为什么-primary_key-不能在源中更改">为什么 primary_key 不能在源中更改？&lt;/h4>
&lt;p>假设您有一个数据同步，用于 Person，其中您在源中提供了 &lt;code>primary_key&lt;/code>（人员的电子邮件），但将协调键设置为：&lt;code>name + firstname + org_id&lt;/code>。&lt;/p>
&lt;ul>
&lt;li>您运行第一次同步：在源中，我们有一行 primary_key 为 &lt;code>smith@biz.com&lt;/code> 的记录。此行创建一个新的 SynchroReplica，然后创建或更新一个具有该电子邮件的 iTop Person：Alex Smith。&lt;/li>
&lt;li>稍后，在您的源应用程序中，人员的电子邮件由于某种原因从 &lt;code>smith@biz.com&lt;/code> 更改为 &lt;code>alex.smith@biz.com&lt;/code>，并启动同步：由于电子邮件是源的 &amp;lsquo;primary_key&amp;rsquo;，该新电子邮件在 &lt;code>synchro_data_xxx&lt;/code> 源表中显示为新行，因此创建新的 SynchroReplica：&lt;code>alex.smith@biz.com&lt;/code>。新的 SynchroReplica 映射到现有的 iTop Person：Alex Smith，并修改其电子邮件。旧的 SynchroReplica：&lt;code>smith@biz.com&lt;/code> 不再在源中，并被标记为过时。它仍然映射到同一个 iTop Person：Alex Smith。&lt;/li>
&lt;li>一些同步后，在删除策略过期延迟时：旧的过时 SynchroReplica：&lt;code>smith@biz.com&lt;/code> 更新 iTop Person Alex Smith，例如将其状态设置为 inactive。与此同时，新的 SynchroReplica：&lt;code>alex.smith@biz.com&lt;/code> 保持不变，因为源中没有任何变化，它不更新 iTop Person。&lt;/li>
&lt;li>更多同步后，在保留持续时间过期时：旧的过时 SynchroReplica：&lt;code>smith@biz.com&lt;/code> 删除 iTop Person Alex Smith。作为反作用，该删除同时删除了两个 SynchroReplica：&lt;code>smith@biz.com&lt;/code> 和 &lt;code>alex.smith@biz.com&lt;/code>。&lt;/li>
&lt;li>随后的同步：重新创建 SynchroReplica：&lt;code>alex.smith@biz.com&lt;/code>，并重新创建 iTop Person Alex Smith（假设数据同步可以创建 iTop 对象）。但之前 Alex Smith 的所有关系都丢失了，他创建的工单、他的团队等等&amp;hellip;&lt;/li>
&lt;/ul>
&lt;h4 id="如果已经选择了错误的-primary_key-怎么办">如果已经选择了错误的 primary_key 怎么办？&lt;/h4>
&lt;p>如果您已经使用 Person 电子邮件设置了数据同步，但后来注意到这是一个问题，因为您公司的电子邮件地址不稳定，并且正在产生上述问题。那么您考虑使用源应用程序 Person Id，这在您的世界中是一个稳定的值。它可能是稳定的，因为该源应用程序是处理您公司人员的主应用程序，每个新人员都在那里创建，每个更改都在那里进行。无论电子邮件更改、姓氏更改或组织更改如何，人员 id 都保持不变。&lt;/p>
&lt;p>在这种情况下，创建一个新的数据同步源并删除前一个。&lt;/p>
&lt;ul>
&lt;li>旧数据同步创建的对象不会被标记为由新数据同步创建，&lt;/li>
&lt;li>因此这将防止数据同步删除对象。&lt;/li>
&lt;/ul>
&lt;h3 id="未检索到的-externalkey">未检索到的 ExternalKey&lt;/h3>
&lt;p>尝试使用包含提供的源信息的协调键字段检索远程 iTop 对象时，该搜索可能会失败，要么是因为没有匹配的对象，要么是因为有多个匹配的对象。如果 ExternalKey 是同步对象的必填字段，这将生成错误，否则只是警告，ExternalKey 将被清空。&lt;/p>
&lt;pre tabindex="0">&lt;code>Could not find [unique] object for &amp;#39;manager_id&amp;#39;: searched on friendlyname = &amp;#39;Bob Smith&amp;#39;
&lt;/code>&lt;/pre>&lt;h3 id="无效的枚举值">无效的枚举值&lt;/h3>
&lt;p>如果对于同步对象的枚举属性，源提供了无效值，例如 &amp;ldquo;空字符串&amp;rdquo;，这&lt;strong>永远&lt;/strong>不是有效的枚举值，那么根据枚举属性是否为必填项，您将获得警告或错误。&lt;/p>
&lt;pre tabindex="0">&lt;code>Unable to update destination object: Unexpected value for attribute &amp;#39;status&amp;#39;: Null not allowed:
issues = {0=&amp;gt;Unexpected value for attribute &amp;#39;status&amp;#39;: Null not allowed}, class = Person, id = 14
&lt;/code>&lt;/pre>&lt;h3 id="大多数副本变为过时">大多数副本变为过时&lt;/h3>
&lt;p>如果您的数据同步突然似乎使所有副本都过时了，可能的根本原因是同步表上的 SQL 触发器不再存在。&lt;/p>
&lt;ul>
&lt;li>对表的不同命令可以删除它们，&lt;/li>
&lt;li>数据库的备份/恢复也可能丢失它们，如果执行备份的用户没有足够的权限。&lt;/li>
&lt;/ul>
&lt;p>要检查 MySQL 触发器是否仍然存在，请运行此 MySQL 命令：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-sql" data-lang="sql">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">show&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">triggers&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">like&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#39;%synchro_data_xxx%&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>其中 &lt;code>synchro_data_xxx&lt;/code> 是您的数据同步表的名称。&lt;/p>
&lt;p>每个 synchro_data 表应该有 3 个触发器。如果它们消失了，请参阅下面的提示来修复。&lt;/p>
&lt;h2 id="提示">提示&lt;/h2>
&lt;h3 id="恢复-mysql-触发器">恢复 MySQL 触发器&lt;/h3>
&lt;p>如果触发器丢失，可以通过重新保存数据源来重新创建它们。在 iTop 中打开数据源，点击&amp;quot;修改&amp;quot;，然后直接点击&amp;quot;应用&amp;quot;（无需进行任何更改）。这将触发 iTop 重新创建缺失的触发器。&lt;/p>
&lt;h3 id="删除数据同步">删除数据同步&lt;/h3>
&lt;p>不建议删除数据同步并从头创建一个新的，特别是如果您的数据同步预期会删除 iTop 对象（现在或将来），因为此功能将会丢失。新的数据同步不会删除您在重新创建数据同步当天 iTop 中已经存在的对象。&lt;/p>
&lt;p>如果不是这种情况，没有重大后果，只是在删除和新创建的同步上执行 synchro_import 之间的期间，某些用户可能已经修改了 iTop 对象，因为它们不再被锁定，对于同步锁定的字段，他们的更改将被覆盖，因此没有数据问题，只是用户体验有些奇怪&amp;hellip;&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-sql" data-lang="sql">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">DELETE&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">FROM&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">priv_sync_datasource&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">WHERE&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">id&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">x&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">DELETE&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">FROM&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">priv_sync_replica&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">where&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">sync_source_id&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#000">x&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">DELETE&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">FROM&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">priv_sync_log&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">where&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">sync_source_id&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#000">x&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">DELETE&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">FROM&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">priv_sync_att_linkset&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">where&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">sync_source_id&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#000">x&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">DELETE&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">FROM&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">priv_sync_att_extkey&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">where&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">sync_source_id&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#000">x&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">DELETE&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">FROM&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">priv_sync_att&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">where&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">sync_source_id&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#000">x&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">DROP&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">table&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">synchro_data_xxx&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;hr>
&lt;p>原文：&lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:advancedtopics:data_synchronization-troubleshooting">https://www.itophub.io/wiki/page?id=3_2_0:advancedtopics:data_synchronization-troubleshooting&lt;/a>&lt;/p>
&lt;p>版本：3_2_0/advancedtopics/data_synchronization-troubleshooting.txt · Last modified: 2024/09/10 10:25 by 127.0.0.1&lt;/p></description></item><item><title>Docs: 导出数据 (export-v2.php)</title><link>/docs/integration/04-export-data/</link><pubDate>Fri, 27 Jun 2025 00:00:00 +0000</pubDate><guid>/docs/integration/04-export-data/</guid><description>
&lt;div class="pageinfo pageinfo-primary">
&lt;p>iTop 提供通用的 Web 服务 &lt;code>export-v2.php&lt;/code>，基于 OQL 查询导出数据，用于与第三方工具集成。支持格式：HTML、CSV、XML、Spreadsheet、XLSX、PDF&lt;/p>
&lt;/div>
&lt;h2 id="调用方式">调用方式&lt;/h2>
&lt;h3 id="命令行">命令行&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>php /var/www/itop/webservices/export-v2.php --auth_user&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>login --auth_pwd&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>password --expression&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;SELECT Server&amp;#34;&lt;/span> --format&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>csv --fields&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>name,brand,model
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="远程-http">远程 HTTP&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"># Basic 认证&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>wget --http-user&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>login --http-password&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>password &lt;span style="color:#4e9a06">&amp;#34;http://itopserver/webservices/export-v2.php?expression=SELECT+Server&amp;amp;format=csv&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"># Token 认证&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>wget --post-data&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;--auth-token=YOURTOKEN&amp;#39;&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;http://itopserver/webservices/export-v2.php?expression=SELECT+Server&amp;amp;format=csv&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="参数">参数&lt;/h2>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>参数&lt;/th>
&lt;th>描述&lt;/th>
&lt;th>默认值&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>param_file&lt;/td>
&lt;td>参数文件&lt;/td>
&lt;td>-&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>expression&lt;/td>
&lt;td>OQL 查询&lt;/td>
&lt;td>与 query 二选一&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>query&lt;/td>
&lt;td>&lt;a href="../../admin/04-phrasebook/">查询手册&lt;/a>中保存的查询 ID&lt;/td>
&lt;td>与 expression 二选一&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>format&lt;/td>
&lt;td>&lt;code>html&lt;/code>/&lt;code>csv&lt;/code>/&lt;code>xml&lt;/code>/&lt;code>spreadsheet&lt;/code>/&lt;code>xlsx&lt;/code>/&lt;code>pdf&lt;/code>&lt;/td>
&lt;td>html&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>fields&lt;/td>
&lt;td>逗号分隔的属性列表（支持 &lt;code>caller_id-&amp;gt;org_id-&amp;gt;code&lt;/code>）&lt;/td>
&lt;td>类的所有属性&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>with_archive&lt;/td>
&lt;td>&lt;code>1&lt;/code> 包含归档对象&lt;/td>
&lt;td>0&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>arg_xxx&lt;/td>
&lt;td>OQL 参数 xxx 的值&lt;/td>
&lt;td>无&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;blockquote>
&lt;p>输出字段顺序遵循 &lt;code>fields&lt;/code> 参数中的顺序。扩展属性码可能显著降低导出速度。&lt;/p>
&lt;/blockquote>
&lt;h2 id="输出格式">输出格式&lt;/h2>
&lt;h3 id="html">HTML&lt;/h3>
&lt;p>HTML 格式将输出作为 HTML 表格提供。&lt;/p>
&lt;h3 id="spreadsheet">Spreadsheet&lt;/h3>
&lt;p>推荐用于 Excel Web 查询集成。&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>参数&lt;/th>
&lt;th>描述&lt;/th>
&lt;th>默认值&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>date_format&lt;/td>
&lt;td>日期格式&lt;/td>
&lt;td>同 GUI&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>formatted_text&lt;/td>
&lt;td>导出富文本标记&lt;/td>
&lt;td>1&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>no_localize&lt;/td>
&lt;td>使用内部代码和值&lt;/td>
&lt;td>0&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h3 id="xml">XML&lt;/h3>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>参数&lt;/th>
&lt;th>描述&lt;/th>
&lt;th>默认值&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>linksets&lt;/td>
&lt;td>&lt;code>1&lt;/code> 检索关联对象&lt;/td>
&lt;td>0&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>no_localize&lt;/td>
&lt;td>使用内部代码和值&lt;/td>
&lt;td>0&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;blockquote>
&lt;p>XML 格式忽略 &lt;code>fields&lt;/code> 参数，始终检索所有字段。&lt;/p>
&lt;/blockquote>
&lt;p>XML 输出示例：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-xml" data-lang="xml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&amp;lt;?xml version=&amp;#34;1.0&amp;#34; encoding=&amp;#34;UTF-8&amp;#34;?&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">&amp;lt;Set&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;Server&lt;/span> &lt;span style="color:#c4a000">alias=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;Server&amp;#34;&lt;/span> &lt;span style="color:#c4a000">id=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;1&amp;#34;&lt;/span>&lt;span style="color:#204a87;font-weight:bold">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;name&amp;gt;&lt;/span>Server1&lt;span style="color:#204a87;font-weight:bold">&amp;lt;/name&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;description&amp;gt;&amp;lt;/description&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;org_id&amp;gt;&lt;/span>3&lt;span style="color:#204a87;font-weight:bold">&amp;lt;/org_id&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;org_id_friendlyname&amp;gt;&lt;/span>Demo&lt;span style="color:#204a87;font-weight:bold">&amp;lt;/org_id_friendlyname&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;organization_name&amp;gt;&lt;/span>Demo&lt;span style="color:#204a87;font-weight:bold">&amp;lt;/organization_name&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;status&amp;gt;&lt;/span>production&lt;span style="color:#204a87;font-weight:bold">&amp;lt;/status&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ...
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;/Server&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">&amp;lt;/Set&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="csv">CSV&lt;/h3>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>参数&lt;/th>
&lt;th>描述&lt;/th>
&lt;th>默认值&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>charset&lt;/td>
&lt;td>字符编码&lt;/td>
&lt;td>UTF-8&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>separator&lt;/td>
&lt;td>分隔符&lt;/td>
&lt;td>,&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>text-qualifier&lt;/td>
&lt;td>文本限定符&lt;/td>
&lt;td>&amp;quot;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>date_format&lt;/td>
&lt;td>日期格式&lt;/td>
&lt;td>同 GUI&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>formatted_text&lt;/td>
&lt;td>导出富文本标记&lt;/td>
&lt;td>0&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>no_localize&lt;/td>
&lt;td>使用内部代码和值&lt;/td>
&lt;td>0&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>CSV 示例：&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-csv" data-lang="csv">id,Name,Management IP
1,&amp;#34;dbserver1.demo.com&amp;#34;,&amp;#34;10.1.1.10&amp;#34;
6,&amp;#34;webserver.demo.com&amp;#34;,&amp;#34;10.1.1.20&amp;#34;
&lt;/code>&lt;/pre>&lt;h3 id="xlsx">XLSX&lt;/h3>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>参数&lt;/th>
&lt;th>描述&lt;/th>
&lt;th>默认值&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>date_format&lt;/td>
&lt;td>日期格式&lt;/td>
&lt;td>同 GUI&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>formatted_text&lt;/td>
&lt;td>导出富文本标记&lt;/td>
&lt;td>0&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h3 id="pdf">PDF&lt;/h3>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>参数&lt;/th>
&lt;th>描述&lt;/th>
&lt;th>默认值&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>date_format&lt;/td>
&lt;td>日期格式&lt;/td>
&lt;td>同 GUI&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>page_size&lt;/td>
&lt;td>A3/A4/Letter&lt;/td>
&lt;td>A4&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>page_orientation&lt;/td>
&lt;td>Landscape/Portrait&lt;/td>
&lt;td>Portrait&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;blockquote>
&lt;p>PDF 适合 &amp;lt;10 列，列多时建议 Landscape。&lt;/p>
&lt;/blockquote>
&lt;h2 id="权限要求">权限要求&lt;/h2>
&lt;ul>
&lt;li>门户用户不允许访问此服务&lt;/li>
&lt;li>用户必须在指定类上有 &lt;code>bulk read&lt;/code> 权限&lt;/li>
&lt;/ul>
&lt;h2 id="历史版本">历史版本&lt;/h2>
&lt;ul>
&lt;li>0.9：首次实现此功能&lt;/li>
&lt;li>1.2.1：添加参数 &lt;code>query&lt;/code>，作为 &lt;code>expression&lt;/code> 的替代&lt;/li>
&lt;li>1.2.1：添加格式 &lt;code>spreadsheet&lt;/code>，拆分日期和时间列&lt;/li>
&lt;li>2.0：添加标志 &lt;code>no_localize&lt;/code>&lt;/li>
&lt;li>2.1.0：添加 XLSX 格式&lt;/li>
&lt;li>2.2.0：通过创建新的 &lt;code>export-v2.php&lt;/code> 页面重新设计导出功能&lt;/li>
&lt;/ul>
&lt;hr>
&lt;p>原文：&lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:advancedtopics:exportdata">https://www.itophub.io/wiki/page?id=3_2_0:advancedtopics:exportdata&lt;/a>&lt;/p>
&lt;p>版本：3_2_0/advancedtopics/exportdata.txt · Last modified: 2026/03/10 13:11 by 127.0.0.1&lt;/p></description></item><item><title>Docs: CLI 数据导入</title><link>/docs/integration/05-importcli/</link><pubDate>Fri, 27 Jun 2025 00:00:00 +0000</pubDate><guid>/docs/integration/05-importcli/</guid><description>
&lt;div class="pageinfo pageinfo-primary">
&lt;p>iTop 提供命令行工具 &lt;code>import.php&lt;/code>，通过 CSV 文件批量导入数据。&lt;/p>
&lt;/div>
&lt;h2 id="用途">用途&lt;/h2>
&lt;p>iTop 提供了一个通用的 Web 服务，用于基于源 CSV 文件将数据导入 iTop。此服务可以在服务器上通过命令行界面本地使用，也可以通过 HTTP POST 请求远程使用。&lt;/p>
&lt;p>使用此服务，您可以轻松地通过批处理脚本将数据导入 iTop，该脚本从第三方工具提取数据并生成 CSV 格式文件。例如，一个从 Active Directory 提取联系人列表的脚本。&lt;/p>
&lt;p>当需要导入真正大量的数据时，CLI 模式是必须的，因为您不会达到 Web 服务器的限制（超时和内存限制）。&lt;/p>
&lt;h2 id="用法">用法&lt;/h2>
&lt;h3 id="命令行界面">命令行界面&lt;/h3>
&lt;p>命令行的所有参数都在后面的“参数”部分列出。以下行是必填参数的示例。所有参数都以 &lt;code>--&lt;/code> 开头。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>php /var/www/itop/webservices/import.php --auth_user&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>login --auth_pwd&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>password --class&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>Organization --csvfile&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>file --reconciliationkeys&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;list of keys&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>协调键对于唯一标识要导入到 iTop 的元素非常重要。协调键必须存在于数据文件中。与交互式 CSV 导入不同，您不限于类定义的默认协调键列表。&lt;/p>
&lt;p>此外，外部键将通过协调方案中指定的所有属性来唯一标识。在我们的示例中，如果您认为 Name/Country 唯一标识位置，则在协调方案中同时使用 Location-&amp;gt;Name 和 Location-&amp;gt;Country。&lt;/p>
&lt;h2 id="参数">参数&lt;/h2>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>参数&lt;/th>
&lt;th>描述&lt;/th>
&lt;th>默认值&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>param_file&lt;/td>
&lt;td>参数文件&lt;/td>
&lt;td>-&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>auth_user&lt;/td>
&lt;td>用户登录名 - 仅限 CLI 模式&lt;/td>
&lt;td>-&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>auth_pwd&lt;/td>
&lt;td>用户密码 - 仅限 CLI 模式&lt;/td>
&lt;td>-&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>class&lt;/td>
&lt;td>加载对象的类&lt;/td>
&lt;td>必填！&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>csvdata&lt;/td>
&lt;td>CSV 内容（仅限 HTTP 模式，数据可以通过此页面参数发布）&lt;/td>
&lt;td>HTTP 模式下必填&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>csvfile&lt;/td>
&lt;td>源文件的路径和名称&lt;/td>
&lt;td>CLI 模式下必填&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>charset&lt;/td>
&lt;td>CSV 数据的字符集编码：UTF-8、ISO-8859-1、WINDOWS-1251、WINDOWS-1252、ISO-8859-15&lt;/td>
&lt;td>使用 iTop 配置文件中的 &lt;code>csv_file_default_charset&lt;/code>，默认值为 &amp;lsquo;ISO-8859-1&amp;rsquo;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>date_format&lt;/td>
&lt;td>输入日期格式（用于日期和日期时间）- 示例：Y-m-d、d/m/Y（法国）&lt;/td>
&lt;td>&amp;lt;空白&amp;gt;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>separator&lt;/td>
&lt;td>CSV 数据中的列分隔符&lt;/td>
&lt;td>,（逗号）&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>qualifier&lt;/td>
&lt;td>CSV 数据中的文本限定符&lt;/td>
&lt;td>&amp;ldquo;（双引号）&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>output&lt;/td>
&lt;td>&lt;code>retcode&lt;/code> 返回错误行数，&lt;code>summary&lt;/code> 返回简洁报告，&lt;code>details&lt;/code> 获取详细报告（列出每一行）&lt;/td>
&lt;td>summary&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>reconciliationkeys&lt;/td>
&lt;td>用于标识现有对象并更新它们或创建新对象的列标签或代码（取决于 &lt;code>no_localize&lt;/code> 标志）（逗号分隔）&lt;/td>
&lt;td>&amp;lt;空白&amp;gt;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>simulate&lt;/td>
&lt;td>如果设置为 1，则加载不会执行，但会生成预期报告&lt;/td>
&lt;td>0&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>with_archive&lt;/td>
&lt;td>如果设置为 1，则导入将检索归档对象作为要更新的对象和有效的外部键&lt;/td>
&lt;td>0&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>comment&lt;/td>
&lt;td>要添加到变更日志中的注释&lt;/td>
&lt;td>&amp;lt;空白&amp;gt;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>no_localize&lt;/td>
&lt;td>如果设置为 0，则列标题、值和协调键应使用登录用户的语言进行本地化。设置为 1 以使用内部属性代码和值（枚举）&lt;/td>
&lt;td>0 = 标签不区分大小写&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h2 id="输出">输出&lt;/h2>
&lt;p>命令行将返回一个摘要报告（见下文），总结导入使用的参数和导入结果：&lt;/p>
&lt;ul>
&lt;li>创建的元素数量&lt;/li>
&lt;li>更新的元素数量&lt;/li>
&lt;li>出错的元素数量&lt;/li>
&lt;/ul>
&lt;p>如果您为 &lt;code>output&lt;/code> 参数指定了 &lt;code>details&lt;/code> 选项，您将获得每个导入元素的一行及其导入状态（见下面的示例）。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>php /var/www/itop/webservices/import.php --auth_user&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>login --auth_pwd&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>password --class&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>Organization --csvfile&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>file --reconciliationkeys&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;list of keys&amp;#34;&lt;/span> --output&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>details
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="结果">结果&lt;/h3>
&lt;pre tabindex="0">&lt;code>#Output format: details
#Class: Organization
#Separator: ;
#Qualifier: \&amp;#34;
#Charset Encoding:UTF-8
#Data Size: 26
#Data Lines: 1
#Simulate: 0
#Columns: name, code
#Reconciliation Keys: name
#Change tracking comment:
#Issues: 0
#Warnings: 0
#Created: 1
#Updated: 0
#Unchanged: 0
Line;Status;Object Class;Object Id;name (Name);code (Code)
0;created;Organization;3;\&amp;#34;WorldCompany\&amp;#34;;\&amp;#34;WCY\&amp;#34;
&lt;/code>&lt;/pre>&lt;h2 id="可能的错误">可能的错误&lt;/h2>
&lt;h3 id="缺少参数">缺少参数&lt;/h3>
&lt;pre tabindex="0">&lt;code>ERROR: Missing argument &amp;#39;class&amp;#39;
&lt;/code>&lt;/pre>&lt;p>当缺少必填参数时显示此错误。&lt;/p>
&lt;h3 id="错误的参数">错误的参数&lt;/h3>
&lt;pre tabindex="0">&lt;code>#Unknown class: &amp;#39;toto&amp;#39;
&lt;/code>&lt;/pre>&lt;p>如果指定的类在 iTop 中不存在，则会发生此错误。请注意类名区分大小写。&lt;/p>
&lt;pre tabindex="0">&lt;code>#Unknown reconciliationkeys: &amp;#39;attribute&amp;#39;
&lt;/code>&lt;/pre>&lt;p>如果协调键列表中至少有一列未知，则会发生此错误。原因可能是：&lt;/p>
&lt;ul>
&lt;li>提供了代码而不是标签，或反之亦然&lt;/li>
&lt;li>协调键是外部字段&lt;/li>
&lt;li>协调键不在 csv 文件中&lt;/li>
&lt;/ul>
&lt;pre tabindex="0">&lt;code>#Unknown column: &amp;#39;Last Nme&amp;#39;
&lt;/code>&lt;/pre>&lt;p>如果 csv 文件中的列未知，则会发生此错误。&lt;/p>
&lt;h2 id="允许的用户">允许的用户&lt;/h2>
&lt;p>管理员始终被允许执行此页面。&lt;/p>
&lt;p>非管理员如果被允许修改给定类的对象，则将被允许执行。&lt;/p>
&lt;h2 id="导入图像和文件">导入图像和文件&lt;/h2>
&lt;p>某些类在其字段中包含图像或文件文档。例如，Person 类包含一个 Picture 字段，用于保存该人员的照片。交互式编辑 Person 时，用户可以从她的计算机上传图像以提供该人员的照片。但是，在执行 CSV 导入时，无法“上传”此类文件或将其内容放入 CSV 文件本身，因为 CSV 格式不支持此操作。&lt;/p>
&lt;p>在这种情况下，CSV 文件必须在适当的 CSV 列中提供一个 URL 来上传文件。此 URL 必须可以从 iTop 服务器访问，并返回预期的图像（或文件文档）。如果上传失败或上传文档的格式与字段的预期格式不匹配（例如，如果 URL 没有为 picture 字段返回图像），则此字段的导入/更新将失败（并且 CSV 的整行将被拒绝）。&lt;/p>
&lt;ul>
&lt;li>URL 必须直接指向要上传的图像（不支持重定向）&lt;/li>
&lt;li>URL 必须可以从 iTop Web 服务器访问（注意某些公共网站可能会拒绝访问 PHP 脚本 - 它们会检查 HTTP User Agent 字符串）&lt;/li>
&lt;li>URL 不需要身份验证，因为上传是由 iTop 服务器本身完成的&lt;/li>
&lt;li>指向 iTop 本身的 URL（如 CSV/Excel 导出提供的 URL）是支持的。但仅当它们指向同一个 iTop 实例时（在这种情况下，导入将解析提供的 URL 并从 iTop 数据库中读取文档）&lt;/li>
&lt;li>如果您使用管理员账户执行 CSV 导入，您可以指定位于 iTop 服务器本身的文件路径（但这仅适用于管理员）&lt;/li>
&lt;/ul>
&lt;p>引用已存储在 iTop 中另一个对象上的图像的示例。使用的语法：&lt;code>https://&amp;lt;your-itop&amp;gt;/pages/ajax.document.php?operation=download_document&amp;amp;class=&amp;lt;ObjectClass&amp;gt;&amp;amp;id=&amp;lt;ObjectId&amp;gt;&amp;amp;field=&amp;lt;FieldCode&amp;gt;&lt;/code>&lt;/p>
&lt;h2 id="用例将人员及其对应的登录导入-itop">用例：将人员及其对应的登录导入 iTop&lt;/h2>
&lt;p>此用例描述如何将人员和他们的登录导入 iTop。这是从 Active Directory 加载这些信息的一种方式。在这种情况下，您只需编写一个脚本，从 Active Directory 创建两个 csv 文件 person.csv 和 login.csv。&lt;/p>
&lt;h3 id="导入人员">导入人员&lt;/h3>
&lt;p>我们想创建两个联系人：&lt;/p>
&lt;ul>
&lt;li>属于组织 Demo 的 Claude Monet&lt;/li>
&lt;li>属于组织 IT Department 的 Gustave Flaubert&lt;/li>
&lt;/ul>
&lt;p>在此示例中，两个组织已存在于 iTop 中。&lt;/p>
&lt;p>要导入的类是 Person，csv 文件（login.csv）中的数据为：&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-csv" data-lang="csv">Last Name,Status,Organization-&amp;gt;Name,Email,Phone,Notification,Function,First Name
&amp;#34;Monet&amp;#34;,&amp;#34;Active&amp;#34;,&amp;#34;Demo&amp;#34;,&amp;#34;monet@demo.com&amp;#34;,&amp;#34;&amp;#34;,&amp;#34;yes&amp;#34;,&amp;#34;&amp;#34;,&amp;#34;Claude&amp;#34;
&amp;#34;Flaubert&amp;#34;,&amp;#34;Active&amp;#34;,&amp;#34;IT Department&amp;#34;,&amp;#34;flaubert@it.com&amp;#34;,&amp;#34;&amp;#34;,&amp;#34;yes&amp;#34;,&amp;#34;&amp;#34;,&amp;#34;Gustave&amp;#34;
&lt;/code>&lt;/pre>&lt;p>然后运行以下命令行：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>php webservices/import.php --auth_user&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>admin --auth_pwd&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>admin --csvfile&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;person.csv&amp;#34;&lt;/span> --class&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;Person&amp;#34;&lt;/span> --reconciliationkeys&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;Email&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="导入用户账户">导入用户账户&lt;/h3>
&lt;p>我们想创建两个用户账户：&lt;/p>
&lt;ul>
&lt;li>support 是配置经理和变更主管，与联系人 &lt;a href="mailto:flaubert@it.com">flaubert@it.com&lt;/a> 相关&lt;/li>
&lt;li>portal 是与联系人 &lt;a href="mailto:monet@demo.com">monet@demo.com&lt;/a> 相关的门户用户&lt;/li>
&lt;/ul>
&lt;p>在此示例中，登录通过电子邮件与联系人关联，我们导入与联系人关联的配置文件。查看导入配置文件的特定语法。有关导入链接集的更多信息，请参阅&lt;a href="../import_a_link_set/">导入链接集&lt;/a>。&lt;/p>
&lt;p>要导入的类是 UserLocal：&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-csv" data-lang="csv">Person-&amp;gt;Email,Login,Language,Password,Profiles
&amp;#34;flaubert@it.com&amp;#34;,&amp;#34;support&amp;#34;,&amp;#34;EN US&amp;#34;,1234,profileid-&amp;gt;name:Configuration Manager|profileid-&amp;gt;name:Change Supervisor
&amp;#34;monet@demo.com&amp;#34;,&amp;#34;portal&amp;#34;,&amp;#34;EN US&amp;#34;,1234,profileid-&amp;gt;name:Portal user
&lt;/code>&lt;/pre>&lt;p>然后运行以下命令行：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>php webservices/import.php --auth_user&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>login--auth_pwd&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>password --csvfile&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;login.csv&amp;#34;&lt;/span> --class&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;UserLocal&amp;#34;&lt;/span> --reconcialiationkeys&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;Login&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>导入允许的组织示例：&lt;/p>
&lt;ul>
&lt;li>假设我想为同一个用户允许 3 个组织。&lt;/li>
&lt;li>源文件中的每个组织可以通过其 id、name 或 code 来标识。&lt;/li>
&lt;li>加载像 Allowed Organizations 这样的 AttributeLinkedSetIndirect 时，预期的字段是 n:n 关系类的字段（此处 URP_UserOrg），这意味着您只能提供 allowed_org_id。&lt;/li>
&lt;li>但通常，对于 n:n 关系，您了解远程对象的一些字段值，但可能不知道它的 iTop id。在这种情况下，您可以指定远程对象的代码，并且有一种特殊的语法：
&lt;ul>
&lt;li>关系类中的 ExternalKey，指向远程对象（例如 allowed_org_id）&lt;/li>
&lt;li>一个破折号字符后跟一个大于号：-&amp;gt;&lt;/li>
&lt;li>远程属性的代码（例如 name）&lt;/li>
&lt;li>一个冒号：&lt;/li>
&lt;li>检索远程对象的值（例如 Demo）&lt;/li>
&lt;li>一个管道符，用于分隔需要链接到同一个用户的 2 个远程对象&lt;/li>
&lt;li>以及上述 5 个步骤的重复&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;p>像这样 &lt;code>&amp;quot;allowed_org_id-&amp;gt;name:Demo|allowed_org_id-&amp;gt;code:IT&amp;quot;&lt;/code>&lt;/p>
&lt;p>在此示例中，我结合了不同的方式来标识同一用户的 n:n 关系中的组织，这有效，但您可能不会每天都使用它。&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-csv" data-lang="csv">Person-&amp;gt;Email,Login,Language,Password,Profiles,Allowed Organizations
&amp;#34;monet@demo.com&amp;#34;,&amp;#34;portal&amp;#34;,&amp;#34;EN US&amp;#34;,1234,&amp;#34;profileid-&amp;gt;name:Portal user&amp;#34;,&amp;#34;allowed_org_id-&amp;gt;code:IT|allowed_org_id-&amp;gt;name:Demo|allowed_org_id:1&amp;#34;
&lt;/code>&lt;/pre>&lt;h3 id="导入位置">导入位置&lt;/h3>
&lt;pre tabindex="0">&lt;code class="language-csv" data-lang="csv">&amp;#34;name&amp;#34;,&amp;#34;org_id-&amp;gt;name&amp;#34;,&amp;#34;country&amp;#34;,&amp;#34;city&amp;#34;
&amp;#34;Bordeaux&amp;#34;,&amp;#34;Demo&amp;#34;,&amp;#34;France&amp;#34;,&amp;#34;Bordeaux&amp;#34;
&amp;#34;Grenoble&amp;#34;,&amp;#34;Demo&amp;#34;,&amp;#34;France&amp;#34;,&amp;#34;Eybens&amp;#34;
&amp;#34;Paris&amp;#34;,&amp;#34;Demo&amp;#34;,&amp;#34;France&amp;#34;,&amp;#34;&amp;#34;
&lt;/code>&lt;/pre>&lt;p>然后运行以下命令行：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>php webservices/import.php --auth_user&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>login --auth_pwd&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>password --csvfile&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;location.csv&amp;#34;&lt;/span> --charset&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;UTF-8&amp;#34;&lt;/span> --no_localize&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#0000cf;font-weight:bold">1&lt;/span> --class&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;Location&amp;#34;&lt;/span> --reconcialiationkeys&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;name,org_id-&amp;gt;name&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="限制--已知问题">限制 / 已知问题&lt;/h2>
&lt;ul>
&lt;li>外部字段（如 &lt;code>virtualhost_id-&amp;gt;org_name&lt;/code>）不能用作协调键。
&lt;ul>
&lt;li>解决方法：&lt;code>org_name&lt;/code> 可以替换为 &lt;code>org_id-&amp;gt;name&lt;/code>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>限制：箭头运算符（-&amp;gt;）不能多次使用（即 &lt;code>virtualhost_id-&amp;gt;org_id-&amp;gt;name&lt;/code> 不受支持）。&lt;/li>
&lt;/ul>
&lt;h2 id="历史版本">历史版本&lt;/h2>
&lt;ul>
&lt;li>0.9：首次实现此功能&lt;/li>
&lt;li>2.0：添加标志 &lt;code>no_localize&lt;/code>&lt;/li>
&lt;/ul>
&lt;hr>
&lt;p>原文：&lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:advancedtopics:importcli">https://www.itophub.io/wiki/page?id=3_2_0:advancedtopics:importcli&lt;/a>&lt;/p>
&lt;p>版本：3_2_0/advancedtopics/importcli.txt · Last modified: 2025/04/29 16:27 by 127.0.0.1&lt;/p></description></item><item><title>Docs: REST/JSON API</title><link>/docs/integration/06-rest_json/</link><pubDate>Fri, 27 Jun 2025 00:00:00 +0000</pubDate><guid>/docs/integration/06-rest_json/</guid><description>
&lt;div class="pageinfo pageinfo-primary">
&lt;p>iTop 提供 REST/JSON API，允许外部应用通过 HTTP 请求对 iTop 对象进行增删改查操作。&lt;/p>
&lt;/div>
&lt;h2 id="介绍">介绍&lt;/h2>
&lt;p>iTop 提供了一个 REST/JSON 接口，允许第三方应用程序远程与 iTop 交互以检索、创建或更新 iTop 对象。此接口基于一组简单的 HTTP POST 请求。传递给 iTop 和从 iTop 检索的数据使用 UTF-8 字符集以 JSON 编码。&lt;/p>
&lt;p>此类请求可以从任何能够发出 HTTP/POST 并操作 JSON 编码数据的编程语言执行。请求甚至可以直接在 javascript 中从任何网页运行，通过跨站点脚本（iTop 支持 CORS 和 JSON-P）。&lt;/p>
&lt;p>您还可以在 &lt;a href="https://documenter.getpostman.com/view/44344/ivanti-itop/7LnFzd">Postman&lt;/a> 上找到完整的文档。&lt;/p>
&lt;p>用于 POST 请求的 URL 如下：&lt;/p>
&lt;pre tabindex="0">&lt;code>&amp;lt;itop-root&amp;gt;/webservices/rest.php?version=1.3
&lt;/code>&lt;/pre>&lt;p>此类请求需要传递以下参数：&lt;/p>
&lt;ul>
&lt;li>&lt;code>auth_user&lt;/code>（可选，取决于登录模式）&lt;/li>
&lt;li>&lt;code>auth_pwd&lt;/code>（可选，取决于登录模式）&lt;/li>
&lt;li>&lt;code>auth_token&lt;/code>：如果要使用应用程序令牌或个人令牌，作为 auth_user 和 auth_pwd 的替代&lt;/li>
&lt;li>&lt;code>json_data&lt;/code>&lt;/li>
&lt;/ul>
&lt;p>实际上，HTTP 方法可以是 POST 或 GET（这是 JSON-P 支持所需的）。出于安全原因（避免以明文传递凭据）和 GET 对输入数据大小施加限制的原因，建议使用 POST 和 HTTPS。支持 HTTP 基本身份验证。&lt;/p>
&lt;p>谁可以访问：&lt;/p>
&lt;ul>
&lt;li>由于 REST Web 服务很容易被放入循环中，用户必须对他们修改的类具有&lt;strong>写入访问权限&lt;/strong>和&lt;strong>批量写入&lt;/strong>权限。应用刺激是一种修改。&lt;/li>
&lt;li>确保使用 REST Web 服务的脚本具有 &lt;strong>REST 服务用户&lt;/strong> 配置文件。&lt;/li>
&lt;li>具有 &lt;strong>管理员&lt;/strong> 配置文件的用户&lt;strong>不会&lt;/strong>在没有此额外 &lt;strong>REST 服务用户&lt;/strong> 配置文件的情况下访问 REST。&lt;/li>
&lt;/ul>
&lt;p>如果要模拟以前的行为（即允许任何用户访问 REST Web 服务），请添加配置参数 &lt;code>secure_rest_services&lt;/code> 并将其设置为 &lt;code>false&lt;/code>。&lt;/p>
&lt;h2 id="参数">参数&lt;/h2>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>参数&lt;/th>
&lt;th>描述&lt;/th>
&lt;th>默认值&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>version&lt;/td>
&lt;td>API 版本。这是确保目标 iTop 服务器可以提供某些功能的一种方式，并且它确保您的脚本的稳定性：只要版本可用，操作将保持不变，但以下情况除外：错误修复、返回消息中的修改、返回的 JSON 结构中的新元素。&lt;/td>
&lt;td>-&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>auth_user&lt;/td>
&lt;td>用户登录名&lt;/td>
&lt;td>-&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>auth_pwd&lt;/td>
&lt;td>用户密码&lt;/td>
&lt;td>-&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>auth_token&lt;/td>
&lt;td>应用程序或个人令牌&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>json_data&lt;/td>
&lt;td>包含 JSON 格式请求操作的字符串。或（3.0 中的新功能）&lt;code>@&amp;lt;path&amp;gt;&lt;/code>，其中您提供带有路径的 JSON 操作文件，用于 CLI 执行&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>callback&lt;/td>
&lt;td>如果设置，则使用 JSON-P（JSON with padding）&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>这些参数适用于任何类型的请求操作。&lt;/p>
&lt;h3 id="认证">认证&lt;/h3>
&lt;p>请参阅&lt;a href="../../admin/user_authentication_options/">如何认证到 Web 服务&lt;/a>以选择相关的认证模式并相应地调整 HTTP 请求。&lt;/p>
&lt;p>通过浏览器测试 API 可以完成，但在这种情况下，您必须调整 &lt;code>allowed_login_types&lt;/code> 以在 iTop 的配置文件中启用 &lt;code>url&lt;/code>。&lt;/p>
&lt;h3 id="php-数组形式的参数">PHP 数组形式的参数&lt;/h3>
&lt;p>自 2.7.1 和 3.0.0 起，参数可以使用 PHP 数组语法发送：&lt;/p>
&lt;pre tabindex="0">&lt;code>auth_user=my_user&amp;amp;auth_pwd=my_password&amp;amp;json_data%5Boperation%5D=core%2Fget&amp;amp;json_data%5Bclass%5D=ServiceChange&amp;amp;json_data%5Bkey%5D=SELECT+ServiceChange+WHERE+id%3D1&amp;amp;json_data%5Boutput_fields%5D=request_state
&lt;/code>&lt;/pre>&lt;h3 id="文件中的参数">文件中的参数&lt;/h3>
&lt;p>自 3.0.0 起，为了测试，您可以将 JSON 操作写入文件以进行 CLI 执行：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;operation&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;core/create&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;comment&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;Synchronization from blah...&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;class&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;UserRequest&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;output_fields&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;id, friendlyname&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;fields&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;org_id&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;SELECT Organization WHERE name = &amp;#39;Demo&amp;#39;&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;caller_id&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:{&lt;/span>&lt;span style="color:#204a87;font-weight:bold">&amp;#34;name&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;monet&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>&lt;span style="color:#204a87;font-weight:bold">&amp;#34;first_name&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;claude&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">},&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;title&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;issue blah&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;description&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;something happened&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>然后您可以使用以下 Curl 命令在命令行界面上执行此操作（必须启用 formlogin_type）：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>curl -X POST -F &lt;span style="color:#4e9a06">&amp;#39;version=1.3&amp;#39;&lt;/span> -F &lt;span style="color:#4e9a06">&amp;#39;auth_user=admin&amp;#39;&lt;/span> -F &lt;span style="color:#4e9a06">&amp;#39;auth_pwd=admin&amp;#39;&lt;/span> https://localhost/itop/webservices/rest.php -F &lt;span style="color:#4e9a06">&amp;#39;json_data=@./my-json-operation.json&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>curl -X POST -F &lt;span style="color:#4e9a06">&amp;#39;version=1.3&amp;#39;&lt;/span> --header &lt;span style="color:#4e9a06">&amp;#39;authorization: basic YWRtaW46YWRtaW4=&amp;#39;&lt;/span> https://localhost/itop/webservices/rest.php -F &lt;span style="color:#4e9a06">&amp;#39;json_data=@./my-json-operation.json&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"># YWRtaW46YWRtaW4= 对应于字符串 login:password 的 base64 编码&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>curl -X POST -F &lt;span style="color:#4e9a06">&amp;#39;version=1.3&amp;#39;&lt;/span> -F &lt;span style="color:#4e9a06">&amp;#39;auth_token=YOURTOKEN&amp;#39;&lt;/span> https://localhost/itop/webservices/rest.php -F &lt;span style="color:#4e9a06">&amp;#39;json_data=@./my-json-operation.json&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>如果使用最后一个示例，您需要在 allowed_login_type 参数中激活 login_mode 令牌。&lt;/p>
&lt;h2 id="操作list_operations">操作：list_operations&lt;/h2>
&lt;p>您应该熟悉的第一个操作是：&lt;code>list_operations&lt;/code>。此命令返回所有可能的操作列表。&lt;/p>
&lt;p>json_data 输入的语法尽可能简单：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;operation&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;list_operations&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>回复将如下所示：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;version&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;1.2&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;operations&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">[&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;verb&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;core/create&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;description&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Create an object&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;extension&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;CoreServices&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">},&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;verb&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;core/update&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;description&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Update an object&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;extension&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;CoreServices&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">},&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;verb&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;core/get&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;description&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Search for objects&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;extension&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;CoreServices&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">],&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;code&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">0&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;message&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Operations: 3&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>请注意以下部分：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;code&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">0&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;message&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Everything went well&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>…是所有由 rest.php 提供的服务共有的，返回的其他信息取决于请求的操作。&lt;/p>
&lt;h2 id="错误代码">错误代码&lt;/h2>
&lt;p>错误代码在 &lt;code>applicationextension.inc.php&lt;/code> 中可用，作为 RestResult 类的常量：&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>值&lt;/th>
&lt;th>常量&lt;/th>
&lt;th>含义&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>0&lt;/td>
&lt;td>OK&lt;/td>
&lt;td>未遇到任何问题&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>1&lt;/td>
&lt;td>UNAUTHORIZED&lt;/td>
&lt;td>缺少/错误的凭据或用户没有足够的权限执行请求的操作&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2&lt;/td>
&lt;td>MISSING_VERSION&lt;/td>
&lt;td>缺少参数 &amp;lsquo;version&amp;rsquo;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>3&lt;/td>
&lt;td>MISSING_JSON&lt;/td>
&lt;td>缺少参数 &amp;lsquo;json_data&amp;rsquo;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>4&lt;/td>
&lt;td>INVALID_JSON&lt;/td>
&lt;td>输入结构不是有效的 JSON 字符串&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>5&lt;/td>
&lt;td>MISSING_AUTH_USER&lt;/td>
&lt;td>缺少参数 &amp;lsquo;auth_user&amp;rsquo;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>6&lt;/td>
&lt;td>MISSING_AUTH_PWD&lt;/td>
&lt;td>缺少参数 &amp;lsquo;auth_pwd&amp;rsquo; 或您正在使用 url 登录类型，而它在 iTop 的配置文件中未被允许&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>10&lt;/td>
&lt;td>UNSUPPORTED_VERSION&lt;/td>
&lt;td>没有可用于指定版本的操作&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>11&lt;/td>
&lt;td>UNKNOWN_OPERATION&lt;/td>
&lt;td>请求的操作对指定版本无效&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>12&lt;/td>
&lt;td>UNSAFE&lt;/td>
&lt;td>无法执行请求的操作，因为它可能导致数据（完整性）丢失&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>100&lt;/td>
&lt;td>INTERNAL_ERROR&lt;/td>
&lt;td>无法执行操作，请参阅消息进行故障排除&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h2 id="核心服务">核心服务&lt;/h2>
&lt;p>核心服务是&lt;strong>通用&lt;/strong>服务。它们等同于 iTop 核心 PHP API：DBObject、DBObjectSearch 和 DBObjectSet。&lt;/p>
&lt;p>使用这些服务，您可以操作任何类型的数据，前提是您了解足够的类和属性信息。&lt;/p>
&lt;h3 id="如何指定键">如何指定键&lt;/h3>
&lt;p>键是标识对象的一种方式。这种类型的规范可用于确定操作的目标对象，并用于确定外部键（或&amp;quot;外键&amp;quot;）的值。&lt;/p>
&lt;p>允许三种形式：&lt;/p>
&lt;ul>
&lt;li>指定对象的 id（作为数字）：&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a40000">...&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#34;key&amp;#34;&lt;/span>&lt;span style="color:#a40000">:&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">123&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>指定搜索查询（OQL）：&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a40000">...&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#34;key&amp;#34;&lt;/span>&lt;span style="color:#a40000">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;SELECT UserRequest WHERE caller_name LIKE \&amp;#34;monnet\&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>指定搜索条件（所有条件都使用 AND 运算符组合）：&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a40000">...&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#34;key&amp;#34;&lt;/span>&lt;span style="color:#a40000">:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;name&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Monnet&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;first_name&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Claude&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="如何指定值">如何指定值&lt;/h3>
&lt;p>属性的值以取决于属性类型的格式给出。&lt;/p>
&lt;p>以下是一个说明某些情况的示例：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#34;name&amp;#34;&lt;/span>&lt;span style="color:#a40000">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Monnet&amp;#34;&lt;/span>&lt;span style="color:#a40000">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#34;first_name&amp;#34;&lt;/span>&lt;span style="color:#a40000">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Claude&amp;#34;&lt;/span>&lt;span style="color:#a40000">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#34;age&amp;#34;&lt;/span>&lt;span style="color:#a40000">:&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">80&lt;/span>&lt;span style="color:#a40000">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#34;picture&amp;#34;&lt;/span>&lt;span style="color:#a40000">:&lt;/span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;data&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;iVBORw0KGgoAAAAN.......AAAAElFTkSuQmCC&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;filename&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;smiley.png&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;mimetype&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;image/png&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="标量">标量&lt;/h4>
&lt;p>对于大多数属性类型，值只是一个标量。&lt;/p>
&lt;p>对于外部键，值是一个键（见上面的定义）。&lt;/p>
&lt;p>对于格式化为纯文本的文本字段，新行通过 &amp;ldquo;\n&amp;rdquo; 指定。&lt;/p>
&lt;p>示例：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&amp;#34;name&amp;#34;&lt;/span>&lt;span style="color:#a40000">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Monnet&amp;#34;&lt;/span>&lt;span style="color:#a40000">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&amp;#34;description&amp;#34;&lt;/span>&lt;span style="color:#a40000">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;A famous french artist.\nLaunched the impressionism trend.&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&amp;#34;presentation&amp;#34;&lt;/span>&lt;span style="color:#a40000">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;&amp;lt;p&amp;gt;A famous french artist&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;Launched the &amp;lt;em&amp;gt;impressionism&amp;lt;/em&amp;gt; trend.&amp;lt;/p&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&amp;#34;age&amp;#34;&lt;/span>&lt;span style="color:#a40000">:&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">80&lt;/span>&lt;span style="color:#a40000">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&amp;#34;org_id&amp;#34;&lt;/span>&lt;span style="color:#a40000">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;SELECT Organization WHERE name = &amp;#39;Demo&amp;#39;&amp;#34;&lt;/span>&lt;span style="color:#a40000">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&amp;#34;location_id&amp;#34;&lt;/span>&lt;span style="color:#a40000">:&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">3&lt;/span>&lt;span style="color:#a40000">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&amp;#34;supervisor_id&amp;#34;&lt;/span>&lt;span style="color:#a40000">:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;name&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Foo&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;first_name&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;John&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="二进制数据blobs">二进制数据（Blobs）&lt;/h4>
&lt;p>对于 Blobs（即二进制数据），值以包含三个项目的数组形式给出：data、filename 和 mimetype。&lt;/p>
&lt;ul>
&lt;li>&amp;lsquo;data&amp;rsquo; 是经过 base64 编码的二进制数据&lt;/li>
&lt;li>&amp;lsquo;filename&amp;rsquo; 是原始文件的名称。其目的是在文件被进一步下载时提供默认文件名。&lt;/li>
&lt;li>&amp;lsquo;mimetype&amp;rsquo; 必须与文件格式匹配，以便 iTop 可以正确显示它。&lt;/li>
&lt;/ul>
&lt;p>示例：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&amp;#34;picture&amp;#34;&lt;/span>&lt;span style="color:#a40000">:&lt;/span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;data&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAIAAAC0tAIdAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACmSURBVChTfZHRDYMwDESzQ2fqhHx3C3ao+MkW/WlnaFxfzk7sEnE6JHJ+NgaKZN2zLHVN2ssfkae0Da7FQ5PRk/ve4Hcx19Ie6CEGuh/6vMgNhwanHVUNbt73lUDbYJ+6pg8b3+m2RehsVPdMXyvQY+OVkB+Rrv64lUjb3nq+aCA6v4leRqtfaIgimr53atBy9PlfUhoh3fFCNDmErv9FWR6ylBL5AREbmHBnFj5lAAAAAElFTkSuQmCC&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;filename&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;smiley.png&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;mimetype&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;image/png&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="案例日志case-log">案例日志（Case Log）&lt;/h4>
&lt;p>自 iTop 2.0.3 起，有 3 种可能的语法用于填充&amp;quot;CaseLog&amp;quot;字段：简写语法、单一项或整个日志。&lt;/p>
&lt;h5 id="简写语法">简写语法&lt;/h5>
&lt;p>如果提供简单的文本字符串，文本将作为案例日志中的新条目添加，使用当前日期和时间以及当前用户，并且文本将被隐式视为以 HTML 格式设置。&lt;/p>
&lt;p>示例：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&amp;#34;public_log&amp;#34;&lt;/span>&lt;span style="color:#a40000">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;blah blah blah&amp;#34;&lt;/span>&lt;span style="color:#a40000">,&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h5 id="富语法">富语法&lt;/h5>
&lt;p>如果提供带有名为 &lt;code>add_item&lt;/code> 的条目的结构，可以指定附加信息：&lt;/p>
&lt;ul>
&lt;li>用户名（默认为用于 REST/JSON API 的凭据）&lt;/li>
&lt;li>条目的日期/时间（默认为&amp;quot;现在&amp;quot;）&lt;/li>
&lt;li>注释的格式（默认为&amp;quot;html&amp;quot;，可以设置为&amp;quot;text&amp;quot;）&lt;/li>
&lt;/ul>
&lt;p>示例：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&amp;#34;public_log&amp;#34;&lt;/span>&lt;span style="color:#a40000">:&lt;/span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;add_item&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;date&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;yyyy-mm-dd hh:mm:ss&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;user_login&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;jfoo&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;message&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;The first line\nAnother line&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;format&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;text&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>&lt;span style="color:#a40000">,&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h5 id="完整语法">完整语法&lt;/h5>
&lt;p>如果提供名为 &lt;code>items&lt;/code> 的数组，则案例日志的整个内容将被提供的条目替换。&lt;/p>
&lt;p>示例：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&amp;#34;public_log&amp;#34;&lt;/span>&lt;span style="color:#a40000">:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;items&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">[&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;date&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;yyyy-mm-dd hh:mm:ss&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;user_login&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;jfoo&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;message&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;&amp;lt;p&amp;gt;The first line&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;A second line&amp;lt;/p&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">},&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;date&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;yyyy-mm-dd hh:mm:ss&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;user_login&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;jfoo&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;message&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;&amp;lt;p&amp;gt;The first line&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;A second line&amp;lt;/p&amp;gt;&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;format&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;html&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">},&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;date&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;yyyy-mm-dd hh:mm:ss&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;user_login&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;jfoo&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;message&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;blah blah blah&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;format&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;text&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>&lt;span style="color:#a40000">,&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="链接集">链接集&lt;/h4>
&lt;p>对于链接集，值是一个对象定义数组。&lt;/p>
&lt;p>示例：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&amp;#34;contacts_list&amp;#34;&lt;/span>&lt;span style="color:#a40000">:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">[&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;role&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;artist&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;contact_id&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;finalclass&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Person&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;name&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;monet&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;first_name&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;claude&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">},&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;role&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Basket-ball&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;contact_id&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;SELECT Team WHERE name = &amp;#39;San Antonio Spurs&amp;#39;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">},&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;contact_id&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">1234&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">]&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="响应格式">响应格式&lt;/h3>
&lt;p>core/… 操作的响应格式如下：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;objects&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;objectclass::objectkey&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a40000">...&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">},&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;code&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">0&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;message&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Found: 1&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>其中每个对象的形式为：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;code&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">0&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;message&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;class&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Person&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;key&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">1234&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;fields&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;id&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">1234&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;name&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;My last name&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;status&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Active&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;org_id&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">123&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a40000">.....&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a40000">.....&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a40000">.....&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>如果没有要返回的对象，您将得到：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&amp;#34;objects&amp;#34;&lt;/span>&lt;span style="color:#a40000">:&lt;/span> &lt;span style="color:#204a87;font-weight:bold">null&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>可以通过 &lt;code>output_fields&lt;/code> 参数（如果可用）控制给出的属性列表。&lt;code>output_fields&lt;/code> 参数可以具有以下形式：&lt;/p>
&lt;ul>
&lt;li>以逗号分隔的属性代码列表（例如：&amp;ldquo;name, status, org_id&amp;rdquo;）。只能给出查询类的属性。&lt;/li>
&lt;li>&lt;code>*&lt;/code> 表示查询类的所有属性&lt;/li>
&lt;li>&lt;code>*+&lt;/code>（自 2.0.3 起）表示每个找到的&lt;strong>所有&lt;/strong>属性（子类可能比查询类具有更多属性）&lt;/li>
&lt;/ul>
&lt;h3 id="操作coreget">操作：core/get&lt;/h3>
&lt;p>搜索对象列表。&lt;/p>
&lt;p>示例：&lt;/p>
&lt;p>传递以下 json_data：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;operation&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;core/get&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;class&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Person&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;key&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;SELECT Person WHERE email LIKE &amp;#39;%.com&amp;#39;&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;output_fields&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;friendlyname, email&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>或者，使用另一种形式的 &amp;ldquo;key&amp;rdquo;：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;operation&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;core/get&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;class&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Person&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;key&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">1&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;output_fields&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;*&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>自 2.6.1（PR #25，感谢 Dennis Lassiter！）起，使用两个新参数处理分页：&lt;/p>
&lt;ul>
&lt;li>&lt;code>limit&lt;/code>（整数）：要返回的结果数量（默认：0 = 无限制）&lt;/li>
&lt;li>&lt;code>page&lt;/code>（整数）：要返回的页码（不能 &amp;lt; 1）&lt;/li>
&lt;/ul>
&lt;p>记录排序可以使用 classes/class/properties/order 数据模型 XML 节点控制。&lt;/p>
&lt;p>示例：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;operation&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;core/get&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;class&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Person&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;key&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;SELECT Person&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;output_fields&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;friendlyname, email&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;limit&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;5&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;page&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;2&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="操作corecreate">操作：core/create&lt;/h3>
&lt;p>创建给定类的新对象。&lt;/p>
&lt;p>传递以下 json_data：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;operation&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;core/create&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;comment&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Synchronization from blah...&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;class&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;UserRequest&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;output_fields&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;id, friendlyname&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;fields&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;org_id&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;SELECT Organization WHERE name = \&amp;#34;Demo\&amp;#34;&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;caller_id&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;name&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;monet&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;first_name&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;claude&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">},&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;title&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Houston, got a problem!&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;description&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;The fridge is empty&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>… 将导致创建一个新的用户请求。&lt;/p>
&lt;p>某些属性具有特殊格式：&lt;/p>
&lt;ul>
&lt;li>链接集：目前仅支持间接链接集，请参阅上面给出的示例&lt;/li>
&lt;li>Blobs：文档内容（例如 DocumentFile/file）必须采用 &lt;code>{data: base64-encoded-data, mimetype: …, filename: …}&lt;/code> 的形式&lt;/li>
&lt;li>案例日志：允许三种形式。传递字符串等同于从 GUI 中添加新消息：消息代表当前用户（用于调用 Web 服务的凭据）记录。传递形式为 &lt;code>{add_item: {message: 'blah', user_id: 123, date:'2012-02-28 10:30'}}&lt;/code> 的结构也会添加单条消息。user_id 和 date 是可选的，分别默认为当前用户和当前日期时间。指定 user_id 要求用于调用服务的凭据具有管理员权限，否则操作将失败并返回 UNAUTHORIZED 错误代码。传递形式为 &lt;code>{items: [ {message: 'blah'} ]}&lt;/code> 的结构将设置整个日志。&lt;/li>
&lt;/ul>
&lt;p>响应示例：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;code&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">0&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;message&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;objects&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;UserRequest::123&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;code&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">0&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;message&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;created&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;class&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;UserRequest&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;key&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">29&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;fields&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;id&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">29&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;friendlyname&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;R-000029&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="操作coreupdate">操作：core/update&lt;/h3>
&lt;p>更新一个对象。&lt;/p>
&lt;p>传递以下 json_data：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;operation&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;core/update&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;comment&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Synchronization from blah...&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;class&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;UserRequest&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;key&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;description&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;The fridge is empty&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">},&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;output_fields&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;friendlyname, title, contacts_list&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;fields&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;contacts_list&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">[&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;role&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;pizza delivery&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;contact_id&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;finalclass&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Person&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;name&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;monet&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;first_name&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;claude&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>… 将通过将联系人列表设置为一个联系人（Claude Monet）和角色 &amp;lsquo;pizza delivery&amp;rsquo; 来更新用户请求（通过其描述 &amp;ldquo;The fridge is empty&amp;rdquo; 标识）。&lt;/p>
&lt;h3 id="操作coreapply_stimulus">操作：core/apply_stimulus&lt;/h3>
&lt;p>更新一个对象并应用刺激以更改对象的状态。&lt;/p>
&lt;p>传递以下 json_data：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;operation&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;core/apply_stimulus&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;comment&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Synchronization from blah...&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;class&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;UserRequest&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;key&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">15&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;stimulus&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;ev_assign&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;output_fields&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;friendlyname, title, status, contacts_list&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;fields&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;team_id&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">18&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;agent_id&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">57&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>… 将通过设置 &lt;code>agent_id&lt;/code> 和 &lt;code>team_id&lt;/code> 字段（对于状态 assigned 是必填的）来更新用户请求（通过其键 &amp;ldquo;15&amp;rdquo; 标识），然后应用刺激 &lt;code>ev_assign&lt;/code>，使工单从状态 new 转换到状态 assigned。&lt;/p>
&lt;h3 id="操作coredelete">操作：core/delete&lt;/h3>
&lt;p>删除一组对象。&lt;/p>
&lt;p>传递以下 json_data：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;operation&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;core/delete&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;comment&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Cleanup for customer Demo&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;class&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;UserRequest&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;key&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;org_id&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">2&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">},&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;simulate&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#204a87;font-weight:bold">false&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>… 将删除客户 #2 的用户请求。&lt;/p>
&lt;p>每个报告的对象都有一个删除状态代码和一个提供附加信息的消息。状态代码在 &lt;code>core/restservices.class.inc.php&lt;/code> 中定义，作为 RestDelete 类的常量：&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>值&lt;/th>
&lt;th>常量&lt;/th>
&lt;th>含义&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>0&lt;/td>
&lt;td>OK&lt;/td>
&lt;td>根据初始请求删除对象&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>1&lt;/td>
&lt;td>ISSUE&lt;/td>
&lt;td>一般问题（用户权限或…？）&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2&lt;/td>
&lt;td>AUTO_DELETE&lt;/td>
&lt;td>必须删除以保留数据库完整性&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>3&lt;/td>
&lt;td>AUTO_DELETE_ISSUE&lt;/td>
&lt;td>必须删除以保留数据库完整性，但不可能&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>4&lt;/td>
&lt;td>REQUEST_EXPLICITELY&lt;/td>
&lt;td>必须删除以保留数据库完整性，但必须显式请求&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>5&lt;/td>
&lt;td>AUTO_UPDATE&lt;/td>
&lt;td>必须更新以保留数据库完整性&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>6&lt;/td>
&lt;td>AUTO_UPDATE_ISSUE&lt;/td>
&lt;td>必须更新以保留数据库完整性，但不可能&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h3 id="操作coreget_related">操作：core/get_related&lt;/h3>
&lt;p>搜索相关对象。&lt;/p>
&lt;p>给定一个对象或对象列表，搜索其他受这些对象影响或影响这些对象的对象。&lt;/p>
&lt;p>传递以下 json_data：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;operation&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;core/get_related&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;class&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Server&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;key&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">1&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;relation&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;impacts&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;depth&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">4&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;redundancy&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#204a87;font-weight:bold">true&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;direction&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;down&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>… 将搜索 Server::1 影响的所有 CI。搜索深度限制为 4 次迭代（默认为 20）。&lt;/p>
&lt;p>结果将如下所示：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;objects&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;objectclass::objectkey&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a40000">...&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">},&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;relations&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;origin-class::origin-key&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">[&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;key&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;destination-class::destination-key&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">},&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;code&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">0&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;message&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Scope: 1; Found: Server=4, VirtualMachine=3, Farm=1&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="操作corecheck_credentials">操作：core/check_credentials&lt;/h3>
&lt;p>检查用户登录名 + 密码。&lt;/p>
&lt;p>传递以下 json_data：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;operation&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;core/check_credentials&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;user&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;john&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;password&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;abc123&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>… 将回复（如果一切顺利）…&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;code&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">0&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;message&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;authorized&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#204a87;font-weight:bold">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="示例和游乐场">示例和游乐场&lt;/h2>
&lt;p>如果您已经安装了 iTop（版本 2.0.1+），则可以&lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:advancedtopics:rest_json_playground">点击此处测试 REST API&lt;/a>。&lt;/p>
&lt;p>以下是如何集成 REST/JSON 调用的示例：使用 bash 和 wget&lt;/p>
&lt;h3 id="使用配置文件创建用户">使用配置文件创建用户&lt;/h3>
&lt;p>当创建对象需要 n:n 关系时，该对象的创建必须包括链接对象的创建。这在 iTop 标准数据模型中很少见，但它仍然存在于创建 User 对象时。&lt;/p>
&lt;p>使用的语法有点棘手，因为链接创建不能提供 userid：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;operation&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;core/create&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;comment&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Created&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;class&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;UserLocal&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;output_fields&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;id&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;fields&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;contactid&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">169&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;login&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;MyUser123&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;password&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;123456&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;language&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;EN US&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;status&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;enabled&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;profile_list&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#000;font-weight:bold">[{&lt;/span>&lt;span style="color:#204a87;font-weight:bold">&amp;#34;profileid&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;MyProfileID&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">}]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="管理附件">管理附件&lt;/h3>
&lt;p>请参阅&lt;a href="../07-rest_json_attachment/">使用 REST/JSON 管理对象附件&lt;/a>。&lt;/p>
&lt;h3 id="管理内联图像">管理内联图像&lt;/h3>
&lt;p>通过 REST/JSON 添加内联图像&lt;/p>
&lt;h2 id="如何添加服务">如何添加服务&lt;/h2>
&lt;p>可以通过开发声明类（包含在您的自定义模块中）实现接口 &lt;code>iRestServiceProvider&lt;/code> 的模块（或扩展）来扩展服务。&lt;/p>
&lt;p>一旦您的模块安装完毕，您的自定义服务将可用，并与 &lt;code>operation=list_operations&lt;/code> 一起列出。&lt;/p>
&lt;h2 id="变更历史">变更历史&lt;/h2>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>iTop 版本&lt;/th>
&lt;th>JSON REST 版本&lt;/th>
&lt;th>变更&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>2.0.1&lt;/td>
&lt;td>1.0&lt;/td>
&lt;td>创建&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2.0.2&lt;/td>
&lt;td>1.1&lt;/td>
&lt;td>向返回的对象信息添加 &amp;lsquo;key&amp;rsquo;（在 1.0 中需要一些解析），将对象搜索条件转换为严格搜索（而不是松散搜索：包含…），允许重置外部键（设置为 0，表示&amp;quot;未定义&amp;quot;）&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2.0.3&lt;/td>
&lt;td>1.2&lt;/td>
&lt;td>完全处理案例日志（可以完全读取或写入），枚举/GET 给出原始值而不是本地化标签，允许 HTTP 基本认证方法，添加动词 core/check_credentials，改进错误报告（缺少认证参数、写入链接集的错误类），添加选项 &lt;code>*+&lt;/code> 以输出对象的所有字段（不仅仅是查询类的字段），修复对象删除报告&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2.2.0&lt;/td>
&lt;td>1.3&lt;/td>
&lt;td>动词 get_related：添加选项 redundancy 和 direction 以考虑影响分析中的冗余。出于安全原因，现在禁止使用具有 Portal User 配置文件的用户账户使用 REST/JSON Web 服务。如果您仅使用其中一个 Web 服务来检查用户的凭据，请调整您的代码以使用 core/check_credentials 操作。出于安全原因，core/get 和 core/get_related 操作现在仅允许对指定类对象具有批量读取权限的用户。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2.5.2, 2.6.1, 2.7.0&lt;/td>
&lt;td>1.4&lt;/td>
&lt;td>动词 core/get：添加分页参数 limit 和 page&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;hr>
&lt;p>原文：&lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:advancedtopics:rest_json">https://www.itophub.io/wiki/page?id=3_2_0:advancedtopics:rest_json&lt;/a>&lt;/p>
&lt;p>版本：3_2_0/advancedtopics/rest_json.txt · Last modified: 2024/12/11 19:02 by 127.0.0.1&lt;/p></description></item><item><title>Docs: REST/JSON 附件操作</title><link>/docs/integration/07-rest_json_attachment/</link><pubDate>Fri, 27 Jun 2025 00:00:00 +0000</pubDate><guid>/docs/integration/07-rest_json_attachment/</guid><description>
&lt;div class="pageinfo pageinfo-primary">
&lt;p>通过 REST/JSON API 可以上传和下载 iTop 对象的附件。&lt;/p>
&lt;/div>
&lt;h2 id="添加附件">添加附件&lt;/h2>
&lt;p>使用 REST/JSON Web 服务，附件只能与&lt;strong>现有&lt;/strong>对象关联（即已记录在数据库中的对象）。如果要创建带有附件的工单，请先创建工单，然后创建附件对象。&lt;/p>
&lt;p>使用 &lt;code>core/create&lt;/code> REST 操作创建新的 &lt;code>Attachment&lt;/code> 时，必须填写以下字段：&lt;/p>
&lt;ul>
&lt;li>&lt;code>item_class&lt;/code>：（字符串）此附件将关联到的对象类（例如 UserRequest）&lt;/li>
&lt;li>&lt;code>item_id&lt;/code>：（整数）此附件将关联到的对象的 ID&lt;/li>
&lt;li>&lt;code>item_org_id&lt;/code>：（整数）此附件将关联到的对象的组织 ID&lt;/li>
&lt;li>&lt;code>creation_date&lt;/code>：（字符串）当前日期和时间，MySQL 格式（例如 « 2021-04-30 12:23:41 »）&lt;/li>
&lt;li>&lt;code>contents&lt;/code>：包含 3 个元素的数组：
&lt;ul>
&lt;li>&lt;code>data&lt;/code>：（字符串）文件的 base64 编码二进制内容&lt;/li>
&lt;li>&lt;code>filename&lt;/code>：（字符串）文件的名称（用于显示），例如 Untitled-1.docx&lt;/li>
&lt;li>&lt;code>mimetype&lt;/code>：（字符串）文件的 MIME 类型，例如 application/vnd.openxmlformats-officedocument.wordprocessingml.document（对于 MSWord .docx 文档）&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;p>使用 &lt;code>core/create&lt;/code> 操作创建 &lt;code>Attachment&lt;/code> 对象：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;operation&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;core/create&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;class&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Attachment&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;fields&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;item_class&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Ticket&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;item_id&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">42&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;item_org_id&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">3&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;creation_date&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;2021-04-30 12:23:41&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;contents&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;data&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;base64编码的文件内容&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;mimetype&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;application/pdf&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;#34;filename&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;document.pdf&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>参数说明：&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>字段&lt;/th>
&lt;th>说明&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>item_class&lt;/code>&lt;/td>
&lt;td>附件所属对象的类名&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>item_id&lt;/code>&lt;/td>
&lt;td>附件所属对象的 ID&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>item_org_id&lt;/code>&lt;/td>
&lt;td>附件所属对象的组织 ID&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>creation_date&lt;/code>&lt;/td>
&lt;td>创建日期，MySQL 格式&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>contents.data&lt;/code>&lt;/td>
&lt;td>Base64 编码的文件内容&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>contents.mimetype&lt;/code>&lt;/td>
&lt;td>文件 MIME 类型&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>contents.filename&lt;/code>&lt;/td>
&lt;td>文件名&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h2 id="删除附件">删除附件&lt;/h2>
&lt;p>附件可以像 iTop 中的任何其他对象一样删除，使用 &lt;code>core/delete&lt;/code> REST/JSON 操作。附件关联到的&lt;strong>目标&lt;/strong>对象不需要任何操作。&lt;/p>
&lt;h2 id="更新附件">更新附件&lt;/h2>
&lt;p>即使可以使用 REST/JSON Web 服务更新 &lt;code>Attachment&lt;/code> 对象，用户界面也不允许此操作，因此 iTop 可能假设附件是不可变的（例如在索引数据时）。因此，&lt;strong>建议&lt;/strong>通过删除旧附件并创建新附件来模拟用户界面的行为。&lt;/p>
&lt;h2 id="限制">限制&lt;/h2>
&lt;ul>
&lt;li>附件大小受 PHP &lt;code>upload_max_filesize&lt;/code> 和 &lt;code>post_max_size&lt;/code> 限制&lt;/li>
&lt;li>上传用户必须对目标对象有写权限&lt;/li>
&lt;li>支持的 MIME 类型通常没有严格限制，但建议仅上传常见文档类型&lt;/li>
&lt;/ul>
&lt;hr>
&lt;p>原文：&lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:advancedtopics:rest_json_attachment">https://www.itophub.io/wiki/page?id=3_2_0:advancedtopics:rest_json_attachment&lt;/a>&lt;/p>
&lt;p>版本：3_2_0/advancedtopics/rest_json_attachment.txt · Last modified: 2024/09/10 10:25 by 127.0.0.1&lt;/p></description></item><item><title>Docs: Nagios 集成</title><link>/docs/integration/08-nagios/</link><pubDate>Fri, 27 Jun 2025 00:00:00 +0000</pubDate><guid>/docs/integration/08-nagios/</guid><description>
&lt;div class="pageinfo pageinfo-primary">
&lt;p>iTop 可以与 Nagios 监控系统集成，将监控状态信息同步到 iTop 的配置项中。&lt;/p>
&lt;/div>
&lt;h2 id="概述">概述&lt;/h2>
&lt;p>通过此集成：&lt;/p>
&lt;ul>
&lt;li>Nagios 告警将转换为 iTop 中的事件工单&lt;/li>
&lt;li>Nagios 中设备的状态详细信息可以直接在 iTop 中查看（作为对象上的额外选项卡）&lt;/li>
&lt;/ul>
&lt;p>虽然 Nagios 的配置非常具体（命令定义、处理程序定义），但相同的原理可以应用于任何能够在接收到告警时运行命令行脚本的基于 Web 的监控工具。&lt;/p>
&lt;p>将 Nagios 告警转换为 iTop 中的工单具有众多优势，例如：&lt;/p>
&lt;ul>
&lt;li>工单可以从创建到解决进行跟踪&lt;/li>
&lt;li>可以为工单分配 SLA 以确保及时解决&lt;/li>
&lt;li>iTop 可以计算由于某个组件故障而导致的&amp;quot;受影响&amp;quot;基础设施。&amp;ldquo;受影响&amp;quot;的项目会自动添加到事件工单中&lt;/li>
&lt;li>iTop 可以通知受事件影响的各种人员&lt;/li>
&lt;/ul>
&lt;h2 id="自动化在-itop-中创建事件工单">自动化在 iTop 中创建事件工单&lt;/h2>
&lt;p>本节描述如何配置 Nagios 以自动在 iTop 中创建事件工单。由于 Nagios &amp;ldquo;命令&amp;quot;基于命令行脚本，因此编写了一个特殊的 PHP 脚本，该脚本包装了 iTop 的 SOAP Web 服务，用于从命令行创建事件工单。请注意，由于 Nagios 调用的命令行脚本使用 SOAP Web 服务在 iTop 中创建工单，因此 Nagios 和 iTop 可以安装在不同的服务器上，前提是 Nagios 服务器到 iTop 之间可以进行 HTTP(S) 连接。&lt;/p>
&lt;p>此脚本称为 &amp;ldquo;createTicket-nagios.php&amp;rdquo;。可以从这里下载：https://www.combodo.com/documentation/createTicket-nagios.zip&lt;/p>
&lt;p>将此脚本复制到 Nagios 服务器上的目录中（例如 /etc/nagios3），并将文件 &amp;lsquo;itopsoaptypes.inc.php&amp;rsquo; 从 iTop 实例的 &amp;lsquo;webservices&amp;rsquo; 目录复制到同一目录中。&lt;/p>
&lt;ul>
&lt;li>此脚本使用在 Nagios 中触发告警的主机的主机名来标识 iTop 中受影响的对象。因此主机名必须是唯一的。&lt;/li>
&lt;li>脚本仅为处于 HARD 状态的 Nagios 告警触发工单。此外，它需要在 iTop 中预先配置默认工作组、默认呼叫者和默认客户。（有关工作组、呼叫者和客户的更多详细信息，请参阅 iTop 文档）&lt;/li>
&lt;li>工单的严重程度始终相同，默认设置为严重。&lt;/li>
&lt;li>此脚本只是描述如何使用 iTop SOAP Web 服务的示例。请根据您的需求随意改进。&lt;/li>
&lt;/ul>
&lt;p>用于工单创建的所有参数都列在脚本的开头，如下所示，必须根据您的配置进行调整。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ce5c00;font-weight:bold">&amp;lt;?&lt;/span>&lt;span style="color:#000">php&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">// Adjust these settings to fit your iTop installation
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">// iTop Server location
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span>&lt;span style="color:#000">define&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;ITOP_SERVER_URL&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;https://localhost/webservices/itop.wsdl.php&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">);&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">// Valid credentials for connecting to iTop
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span>&lt;span style="color:#000">define&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;ITOP_USERNAME&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;admin&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">);&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">define&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;ITOP_PASSWORD&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;admin2&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">);&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">// Default settings for creating the incident ticket
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span>&lt;span style="color:#000">define&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;DEFAULT_IMPACT&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">2&lt;/span>&lt;span style="color:#000;font-weight:bold">);&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// 1 = department, 2 = service, 3 = person
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span>&lt;span style="color:#000">define&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;DEFAULT_URGENCY&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">2&lt;/span>&lt;span style="color:#000;font-weight:bold">);&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// 1 = high, 2 = medium, 3 = low
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span>&lt;span style="color:#000">define&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;DEFAULT_CALLER_NAME&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;Dali&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">);&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">define&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;DEFAULT_ORGANIZATION_NAME&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;Demo&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">);&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">define&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;DEFAULT_SERVICE_NAME&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;HW Monitoring&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">);&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">define&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;DEFAULT_SERVICE_SUBCATEGORY&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;HW Troubleshooting&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">);&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">define&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;DEFAULT_WORKGROUP_NAME&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;Hardware support&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">);&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">// End of instance-specific parameters
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="在-nagios-服务器上安装文件">在 Nagios 服务器上安装文件&lt;/h3>
&lt;ul>
&lt;li>
&lt;p>步骤 1：将此脚本复制到 &lt;yourDirectory> 以及 itopsoaptypes.class.inc.php&lt;/p>
&lt;/li>
&lt;li>
&lt;p>步骤 2：通过将以下内容添加到 Nagios 命令文件（大多数情况下称为 commands.cfg）来定义新的 Nagios 命令&lt;/p>
&lt;/li>
&lt;/ul>
&lt;pre tabindex="0">&lt;code># Create incident tickets in iTop command definition
define command{
command_name create-iTop-ticket
command_line &amp;lt;php path&amp;gt; &amp;lt;yourDirectory&amp;gt;/createTicket-nagios.php &amp;#34;$HOSTNAME$&amp;#34; &amp;#34;$SERVICEDESC$&amp;#34; &amp;#34;$SERVICESTATE$&amp;#34; &amp;#34;$SERVICESTATETYPE$&amp;#34; &amp;#34;$LONGSERVICEOUTPUT$&amp;#34;
}
&lt;/code>&lt;/pre>&lt;p>其中 &lt;php path> 是 PHP 的完整路径，&amp;lt;your_directory&amp;gt; 是您安装 iTop 脚本的路径。&lt;/p>
&lt;p>您可以通过手动运行 PHP 脚本来测试工单创建。&lt;/p>
&lt;p>步骤 3：对每个应该触发工单创建的主机或服务模板的事件处理程序选项中使用此命令：&lt;/p>
&lt;p>您可以使用以下选项为所有主机和服务全局定义，这些选项大多在 nagios.cfg 中定义：&lt;/p>
&lt;pre tabindex="0">&lt;code>global_host_event_handler=create-iTop-ticket
global_service_event_handler= create-iTop-ticket
&lt;/code>&lt;/pre>&lt;p>或者为每个主机和服务使用以下选项：&lt;/p>
&lt;pre tabindex="0">&lt;code>event_handler create-iTop-ticket
event_handler_enabled 1
&lt;/code>&lt;/pre>&lt;p>如果您选择后者，则必须为您创建的每个主机和服务模板配置处理程序。&lt;/p>
&lt;p>完成后，下次在 Nagios 中出现 HARD 告警时，它将自动在 iTop 中创建工单！&lt;/p>
&lt;h2 id="在-itop-中查看-nagios-状态">在 iTop 中查看 Nagios 状态&lt;/h2>
&lt;p>当在 iTop 中显示给定对象的详细信息时，浏览器框架中有多个选项卡。您可以创建一个新的选项卡，显示所选对象的 Nagios 框架。&lt;/p>
&lt;ul>
&lt;li>修改 &lt;code>InfrastructureCI&lt;/code> 类中的 &lt;code>DisplayBareRelations&lt;/code> 函数&lt;/li>
&lt;li>这将为所有非编辑模式下的生产环境 InfrastructureCI 添加 Nagios 选项卡。&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">function&lt;/span> &lt;span style="color:#000">DisplayBareRelations&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">WebPage&lt;/span> &lt;span style="color:#000">$oPage&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#000">$bEditMode&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#204a87;font-weight:bold">false&lt;/span>&lt;span style="color:#000;font-weight:bold">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">parent&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">::&lt;/span>&lt;span style="color:#c4a000">DisplayBareRelations&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">$oPage&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#000">$bEditMode&lt;/span>&lt;span style="color:#000;font-weight:bold">);&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">if&lt;/span> &lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">!&lt;/span>&lt;span style="color:#000">$bEditMode&lt;/span>&lt;span style="color:#000;font-weight:bold">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">$sStatus&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#000">$this&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">-&amp;gt;&lt;/span>&lt;span style="color:#c4a000">Get&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;status&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">);&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">$sName&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#000">$this&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">-&amp;gt;&lt;/span>&lt;span style="color:#c4a000">Get&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;name&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">);&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">if&lt;/span> &lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">$sStatus&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">==&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;production&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">$oPage&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">-&amp;gt;&lt;/span>&lt;span style="color:#c4a000">SetCurrentTab&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">Dict&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">::&lt;/span>&lt;span style="color:#c4a000">S&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;Nagios&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">));&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">$oPage&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">-&amp;gt;&lt;/span>&lt;span style="color:#c4a000">add&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;&amp;lt;div id=&amp;#34;checkmk&amp;#34; style=&amp;#34;width:100%;height:500px;&amp;#34;&amp;gt;&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">);&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">$oPage&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">-&amp;gt;&lt;/span>&lt;span style="color:#c4a000">add&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;&amp;lt;iframe style=&amp;#34;border:0;padding:0;margin:0;width:100%;height:500px;overflow:auto&amp;#34; &amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">);&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">$oPage&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">-&amp;gt;&lt;/span>&lt;span style="color:#c4a000">add&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;src=&amp;#34;https://&amp;lt;nagios_path&amp;gt;/cgi-bin/status.cgi?host=&amp;#39;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">.&lt;/span>&lt;span style="color:#000">$sName&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">.&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;&amp;#34;&amp;gt;&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">);&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">$oPage&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">-&amp;gt;&lt;/span>&lt;span style="color:#c4a000">add&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;&amp;lt;/iframe&amp;gt;&amp;lt;/div&amp;gt;&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">);&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>不要忘记将 &amp;ldquo;&amp;lt;nagios_path&amp;gt;&amp;rdquo; 设置为适合您安装的 URL。&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>注意&lt;/strong>，显示仅在您在 iTop 中使用的对象名称等于 Nagios 中对象的主机名时才有效。&lt;/p>
&lt;p>完成后，保存文件并在浏览器中重新加载&amp;quot;详细信息&amp;quot;页面。&lt;/p>
&lt;p>结果应该类似于下图：&lt;/p>
&lt;hr>
&lt;p>原文：&lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:advancedtopics:nagios">https://www.itophub.io/wiki/page?id=3_2_0:advancedtopics:nagios&lt;/a>&lt;/p>
&lt;p>Last modified: 2024/09/10 10:25 by127.0.0.1&lt;/p>
&lt;p>版本：3_2_0/advancedtopics/nagios.txt · Last modified: 2024/09/10 10:25 by 127.0.0.1&lt;/p></description></item><item><title>Docs: 导入 LinkedSet</title><link>/docs/integration/import_a_link_set/</link><pubDate>Fri, 27 Jun 2025 00:00:00 +0000</pubDate><guid>/docs/integration/import_a_link_set/</guid><description>
&lt;div class="pageinfo pageinfo-primary">
&lt;p>本文档介绍如何在 iTop 中导入 n:n 关联集合（LinkedSet）。更多详细内容请参考 &lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:advancedtopics:import_a_link_set">iTop 官方文档&lt;/a>。&lt;/p>
&lt;/div>
&lt;h2 id="什么是-linkedset">什么是 LinkedSet？&lt;/h2>
&lt;p>LinkedSet 是一种表示相关对象列表的属性，在对象详情页中以标签页形式展示。LinkedSet 分为两种类型：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>1:n&lt;/strong> — 例如&amp;quot;位置上的设备&amp;quot;：一台设备只能位于&lt;strong>一个&lt;/strong>位置，而一个位置可以容纳&lt;strong>多台&lt;/strong>设备。&lt;/li>
&lt;li>&lt;strong>n:n&lt;/strong> — 例如&amp;quot;团队的成员（人员）&amp;quot;：一个人可以属于&lt;strong>多个&lt;/strong>团队，一个团队也由&lt;strong>多名&lt;/strong>人员组成。&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>只有 n:n 类型的 LinkedSet 可以被导入。&lt;/strong> 你无法导入关联对象本身，它们必须已经存在于 iTop 中。&lt;/p>
&lt;p>&lt;strong>示例&lt;/strong>：&lt;code>UserLocal&lt;/code> 具有属性 &lt;code>profile_list&lt;/code>，该属性表示通过类 &lt;code>lnkUserProfile&lt;/code> 附加到 &lt;code>UserLocal&lt;/code> 对象上的权限列表。&lt;/p>
&lt;h2 id="何时可以导入关联集合">何时可以导入关联集合？&lt;/h2>
&lt;p>以下所有数据输入功能都支持指定关联集合：&lt;/p>
&lt;ul>
&lt;li>交互式 CSV 导入&lt;/li>
&lt;li>命令行（CLI）导入&lt;/li>
&lt;li>数据同步&lt;/li>
&lt;/ul>
&lt;h2 id="示例导入用户">示例：导入用户&lt;/h2>
&lt;p>以下示例展示如何在导入用户的同时，为其指定允许的组织（Allowed Organizations）和权限（Profiles）。这两个属性均为多对多关系：&lt;/p>
&lt;ul>
&lt;li>假设需要为同一用户允许访问 3 个组织。&lt;/li>
&lt;li>源文件中的每个组织可以通过其 &lt;strong>id&lt;/strong>、&lt;strong>name&lt;/strong> 或 &lt;strong>code&lt;/strong> 来识别。&lt;/li>
&lt;li>当加载类似&amp;quot;允许的组织&amp;quot;（Allowed Organizations）这样的 &lt;code>AttributeLinkedSetIndirect&lt;/code> 时，所需字段来自 n:n 关系类（此处为 &lt;code>URP_UserOrg&lt;/code>），这意味着你通常只能提供 &lt;code>allowed_org_id&lt;/code>。&lt;/li>
&lt;li>但一般情况下，对于 n:n 关系，你了解的可能是远程对象的某些字段值，而非其在 iTop 中的 id。此时，你可以使用远程对象的某个编码来指定，语法如下：
&lt;ul>
&lt;li>关系类中指向远程对象的外部键（如 &lt;code>allowed_org_id&lt;/code>）&lt;/li>
&lt;li>一个破折号后跟一个大于号：&lt;code>-&amp;gt;&lt;/code>&lt;/li>
&lt;li>远程对象的属性编码（如 &lt;code>name&lt;/code>）&lt;/li>
&lt;li>一个冒号：&lt;code>:&lt;/code>&lt;/li>
&lt;li>用于检索远程对象的值（如 &lt;code>Demo&lt;/code>）&lt;/li>
&lt;li>一根竖线 &lt;code>|&lt;/code>，用于分隔需要关联到同一用户的两个远程对象&lt;/li>
&lt;li>重复上述步骤&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;p>完整格式如下：&lt;/p>
&lt;pre tabindex="0">&lt;code>allowed_org_id-&amp;gt;name:Demo|allowed_org_id-&amp;gt;code:IT
&lt;/code>&lt;/pre>&lt;ul>
&lt;li>&lt;code>allowed_org_id-&amp;gt;id:4&lt;/code> &lt;strong>无效&lt;/strong>！&lt;/li>
&lt;li>请改用 &lt;code>allowed_org_id:4&lt;/code>&lt;/li>
&lt;/ul>
&lt;p>在此示例中，我们结合使用了不同的方式来识别同一用户的多对多关系中的组织。虽然这种方式可行，但日常使用中可能并不常见。&lt;/p>
&lt;pre tabindex="0">&lt;code>Person-&amp;gt;Email,Login,Language,Password,Profiles,Allowed Organizations
&amp;#34;monet@demo.com&amp;#34;,&amp;#34;portal&amp;#34;,&amp;#34;EN US&amp;#34;,1234,&amp;#34;profileid-&amp;gt;name:Portal user&amp;#34;,&amp;#34;allowed_org_id-&amp;gt;code:IT|allowed_org_id-&amp;gt;name:Demo|allowed_org_id:1&amp;#34;
&lt;/code>&lt;/pre>&lt;h2 id="高级选项">高级选项&lt;/h2>
&lt;p>假设需要为用户指定一组权限，并为每个权限注明授予原因。该&amp;quot;原因&amp;quot;字段属于多对多关系类。&lt;/p>
&lt;p>&lt;strong>首先，附加单个权限：&lt;/strong>&lt;/p>
&lt;pre tabindex="0">&lt;code>profileid-&amp;gt;name:Configuration Manager
&lt;/code>&lt;/pre>&lt;p>权限通过类 &lt;code>URP_UserProfile-&amp;gt;profileid&lt;/code> 进行关联。此处指定了类 &lt;code>URP_Profile&lt;/code> 的属性 &lt;code>name&lt;/code> 必须匹配 &amp;ldquo;Configuration Manager&amp;rdquo;。&lt;/p>
&lt;p>&lt;strong>现在，记录授予该权限的原因：&lt;/strong>&lt;/p>
&lt;pre tabindex="0">&lt;code>profileid-&amp;gt;name:Configuration Manager;reason:operations manager
&lt;/code>&lt;/pre>&lt;p>&lt;strong>最后，为同一登录账号赋予另一个角色：&lt;/strong>&lt;/p>
&lt;pre tabindex="0">&lt;code>profileid-&amp;gt;name:Configuration Manager;reason:operations manager|profileid-&amp;gt;name:Change Supervisor
&lt;/code>&lt;/pre>&lt;p>每个链接都是独立指定的。&lt;/p>
&lt;p>每个新的链接规范都必须以 &lt;code>|&lt;/code> 开头。&lt;/p>
&lt;p>如果需要指定的原因中包含被解析为分隔符的字符，可以用引号将整个属性规范包裹起来：&lt;/p>
&lt;pre tabindex="0">&lt;code>profileid-&amp;gt;name:Configuration Manager;reason:operations manager|profileid-&amp;gt;name:Change Supervisor;&amp;#39;reason:manager ;-)&amp;#39;
&lt;/code>&lt;/pre>&lt;h2 id="限制与已知问题">限制与已知问题&lt;/h2>
&lt;p>无。&lt;/p>
&lt;h2 id="配置">配置&lt;/h2>
&lt;p>在配置文件中，可以修改以下参数：&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>配置项&lt;/th>
&lt;th>说明&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>link_set_item_separator&lt;/code>&lt;/td>
&lt;td>列表中两项之间的分隔符&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>link_set_attribute_separator&lt;/code>&lt;/td>
&lt;td>两个属性之间的分隔符&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>link_set_value_separator&lt;/code>&lt;/td>
&lt;td>属性名与值之间的分隔符&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>link_set_attribute_qualifier&lt;/code>&lt;/td>
&lt;td>整个属性的限定符&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;hr>
&lt;p>原文：&lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:advancedtopics:import_a_link_set">https://www.itophub.io/wiki/page?id=3_2_0:advancedtopics:import_a_link_set&lt;/a>&lt;/p>
&lt;p>版本：3_2_0/advancedtopics/import_a_link_set.txt · Last modified: 2024/09/10 10:25 by 127.0.0.1&lt;/p></description></item><item><title>Docs: LDAP 人员同步</title><link>/docs/integration/09-synchro_howto_personsfromldap/</link><pubDate>Fri, 27 Jun 2025 00:00:00 +0000</pubDate><guid>/docs/integration/09-synchro_howto_personsfromldap/</guid><description>
&lt;div class="pageinfo pageinfo-primary">
&lt;p>本指南演示如何从 LDAP 目录同步人员信息到 iTop。&lt;/p>
&lt;/div>
&lt;h2 id="先决条件">先决条件&lt;/h2>
&lt;p>您需要：&lt;/p>
&lt;ul>
&lt;li>了解如何从 LDAP 服务器提取人员信息并将其保存到 .CSV 文件&lt;/li>
&lt;li>拥有一个 iTop 系统（安装了演示数据），并可以访问管理员账户&lt;/li>
&lt;li>了解如何使用命令行连接到您的 iTop Web 服务器&lt;/li>
&lt;/ul>
&lt;h2 id="本教程的目标">本教程的目标&lt;/h2>
&lt;p>在本教程中，您将学习如何：&lt;/p>
&lt;ul>
&lt;li>创建和配置用于将一类对象同步到 iTop 中的同步数据源&lt;/li>
&lt;li>将外部数据输入并同步到此同步数据源&lt;/li>
&lt;li>理解同步状态报告&lt;/li>
&lt;/ul>
&lt;h2 id="分步说明">分步说明&lt;/h2>
&lt;h3 id="初始配置">初始配置&lt;/h3>
&lt;p>在这里，您将创建同步数据源。&lt;/p>
&lt;p>在&lt;strong>管理工具&lt;/strong>菜单中，点击&lt;strong>同步数据源&lt;/strong>。&lt;/p>
&lt;p>点击&lt;strong>创建新的同步数据源&lt;/strong>。&lt;/p>
&lt;p>在以下屏幕中，在适当的字段中输入&lt;strong>名称&lt;/strong>（来自 LDAP 的人员）、&lt;strong>目标类&lt;/strong>（Person）和&lt;strong>用户&lt;/strong>（admin）。&lt;/p>
&lt;p>点击&lt;strong>创建&lt;/strong>按钮以创建数据源。&lt;/p>
&lt;p>数据源创建完成后，点击右上角的&lt;strong>修改（铅笔）&lt;strong>并编辑&lt;/strong>属性&lt;/strong>选项卡。&lt;/p>
&lt;h3 id="第一次同步初始加载">第一次同步：初始加载&lt;/h3>
&lt;p>然后在 iTop 根目录下的 &amp;ldquo;data&amp;rdquo; 目录中创建文本文件 &amp;ldquo;persons.csv&amp;rdquo;，内容如下：&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-csv" data-lang="csv">primary_key;name;first_name;org_id;email;status;function;phone;notify
1;Monet;Claude;Demo;claude.monet@demo.com;Active;Manager;+33123456789;Yes
2;Flaubert;Gustave;IT Department;gustave.flaubert@demo.com;Active;;+33987654321;No
&lt;/code>&lt;/pre>&lt;p>在 iTop 根目录中从命令行启动以下命令：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>php synchro/synchro_import.php --auth_user&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>admin --auth_pwd&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>admin --csvfile&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>./data/persons.csv --data_source_id&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#0000cf;font-weight:bold">1&lt;/span> --output&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>summary
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>auth_user：您的 iTop 登录名&lt;/li>
&lt;li>auth_pwd：您的 iTop 密码&lt;/li>
&lt;li>data_source_id：上面创建的同步数据源的标识符&lt;/li>
&lt;/ul>
&lt;p>预期输出：&lt;/p>
&lt;pre tabindex="0">&lt;code>#Load--------------
#------------------
#Data Source: 1
#Synchronize: 1
#Class: Person
#Separator: ;
#Qualifier: &amp;#34;
#Charset Encoding:UTF-8
#Date format: &amp;lt;none&amp;gt;
#Data Size: 228
#Data Lines: 2
#Columns: primary_key, name, first_name, org_id, email, status, function, phone, notify
#Output format: summary
#Simulate: 0
#Change tracking comment:
#Issues (before synchro): 0
#Created (before synchro): 2
#Updated (before synchro): 0
#Synchronization---
#------------------
#Replicas: 2
#Replicas touched since last synchro: 2
#Objects deleted: 0
#Objects deletion errors: 0
#Objects obsoleted: 0
#Objects obsolescence errors: 0
#Objects created: 0 (0 warnings)
#Objects creation errors: 0
#Objects updated: 0 (0 warnings)
#Objects update errors: 0
#Objects reconciled (updated): 2 (0 warnings)
#Objects reconciled (unchanged): 0 (0 warnings)
#Objects reconciliation errors: 0
#Replica disappeared, no action taken: 0
&lt;/code>&lt;/pre>&lt;p>检查同步数据源的状态（如果需要，请按&amp;quot;刷新&amp;quot;图标）&lt;/p>
&lt;p>您可以看到 2 个人员已更新。&lt;/p>
&lt;p>导航到联系人 &amp;ldquo;Claude Monet&amp;rdquo; 的详细信息，您可以看到此对象现在已同步：&lt;/p>
&lt;p>检查&amp;quot;活动面板&amp;quot;以查看最近的更改：&lt;/p>
&lt;p>如果您尝试修改人员，您可以看到其大多数属性都被锁定：&lt;/p>
&lt;h3 id="第二次同步更新联系人">第二次同步：更新联系人&lt;/h3>
&lt;p>修改文件 &amp;ldquo;persons.csv&amp;rdquo;，将 Claude Monet 的职能从 &amp;ldquo;Manager&amp;rdquo; 更改为 &amp;ldquo;Famous painter&amp;rdquo;。修改 iTop 根目录下 data 目录中的文本文件 &amp;ldquo;persons.csv&amp;rdquo;，内容如下：&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-csv" data-lang="csv">primary_key;name;first_name;org_id;email;status;function;phone;notify
1;Monet;Claude;Demo;claude.monet@demo.com;Active;Famous painter;+33123456789;Yes
2;Flaubert;Gustave;IT Department;gustave.flaubert@demo.com;Active;;+33987654321;No
&lt;/code>&lt;/pre>&lt;p>使用相同的命令再次启动导入和同步：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>php synchro/synchro_import.php --auth_user&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>admin --auth_pwd&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>admin --csvfile&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>./data/persons.csv --data_source_id&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#0000cf;font-weight:bold">1&lt;/span> --output&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>summary
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>输出如下：&lt;/p>
&lt;pre tabindex="0">&lt;code>#Load--------------
#------------------
#Data Source: 1
#Synchronize: 1
#Class: Person
#Separator: ;
#Qualifier: &amp;#34;
#Charset Encoding:UTF-8
#Date format: &amp;lt;none&amp;gt;
#Data Size: 235
#Data Lines: 2
#Columns: primary_key, name, first_name, org_id, email, status, function, phone, notify
#Output format: summary
#Simulate: 0
#Change tracking comment:
#Issues (before synchro): 0
#Created (before synchro): 0
#Updated (before synchro): 2
#Synchronization---
#------------------
#Replicas: 2
#Replicas touched since last synchro: 2
#Objects deleted: 0
#Objects deletion errors: 0
#Objects obsoleted: 0
#Objects obsolescence errors: 0
#Objects created: 0 (0 warnings)
#Objects creation errors: 0
#Objects updated: 1 (0 warnings)
#Objects update errors: 0
#Objects reconciled (updated): 0 (0 warnings)
#Objects reconciled (unchanged): 0 (0 warnings)
#Objects reconciliation errors: 0
#Replica disappeared, no action taken: 0
&lt;/code>&lt;/pre>&lt;p>同步输出表明只有 1 个对象已更新。这也可以在同步数据源的&amp;quot;状态&amp;quot;选项卡上查看：&lt;/p>
&lt;p>然后导航到人员 &amp;ldquo;Claude Monet&amp;rdquo; 的详细信息：&lt;/p>
&lt;h3 id="第三次同步创建新联系人">第三次同步：创建新联系人&lt;/h3>
&lt;p>接下来，在 iTop 根目录下 data 目录中的文本文件 &amp;ldquo;persons.csv&amp;rdquo; 末尾添加一行：&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-csv" data-lang="csv">primary_key;name;first_name;org_id;email;status;function;phone;notify
1;Monet;Claude;Demo;claude.monet@demo.com;Active;Famous painter;+33123456789;Yes
2;Flaubert;Gustave;IT Department;gustave.flaubert@demo.com;Active;;+33987654321;No
3;Mondrian;Piet;Demo;p.m@demo.com;Active;;+334433221100;No
&lt;/code>&lt;/pre>&lt;p>使用相同的命令再次启动导入和同步：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>php synchro/synchro_import.php --auth_user&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>admin --auth_pwd&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>admin --csvfile&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>./data/persons.csv --data_source_id&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#0000cf;font-weight:bold">1&lt;/span> --output&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>summary
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>输出如下：&lt;/p>
&lt;pre tabindex="0">&lt;code>#Load--------------
#------------------
#Data Source: 1
#Synchronize: 1
#Class: Person
#Separator: ;
#Qualifier: &amp;#34;
#Charset Encoding:UTF-8
#Date format: &amp;lt;none&amp;gt;
#Data Size: 294
#Data Lines: 3
#Columns: primary_key, name, first_name, org_id, email, status, function, phone, notify
#Output format: summary
#Simulate: 0
#Change tracking comment:
#Issues (before synchro): 0
#Created (before synchro): 1
#Updated (before synchro): 2
#Synchronization---
#------------------
#Replicas: 3
#Replicas touched since last synchro: 3
#Objects deleted: 0
#Objects deletion errors: 0
#Objects obsoleted: 0
#Objects obsolescence errors: 0
#Objects created: 1 (0 warnings)
#Objects creation errors: 0
#Objects updated: 0 (0 warnings)
#Objects update errors: 0
#Objects reconciled (updated): 0 (0 warnings)
#Objects reconciled (unchanged): 0 (0 warnings)
#Objects reconciliation errors: 0
#Replica disappeared, no action taken: 0
&lt;/code>&lt;/pre>&lt;p>同步输出表明只有 1 个对象已更新。这也可以在同步数据源的&amp;quot;状态&amp;quot;选项卡上查看：&lt;/p>
&lt;p>使用页面左上角的全局搜索搜索 &amp;ldquo;Contact:Piet&amp;rdquo;，然后点击对象名称以显示其详细信息。&lt;/p>
&lt;h3 id="第四次同步错误案例">第四次同步：错误案例&lt;/h3>
&lt;p>然后在 iTop 根目录下 &amp;ldquo;data&amp;rdquo; 目录中的文本文件 &amp;ldquo;persons.csv&amp;rdquo; 末尾再添加一行：&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-csv" data-lang="csv">primary_key;name;first_name;org_id;email;status;function;phone;notify
1;Monet;Claude;Demo;claude.monet@demo.com;Active;Famous painter;+33123456789;Yes
2;Flaubert;Gustave;IT Department;gustave.flaubert@demo.com;Active;;+33987654321;No
3;Mondrian;Piet;Demo;p.m@demo.com;Active;;+334433221100;No
4;Klimt;Gurstav;Test;gustav.klimt@demo.com;Active;;+335566778899;No
&lt;/code>&lt;/pre>&lt;p>使用相同的命令再次启动导入和同步：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>php synchro/synchro_import.php --auth_user&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>admin --auth_pwd&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>admin --csvfile&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>./data/persons.csv --data_source_id&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#0000cf;font-weight:bold">1&lt;/span> --output&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>summary
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>输出如下：&lt;/p>
&lt;pre tabindex="0">&lt;code>#Load--------------
#------------------
#Data Source: 5
#Synchronize: 1
#Class: Person
#Separator: ;
#Qualifier: &amp;#34;
#Charset Encoding:UTF-8
#Date format: &amp;lt;none&amp;gt;
#Data Size: 361
#Data Lines: 4
#Columns: primary_key, name, first_name, org_id, email, status, function, phone, notify
#Output format: summary
#Simulate: 0
#Change tracking comment:
#Issues (before synchro): 0
#Created (before synchro): 1
#Updated (before synchro): 3
#Synchronization---
#------------------
#Replicas: 4
#Replicas touched since last synchro: 4
#Objects deleted: 0
#Objects deletion errors: 0
#Objects obsoleted: 0
#Objects obsolescence errors: 0
#Objects created: 0 (0 warnings)
#Objects creation errors: 1
#Objects updated: 0 (0 warnings)
#Objects update errors: 0
#Objects reconciled (updated): 0 (0 warnings)
#Objects reconciled (unchanged): 0 (0 warnings)
#Objects reconciliation errors: 0
#Replica disappeared, no action taken: 0
&lt;/code>&lt;/pre>&lt;p>同步输出表明有一个错误。&lt;/p>
&lt;p>您可以点击 &amp;lsquo;Show&amp;rsquo; 以获取有关刚刚发生的错误的更多详细信息。&lt;/p>
&lt;p>然后修改 iTop 根目录下 &amp;ldquo;data&amp;rdquo; 目录中的文本文件 &amp;ldquo;persons.csv&amp;rdquo;，修复最后一行（将 Test 替换为 Demo）：&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-csv" data-lang="csv">primary_key;name;first_name;org_id;email;status;function;phone;notify
1;Monet;Claude;Demo;claude.monet@demo.com;Active;Famous painter;+33123456789;Yes
2;Flaubert;Gustave;IT Department;gustave.flaubert@demo.com;Active;;+33987654321;No
3;Mondrian;Piet;Demo;p.m@demo.com;Active;;+334433221100;No
4;Klimt;Gurstav;Demo;gustav.klimt@demo.com;Active;;+335566778899;No
&lt;/code>&lt;/pre>&lt;p>使用相同的命令再次启动导入和同步：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>php synchro/synchro_import.php --auth_user&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>admin --auth_pwd&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>admin --csvfile&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>./data/persons.csv --data_source_id&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#0000cf;font-weight:bold">1&lt;/span> --output&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>summary
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>应该没有错误，并且联系人 Gustav Klimt 在 Demo 组织中创建。&lt;/p>
&lt;hr>
&lt;p>原文：&lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:advancedtopics:synchro_howto_personsfromldap">https://www.itophub.io/wiki/page?id=3_2_0:advancedtopics:synchro_howto_personsfromldap&lt;/a>&lt;/p>
&lt;p>Last modified: 2024/09/10 10:25 by127.0.0.1&lt;/p>
&lt;p>版本：3_2_0/advancedtopics/synchro_howto_personsfromldap.txt · Last modified: 2024/09/10 10:25 by 127.0.0.1&lt;/p></description></item><item><title>Docs: REST/JSON API 测试台</title><link>/docs/integration/rest_json_playground/</link><pubDate>Fri, 27 Jun 2025 00:00:00 +0000</pubDate><guid>/docs/integration/rest_json_playground/</guid><description>
&lt;div class="pageinfo pageinfo-primary">
&lt;p>本文档介绍 iTop REST/JSON API 测试台。更多详细内容请参考 &lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:advancedtopics:rest_json_playground">iTop 官方文档&lt;/a>。&lt;/p>
&lt;/div>
&lt;h2 id="概述">概述&lt;/h2>
&lt;p>iTop 提供了一个在线 REST/JSON API 测试台，你可以通过表单连接到自己的 iTop 服务器，测试 API 的 &lt;code>list_operations&lt;/code> 和 &lt;code>core/get&lt;/code> 等操作。&lt;/p>
&lt;p>你可以在 &lt;a href="https://jsfiddle.net/">jsfiddle&lt;/a> 中查看对应的代码并进行调整。&lt;/p>
&lt;h2 id="使用方式">使用方式&lt;/h2>
&lt;p>在测试台页面中填写以下信息：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>iTop 服务器 URL&lt;/strong>：你的 iTop 服务器地址（末尾不带斜杠 &lt;code>/&lt;/code>）&lt;/li>
&lt;li>&lt;strong>iTop 登录名&lt;/strong>：你的 iTop 账号&lt;/li>
&lt;li>&lt;strong>密码&lt;/strong>：你的 iTop 密码&lt;/li>
&lt;li>&lt;strong>API 版本&lt;/strong>：选择要使用的 API 版本&lt;/li>
&lt;li>&lt;strong>操作&lt;/strong>：选择要测试的操作（如 &lt;code>List Operations&lt;/code>）&lt;/li>
&lt;li>&lt;strong>格式&lt;/strong>：选择 &lt;code>JSON&lt;/code> 或 &lt;code>JSON-P&lt;/code>&lt;/li>
&lt;/ul>
&lt;p>填写完成后，点击执行即可查看返回结果。&lt;/p>
&lt;h2 id="示例结果">示例结果&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;/code>&lt;/pre>&lt;/div>&lt;hr>
&lt;p>原文：&lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:advancedtopics:rest_json_playground">https://www.itophub.io/wiki/page?id=3_2_0:advancedtopics:rest_json_playground&lt;/a>&lt;/p>
&lt;p>版本：3_2_0/advancedtopics/rest_json_playground.txt · Last modified: 2024/09/10 10:25 by 127.0.0.1&lt;/p></description></item><item><title>Docs: 导出数据 - export.php</title><link>/docs/integration/exportdata_v1/</link><pubDate>Fri, 27 Jun 2025 00:00:00 +0000</pubDate><guid>/docs/integration/exportdata_v1/</guid><description>
&lt;div class="pageinfo pageinfo-primary">
&lt;p>本文档介绍 iTop 的通用数据导出 Web 服务 &lt;code>export.php&lt;/code>。该服务基于 OQL 查询导出数据，支持多种输出格式，可通过命令行或 HTTP 请求调用。更多详细内容请参考 &lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:advancedtopics:exportdata_v1">iTop 官方文档&lt;/a>。&lt;/p>
&lt;/div>
&lt;h2 id="用途">用途&lt;/h2>
&lt;p>iTop 提供了一个通用的 Web 服务，用于基于 OQL 查询导出任何数据。这可用于从 iTop 提取数据，以便在第三方工具中使用。此 Web 服务可以返回多种格式的数据：&lt;/p>
&lt;ul>
&lt;li>HTML&lt;/li>
&lt;li>CSV&lt;/li>
&lt;li>XML&lt;/li>
&lt;li>Spreadsheet（纯 HTML，用于导入 Excel 或 OpenOffice）&lt;/li>
&lt;li>XLSX（Excel 2007、2010、2013…）&lt;/li>
&lt;/ul>
&lt;p>此服务可以通过命令行接口在 iTop 服务器本地调用，也可以通过 HTTP 请求远程调用。&lt;/p>
&lt;h2 id="使用方法">使用方法&lt;/h2>
&lt;h3 id="命令行接口">命令行接口&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>php /var/www/itop/webservices/export.php --auth_login&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>login --auth_pwd&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>password --expression&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>query --format&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>csv --fields&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&amp;lt;以逗号分隔的字段列表&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="远程-web-访问">远程 Web 访问&lt;/h3>
&lt;p>有多种方式可以通过 Web 连接远程访问该服务。以下是使用 wget 命令的语法：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>wget --http-user&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>login --http-password&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>password http://itopserver/webservices/export.php?expression&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>query&lt;span style="color:#000;font-weight:bold">&amp;amp;&lt;/span>&lt;span style="color:#000">format&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>csv&lt;span style="color:#000;font-weight:bold">&amp;amp;&lt;/span>&lt;span style="color:#000">fields&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&amp;lt;以逗号分隔的字段列表&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="参数">参数&lt;/h2>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>参数&lt;/th>
&lt;th>描述&lt;/th>
&lt;th>默认值&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>param_file&lt;/td>
&lt;td>参数文件 - 参见参数文件&lt;/td>
&lt;td>-&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>auth_login&lt;/td>
&lt;td>用户登录名 - 仅 CLI 模式&lt;/td>
&lt;td>-&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>auth_pwd&lt;/td>
&lt;td>用户密码 - 仅 CLI 模式&lt;/td>
&lt;td>-&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>expression&lt;/td>
&lt;td>OQL 查询&lt;/td>
&lt;td>如果缺少 &amp;lsquo;query&amp;rsquo; 则为必填&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>query&lt;/td>
&lt;td>存储在查询手册中的查询标识符。参见查询手册&lt;/td>
&lt;td>如果缺少 &amp;rsquo;expression&amp;rsquo; 则为必填&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>format&lt;/td>
&lt;td>&lt;code>spreadsheet&lt;/code>（推荐用于与 MS-Excel Web 查询集成）、&lt;code>html&lt;/code>、&lt;code>xml&lt;/code>、&lt;code>csv&lt;/code> 或 &lt;code>xlsx&lt;/code>&lt;/td>
&lt;td>html&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>fields&lt;/td>
&lt;td>以逗号分隔的属性列表（例如 &amp;ldquo;name,brand,model&amp;rdquo;）；对 XML 输出无效；对 1.2（RC）之前的 HTML 版本无效&lt;/td>
&lt;td>由 &lt;code>&amp;lt;expression&amp;gt;&lt;/code> 指定的类的所有属性代码。这些属性未本地化&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>no_localize&lt;/td>
&lt;td>如果设置为 0，则标题和值将使用已登录用户的语言进行本地化。设置为 1 以使用内部属性代码和值（枚举）&lt;/td>
&lt;td>0&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h2 id="输出">输出&lt;/h2>
&lt;h3 id="html">HTML&lt;/h3>
&lt;h3 id="spreadsheet">Spreadsheet&lt;/h3>
&lt;p>此格式专用于集成到电子表格中。特别是，这是与 Excel Web 查询一起使用的推荐方法。&lt;/p>
&lt;p>有关更多信息，请参阅文章 &amp;ldquo;如何使用 iTop 查询创建 Excel 报告&amp;rdquo;。&lt;/p>
&lt;h3 id="xml">XML&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-xml" data-lang="xml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&amp;lt;?xml version=&amp;#34;1.0&amp;#34; encoding=&amp;#34;UTF-8&amp;#34;?&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">&amp;lt;Set&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;Server&lt;/span> &lt;span style="color:#c4a000">alias=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;Server&amp;#34;&lt;/span> &lt;span style="color:#c4a000">id=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;1&amp;#34;&lt;/span>&lt;span style="color:#204a87;font-weight:bold">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;name&amp;gt;&lt;/span>dbserver1.demo.com&lt;span style="color:#204a87;font-weight:bold">&amp;lt;/name&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;status&amp;gt;&lt;/span>production&lt;span style="color:#204a87;font-weight:bold">&amp;lt;/status&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;org_id&amp;gt;&lt;/span>2&lt;span style="color:#204a87;font-weight:bold">&amp;lt;/org_id&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;importance&amp;gt;&lt;/span>medium&lt;span style="color:#204a87;font-weight:bold">&amp;lt;/importance&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;contact_list&amp;gt;&lt;/span>Sorry, no yet implemented&lt;span style="color:#204a87;font-weight:bold">&amp;lt;/contact_list&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;document_list&amp;gt;&lt;/span>Sorry, no yet implemented&lt;span style="color:#204a87;font-weight:bold">&amp;lt;/document_list&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;solution_list&amp;gt;&lt;/span>Sorry, no yet implemented&lt;span style="color:#204a87;font-weight:bold">&amp;lt;/solution_list&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;contract_list&amp;gt;&lt;/span>Sorry, no yet implemented&lt;span style="color:#204a87;font-weight:bold">&amp;lt;/contract_list&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;ticket_list&amp;gt;&lt;/span>Sorry, no yet implemented&lt;span style="color:#204a87;font-weight:bold">&amp;lt;/ticket_list&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;brand&amp;gt;&lt;/span>HP&lt;span style="color:#204a87;font-weight:bold">&amp;lt;/brand&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;model&amp;gt;&lt;/span>DL380&lt;span style="color:#204a87;font-weight:bold">&amp;lt;/model&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;serial_number&amp;gt;&amp;lt;/serial_number&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;asset_ref&amp;gt;&amp;lt;/asset_ref&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;nwinterface_list&amp;gt;&lt;/span>Sorry, no yet implemented&lt;span style="color:#204a87;font-weight:bold">&amp;lt;/nwinterface_list&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;description&amp;gt;&amp;lt;/description&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;location_id&amp;gt;&lt;/span>1&lt;span style="color:#204a87;font-weight:bold">&amp;lt;/location_id&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;location_details&amp;gt;&amp;lt;/location_details&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;management_ip&amp;gt;&lt;/span>10.1.1.10&lt;span style="color:#204a87;font-weight:bold">&amp;lt;/management_ip&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;default_gateway&amp;gt;&lt;/span>255.255.255.0&lt;span style="color:#204a87;font-weight:bold">&amp;lt;/default_gateway&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;cpu&amp;gt;&lt;/span>2&lt;span style="color:#204a87;font-weight:bold">&amp;lt;/cpu&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;ram&amp;gt;&lt;/span>16Gb&lt;span style="color:#204a87;font-weight:bold">&amp;lt;/ram&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;hdd&amp;gt;&lt;/span>120Gb&lt;span style="color:#204a87;font-weight:bold">&amp;lt;/hdd&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;os_family&amp;gt;&lt;/span>Linux&lt;span style="color:#204a87;font-weight:bold">&amp;lt;/os_family&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;os_version&amp;gt;&lt;/span>Debian (Lenny)&lt;span style="color:#204a87;font-weight:bold">&amp;lt;/os_version&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;application_list&amp;gt;&lt;/span>Sorry, no yet implemented&lt;span style="color:#204a87;font-weight:bold">&amp;lt;/application_list&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;patch_list&amp;gt;&lt;/span>Sorry, no yet implemented&lt;span style="color:#204a87;font-weight:bold">&amp;lt;/patch_list&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;/Server&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;Server&lt;/span> &lt;span style="color:#c4a000">alias=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;Server&amp;#34;&lt;/span> &lt;span style="color:#c4a000">id=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;6&amp;#34;&lt;/span>&lt;span style="color:#204a87;font-weight:bold">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;name&amp;gt;&lt;/span>webserver.demo.com&lt;span style="color:#204a87;font-weight:bold">&amp;lt;/name&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;status&amp;gt;&lt;/span>production&lt;span style="color:#204a87;font-weight:bold">&amp;lt;/status&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;org_id&amp;gt;&lt;/span>2&lt;span style="color:#204a87;font-weight:bold">&amp;lt;/org_id&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;importance&amp;gt;&lt;/span>medium&lt;span style="color:#204a87;font-weight:bold">&amp;lt;/importance&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;contact_list&amp;gt;&lt;/span>Sorry, no yet implemented&lt;span style="color:#204a87;font-weight:bold">&amp;lt;/contact_list&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;document_list&amp;gt;&lt;/span>Sorry, no yet implemented&lt;span style="color:#204a87;font-weight:bold">&amp;lt;/document_list&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;solution_list&amp;gt;&lt;/span>Sorry, no yet implemented&lt;span style="color:#204a87;font-weight:bold">&amp;lt;/solution_list&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;contract_list&amp;gt;&lt;/span>Sorry, no yet implemented&lt;span style="color:#204a87;font-weight:bold">&amp;lt;/contract_list&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;ticket_list&amp;gt;&lt;/span>Sorry, no yet implemented&lt;span style="color:#204a87;font-weight:bold">&amp;lt;/ticket_list&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;brand&amp;gt;&lt;/span>IBM&lt;span style="color:#204a87;font-weight:bold">&amp;lt;/brand&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;model&amp;gt;&lt;/span>x3400 Tower Server&lt;span style="color:#204a87;font-weight:bold">&amp;lt;/model&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;serial_number&amp;gt;&amp;lt;/serial_number&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;asset_ref&amp;gt;&amp;lt;/asset_ref&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;nwinterface_list&amp;gt;&lt;/span>Sorry, no yet implemented&lt;span style="color:#204a87;font-weight:bold">&amp;lt;/nwinterface_list&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;description&amp;gt;&amp;lt;/description&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;location_id&amp;gt;&lt;/span>1&lt;span style="color:#204a87;font-weight:bold">&amp;lt;/location_id&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;location_details&amp;gt;&amp;lt;/location_details&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;management_ip&amp;gt;&lt;/span>10.1.1.20&lt;span style="color:#204a87;font-weight:bold">&amp;lt;/management_ip&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;default_gateway&amp;gt;&lt;/span>255.255.255.0&lt;span style="color:#204a87;font-weight:bold">&amp;lt;/default_gateway&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;cpu&amp;gt;&lt;/span>4&lt;span style="color:#204a87;font-weight:bold">&amp;lt;/cpu&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;ram&amp;gt;&lt;/span>8Gb&lt;span style="color:#204a87;font-weight:bold">&amp;lt;/ram&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;hdd&amp;gt;&lt;/span>240Gb&lt;span style="color:#204a87;font-weight:bold">&amp;lt;/hdd&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;os_family&amp;gt;&lt;/span>Unix&lt;span style="color:#204a87;font-weight:bold">&amp;lt;/os_family&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;os_version&amp;gt;&lt;/span>AIX 4.0&lt;span style="color:#204a87;font-weight:bold">&amp;lt;/os_version&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;application_list&amp;gt;&lt;/span>Sorry, no yet implemented&lt;span style="color:#204a87;font-weight:bold">&amp;lt;/application_list&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;patch_list&amp;gt;&lt;/span>Sorry, no yet implemented&lt;span style="color:#204a87;font-weight:bold">&amp;lt;/patch_list&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;/Server&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">&amp;lt;/Set&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="csv">CSV&lt;/h3>
&lt;pre tabindex="0">&lt;code class="language-csv" data-lang="csv">id,Name,Management IP
1,&amp;#34;dbserver1.demo.com&amp;#34;,&amp;#34;10.1.1.10&amp;#34;
6,&amp;#34;webserver.demo.com&amp;#34;,&amp;#34;10.1.1.20&amp;#34;
&lt;/code>&lt;/pre>&lt;h2 id="允许的用户">允许的用户&lt;/h2>
&lt;p>此页面的使用没有任何限制。&lt;/p>
&lt;h2 id="历史版本">历史版本&lt;/h2>
&lt;ul>
&lt;li>0.9 首次实现此功能&lt;/li>
&lt;li>1.2.1 添加参数 &amp;lsquo;query&amp;rsquo;，作为 &amp;rsquo;expression&amp;rsquo; 的替代方案&lt;/li>
&lt;li>1.2.1 添加格式 &amp;lsquo;spreadsheet&amp;rsquo;，可拆分日期和时间列&lt;/li>
&lt;li>1.2.1 修复 HTTPS 和 MS-IIS 的停止问题（Trac:#485）&lt;/li>
&lt;li>1.2.1 参数文件可以指定为参数（文档有误：实际上未实现）&lt;/li>
&lt;li>1.2.1 分支 Spreadsheet 格式：修复时间问题（Trac:#541）。解决方法是使用 XML 格式（Excel 支持此格式）&lt;/li>
&lt;li>2.0：添加标志 no_localize&lt;/li>
&lt;li>2.1.0：添加 XLSX 格式&lt;/li>
&lt;/ul>
&lt;hr>
&lt;p>原文：&lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:advancedtopics:exportdata_v1">https://www.itophub.io/wiki/page?id=3_2_0:advancedtopics:exportdata_v1&lt;/a>&lt;/p>
&lt;p>版本：3_2_0/advancedtopics/exportdata_v1.txt · Last modified: 2024/09/10 10:25 by 127.0.0.1&lt;/p></description></item><item><title>Docs: 通过 API 创建工单</title><link>/docs/integration/10-create_ticket/</link><pubDate>Fri, 27 Jun 2025 00:00:00 +0000</pubDate><guid>/docs/integration/10-create_ticket/</guid><description>
&lt;div class="pageinfo pageinfo-primary">
&lt;p>本指南演示如何通过 REST/JSON API 自动创建 iTop 工单，适用于监控告警自动转工单、邮件转工单等场景。&lt;/p>
&lt;/div>
&lt;h2 id="概述">概述&lt;/h2>
&lt;p>本页包含各种语言的&lt;strong>示例&lt;/strong>脚本，用于从命令行在 iTop 中创建工单。这些脚本使用 iTop 的 REST/JSON API 在远程 iTop 服务器上创建工单（脚本必须通过 http/https 访问 iTop）。这些脚本旨在与 Nagios 一起使用，因为它们需要 4 个参数：host、service、service_status 和 service_state_type，但唯一有意义的参数是 host，并且调整脚本以满足您的特定需求非常容易。&lt;/p>
&lt;p>选择您最喜欢的脚本语言，不要犹豫&lt;strong>定制&lt;/strong>它。&lt;/p>
&lt;h2 id="使用-php">使用 PHP&lt;/h2>
&lt;p>本节提供了一个用 &lt;strong>PHP&lt;/strong> 脚本语言编写的示例脚本，用于在（远程）iTop 中使用 REST/JSON Web 服务创建工单。为了简化此示例，仅执行了最少的参数验证和返回状态验证。&lt;/p>
&lt;p>要求：带有 cURL 模块的 PHP。&lt;/p>
&lt;p>限制：Nagios 中的 &amp;ldquo;host&amp;rdquo; 值必须对应于 iTop 中唯一的 FunctionalCI。&lt;/p>
&lt;p>以下 PHP 脚本创建一个 UserRequest 工单（您可以将配置更改为创建 Incident 或 Change），并将提供的 host（= FunctionalCI）附加到它。工单在与 host 相同的组织中创建。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">#!/usr/bin/php
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">&amp;lt;?&lt;/span>&lt;span style="color:#000">php&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">// Configuration
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span>&lt;span style="color:#000">$ITOP_URL&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;https://demo.combodo.com/simple&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">$ITOP_USER&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;admin&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">$ITOP_PWD&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;admin&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">$TICKET_CLASS&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;UserRequest&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">$TITLE&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;Service Down on %1$s&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">$DESCRIPTION&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;The Service &amp;#34;%2$s&amp;#34; is down on &amp;#34;%1$s&amp;#34;&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">$COMMENT&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;Created from PHP&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">if&lt;/span> &lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">$argc&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">!=&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">5&lt;/span>&lt;span style="color:#000;font-weight:bold">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">echo&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Usage: &lt;/span>&lt;span style="color:#4e9a06">{&lt;/span>&lt;span style="color:#000">$argv&lt;/span>&lt;span style="color:#000;font-weight:bold">[&lt;/span>&lt;span style="color:#0000cf;font-weight:bold">0&lt;/span>&lt;span style="color:#000;font-weight:bold">]&lt;/span>&lt;span style="color:#4e9a06">}&lt;/span>&lt;span style="color:#4e9a06"> &amp;lt;host&amp;gt; &amp;lt;service&amp;gt; &amp;lt;service_status&amp;gt; &amp;lt;service_state_type&amp;gt;&lt;/span>&lt;span style="color:#4e9a06">\n&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">exit&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">$host&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#000">$argv&lt;/span>&lt;span style="color:#000;font-weight:bold">[&lt;/span>&lt;span style="color:#0000cf;font-weight:bold">1&lt;/span>&lt;span style="color:#000;font-weight:bold">];&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">$service&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#000">$argv&lt;/span>&lt;span style="color:#000;font-weight:bold">[&lt;/span>&lt;span style="color:#0000cf;font-weight:bold">2&lt;/span>&lt;span style="color:#000;font-weight:bold">];&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">$service_status&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#000">$argv&lt;/span>&lt;span style="color:#000;font-weight:bold">[&lt;/span>&lt;span style="color:#0000cf;font-weight:bold">3&lt;/span>&lt;span style="color:#000;font-weight:bold">];&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">$service_state_type&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#000">$argv&lt;/span>&lt;span style="color:#000;font-weight:bold">[&lt;/span>&lt;span style="color:#0000cf;font-weight:bold">4&lt;/span>&lt;span style="color:#000;font-weight:bold">];&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">$url&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#000">$ITOP_URL&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">.&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;/webservices/rest.php?version=1.0&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">if&lt;/span> &lt;span style="color:#000;font-weight:bold">((&lt;/span>&lt;span style="color:#000">$service_status&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">!=&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;OK&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">)&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">&amp;amp;&amp;amp;&lt;/span> &lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">$service_status&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">!=&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;UP&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">)&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">&amp;amp;&amp;amp;&lt;/span> &lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">$service_state_type&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">==&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;HARD&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">))&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">$payload&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#204a87;font-weight:bold">array&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#39;operation&amp;#39;&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&amp;gt;&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;core/create&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#39;class&amp;#39;&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&amp;gt;&lt;/span> &lt;span style="color:#000">$TICKET_CLASS&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#39;fields&amp;#39;&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&amp;gt;&lt;/span> &lt;span style="color:#204a87;font-weight:bold">array&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#39;org_id&amp;#39;&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&amp;gt;&lt;/span> &lt;span style="color:#000">sprintf&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;SELECT Organization AS O JOIN FunctionalCI AS CI ON CI.org_id = O.id WHERE CI.name=&amp;#34;%1$s&amp;#34;&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#000">$host&lt;/span>&lt;span style="color:#000;font-weight:bold">),&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#39;title&amp;#39;&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&amp;gt;&lt;/span> &lt;span style="color:#000">sprintf&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">$TITLE&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#000">$host&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#000">$service&lt;/span>&lt;span style="color:#000;font-weight:bold">),&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#39;description&amp;#39;&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&amp;gt;&lt;/span> &lt;span style="color:#000">sprintf&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">$DESCRIPTION&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#000">$host&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#000">$service&lt;/span>&lt;span style="color:#000;font-weight:bold">),&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#39;functionalcis_list&amp;#39;&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&amp;gt;&lt;/span> &lt;span style="color:#204a87;font-weight:bold">array&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">array&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;functionalci_id&amp;#39;&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&amp;gt;&lt;/span> &lt;span style="color:#000">sprintf&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;SELECT FunctionalCI WHERE name=&amp;#39;%s&amp;#39;&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#000">$host&lt;/span>&lt;span style="color:#000;font-weight:bold">),&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;impact_code&amp;#39;&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&amp;gt;&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;manual&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">),&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">),&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">),&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#39;comment&amp;#39;&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&amp;gt;&lt;/span> &lt;span style="color:#000">$COMMENT&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#39;output_fields&amp;#39;&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&amp;gt;&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;id&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">);&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">$data&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#204a87;font-weight:bold">array&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#39;auth_user&amp;#39;&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&amp;gt;&lt;/span> &lt;span style="color:#000">$ITOP_USER&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#39;auth_pwd&amp;#39;&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&amp;gt;&lt;/span> &lt;span style="color:#000">$ITOP_PWD&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#39;json_data&amp;#39;&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&amp;gt;&lt;/span> &lt;span style="color:#000">json_encode&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">$payload&lt;/span>&lt;span style="color:#000;font-weight:bold">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">);&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">$options&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#204a87;font-weight:bold">array&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">CURLOPT_POST&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&amp;gt;&lt;/span> &lt;span style="color:#000">count&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">$data&lt;/span>&lt;span style="color:#000;font-weight:bold">),&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">CURLOPT_POSTFIELDS&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&amp;gt;&lt;/span> &lt;span style="color:#000">http_build_query&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">$data&lt;/span>&lt;span style="color:#000;font-weight:bold">),&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8f5902;font-style:italic">// Various options...
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">CURLOPT_RETURNTRANSFER&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&amp;gt;&lt;/span> &lt;span style="color:#204a87;font-weight:bold">true&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// return the content of the request
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">CURLOPT_HEADER&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&amp;gt;&lt;/span> &lt;span style="color:#204a87;font-weight:bold">false&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// don&amp;#39;t return the headers in the output
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">CURLOPT_FOLLOWLOCATION&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&amp;gt;&lt;/span> &lt;span style="color:#204a87;font-weight:bold">true&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// follow redirects
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">CURLOPT_ENCODING&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&amp;gt;&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// handle all encodings
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">CURLOPT_AUTOREFERER&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&amp;gt;&lt;/span> &lt;span style="color:#204a87;font-weight:bold">true&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// set referer on redirect
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">CURLOPT_CONNECTTIMEOUT&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&amp;gt;&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">120&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// timeout on connect
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">CURLOPT_TIMEOUT&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&amp;gt;&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">120&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// timeout on response
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// Disabling SSL verification
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">CURLOPT_SSL_VERIFYPEER&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&amp;gt;&lt;/span> &lt;span style="color:#204a87;font-weight:bold">false&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// Disable SSL certificate validation
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000">CURLOPT_SSL_VERIFYHOST&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&amp;gt;&lt;/span> &lt;span style="color:#204a87;font-weight:bold">false&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#8f5902;font-style:italic">// Disable host vs certificate validation
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#000;font-weight:bold">);&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">$handle&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#000">curl_init&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">$url&lt;/span>&lt;span style="color:#000;font-weight:bold">);&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">curl_setopt_array&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">$handle&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#000">$options&lt;/span>&lt;span style="color:#000;font-weight:bold">);&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">$response&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#000">curl_exec&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">$handle&lt;/span>&lt;span style="color:#000;font-weight:bold">);&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">$errno&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#000">curl_errno&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">$handle&lt;/span>&lt;span style="color:#000;font-weight:bold">);&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">$error_message&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#000">curl_error&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">$handle&lt;/span>&lt;span style="color:#000;font-weight:bold">);&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">curl_close&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">$handle&lt;/span>&lt;span style="color:#000;font-weight:bold">);&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">if&lt;/span> &lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">$errno&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">!==&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">0&lt;/span>&lt;span style="color:#000;font-weight:bold">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">echo&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Problem opening URL: &lt;/span>&lt;span style="color:#4e9a06">$url&lt;/span>&lt;span style="color:#4e9a06">, &lt;/span>&lt;span style="color:#4e9a06">$error_message\n&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">exit&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">$decoded_response&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#000">json_decode&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">$response&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#204a87;font-weight:bold">true&lt;/span>&lt;span style="color:#000;font-weight:bold">);&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">if&lt;/span> &lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">$decoded_response&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">===&lt;/span> &lt;span style="color:#204a87;font-weight:bold">false&lt;/span>&lt;span style="color:#000;font-weight:bold">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">echo&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Error: &amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">.&lt;/span>&lt;span style="color:#000">print_r&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">$response&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#204a87;font-weight:bold">true&lt;/span>&lt;span style="color:#000;font-weight:bold">)&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">.&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&lt;/span>&lt;span style="color:#4e9a06">\n&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">else&lt;/span> &lt;span style="color:#204a87;font-weight:bold">if&lt;/span> &lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">$decoded_response&lt;/span>&lt;span style="color:#000;font-weight:bold">[&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;code&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">]&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">!=&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">0&lt;/span>&lt;span style="color:#000;font-weight:bold">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">echo&lt;/span> &lt;span style="color:#000">$decoded_response&lt;/span>&lt;span style="color:#000;font-weight:bold">[&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;message&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">]&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">.&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&lt;/span>&lt;span style="color:#4e9a06">\n&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">else&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">echo&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Ticket created.&lt;/span>&lt;span style="color:#4e9a06">\n&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">else&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">echo&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Service state type !=&amp;#39;HARD&amp;#39;, doing nothing.&lt;/span>&lt;span style="color:#4e9a06">\n&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="用法">用法&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>create-ticket.php &amp;lt;host&amp;gt; &amp;lt;service&amp;gt; &amp;lt;service_status&amp;gt; &amp;lt;service_state_type&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="配置">配置&lt;/h3>
&lt;p>编辑脚本开头的以下行（在脚本开头）以根据您的环境进行调整：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">// Configuration
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span>&lt;span style="color:#000">$ITOP_URL&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;https://demo.combodo.com/simple&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">$ITOP_USER&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;admin&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">$ITOP_PWD&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;admin&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">$TICKET_CLASS&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;UserRequest&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">$TITLE&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;Service Down on %1$s&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">$DESCRIPTION&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;The Service &amp;#34;%2$s&amp;#34; is down on &amp;#34;%1$s&amp;#34;&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">$COMMENT&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;Created from PHP&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="故障排除">故障排除&lt;/h3>
&lt;p>您可以通过手动运行脚本来测试工单创建。例如，如果您的 iTop 中存在名为 Server1 的服务器，您可以运行以下命令来创建工单：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>create-ticket.php &lt;span style="color:#4e9a06">&amp;#34;Server1&amp;#34;&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Manual Test&amp;#34;&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;DOWN&amp;#34;&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;HARD&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="使用-perl">使用 Perl&lt;/h2>
&lt;p>本节提供了一个用 &lt;strong>Perl&lt;/strong> 脚本语言编写的示例脚本，用于在（远程）iTop 中使用 REST/JSON Web 服务创建工单。为了简化此示例，仅执行了最少的参数验证和返回状态验证。&lt;/p>
&lt;p>要求：带有 LWP 和 JSON 模块的 Perl。&lt;/p>
&lt;p>限制：Nagios 中的 &amp;ldquo;host&amp;rdquo; 值必须对应于 iTop 中唯一的 FunctionalCI。&lt;/p>
&lt;p>以下 Perl 脚本创建一个 UserRequest 工单（您可以将配置更改为创建 Incident 或 Change），并将提供的 host（= FunctionalCI）附加到它。工单在与 host 相同的组织中创建。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-perl" data-lang="perl">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">#!/usr/bin/perl&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">use&lt;/span> &lt;span style="color:#000">strict&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">use&lt;/span> &lt;span style="color:#000">warnings&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">use&lt;/span> &lt;span style="color:#000">LWP&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">5.64&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">use&lt;/span> &lt;span style="color:#000">JSON&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"># Default values&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">my&lt;/span> &lt;span style="color:#000">$ITOP_URL&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;https://demo.combodo.com/simple&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">my&lt;/span> &lt;span style="color:#000">$ITOP_LOGIN&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;admin&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">my&lt;/span> &lt;span style="color:#000">$ITOP_PWD&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;admin&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">my&lt;/span> &lt;span style="color:#000">$TICKET_CLASS&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;UserRequest&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">my&lt;/span> &lt;span style="color:#000">$DEFAULT_DESCRIPTION&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;Service &amp;#34;%1$s&amp;#34; is down on host &amp;#34;%2$s&amp;#34;&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">my&lt;/span> &lt;span style="color:#000">$DEFAULT_TITLE&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;Service down on &amp;#34;%1$s&amp;#34;&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">my&lt;/span> &lt;span style="color:#000">$COMMENT&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Created from $0&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"># Parameters checking&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">my&lt;/span> &lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">$host&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#000">$service&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#000">$service_status&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#000">$service_state_type&lt;/span>&lt;span style="color:#000;font-weight:bold">)&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#000">@ARGV&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">if&lt;/span> &lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#204a87;font-weight:bold">not&lt;/span> &lt;span style="color:#204a87">defined&lt;/span> &lt;span style="color:#000">$host&lt;/span>&lt;span style="color:#000;font-weight:bold">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87">die&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Parameter 1: &amp;#39;host&amp;#39; needed.\n&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">if&lt;/span> &lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#204a87;font-weight:bold">not&lt;/span> &lt;span style="color:#204a87">defined&lt;/span> &lt;span style="color:#000">$service&lt;/span>&lt;span style="color:#000;font-weight:bold">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87">die&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Parameter 2: &amp;#39;service&amp;#39; needed.\n&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">if&lt;/span> &lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#204a87;font-weight:bold">not&lt;/span> &lt;span style="color:#204a87">defined&lt;/span> &lt;span style="color:#000">$service_status&lt;/span>&lt;span style="color:#000;font-weight:bold">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87">die&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Parameter 3: &amp;#39;service status&amp;#39; needed.\n&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">if&lt;/span> &lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#204a87;font-weight:bold">not&lt;/span> &lt;span style="color:#204a87">defined&lt;/span> &lt;span style="color:#000">$service_state_type&lt;/span>&lt;span style="color:#000;font-weight:bold">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87">die&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Parameter 4: &amp;#39;service state type&amp;#39; needed.\n&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">if&lt;/span> &lt;span style="color:#000;font-weight:bold">(&lt;/span> &lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">$service_status&lt;/span> &lt;span style="color:#204a87;font-weight:bold">ne&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;OK&amp;#34;&lt;/span> &lt;span style="color:#000;font-weight:bold">)&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">&amp;amp;&amp;amp;&lt;/span> &lt;span style="color:#000;font-weight:bold">(&lt;/span> &lt;span style="color:#000">$service_status&lt;/span> &lt;span style="color:#204a87;font-weight:bold">ne&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;UP&amp;#34;&lt;/span> &lt;span style="color:#000;font-weight:bold">)&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">&amp;amp;&amp;amp;&lt;/span> &lt;span style="color:#000;font-weight:bold">(&lt;/span> &lt;span style="color:#000">$service_state_type&lt;/span> &lt;span style="color:#204a87;font-weight:bold">eq&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;HARD&amp;#34;&lt;/span> &lt;span style="color:#000;font-weight:bold">))&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">my&lt;/span> &lt;span style="color:#000">$url&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;$ITOP_URL/webservices/rest.php?version=1.0&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">my&lt;/span> &lt;span style="color:#000">$browser&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#000">LWP::UserAgent&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">-&amp;gt;&lt;/span>&lt;span style="color:#204a87;font-weight:bold">new&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">$browser&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">-&amp;gt;&lt;/span>&lt;span style="color:#000">ssl_opts&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">verify_hostname&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&amp;gt;&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">0&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#000">SSL_verify_mode&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&amp;gt;&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">0x00&lt;/span>&lt;span style="color:#000;font-weight:bold">);&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">my&lt;/span> &lt;span style="color:#000">%ci_link&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#000;font-weight:bold">(&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;functionalci_id&amp;#39;&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&amp;gt;&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;SELECT FunctionalCI WHERE name=&amp;#39;$host&amp;#39;&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;impact_code&amp;#39;&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&amp;gt;&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;manual&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">);&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">my&lt;/span> &lt;span style="color:#000">%fields&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#000;font-weight:bold">(&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#39;org_id&amp;#39;&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&amp;gt;&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;SELECT Organization AS O JOIN FunctionalCI AS CI ON CI.org_id=O.id WHERE CI.name=&amp;#39;$host&amp;#39;&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#39;title&amp;#39;&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&amp;gt;&lt;/span> &lt;span style="color:#204a87">sprintf&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">$DEFAULT_TITLE&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#000">$host&lt;/span>&lt;span style="color:#000;font-weight:bold">),&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#39;description&amp;#39;&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&amp;gt;&lt;/span> &lt;span style="color:#204a87">sprintf&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">$DEFAULT_DESCRIPTION&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#000">$service&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#000">$host&lt;/span>&lt;span style="color:#000;font-weight:bold">),&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#39;functionalcis_list&amp;#39;&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&amp;gt;&lt;/span> &lt;span style="color:#000;font-weight:bold">[&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">\&lt;/span>&lt;span style="color:#000">%ci_link&lt;/span> &lt;span style="color:#000;font-weight:bold">],&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">);&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">my&lt;/span> &lt;span style="color:#000">%data&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#000;font-weight:bold">(&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#39;operation&amp;#39;&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&amp;gt;&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;core/create&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#39;class&amp;#39;&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&amp;gt;&lt;/span> &lt;span style="color:#000">$TICKET_CLASS&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#39;comment&amp;#39;&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&amp;gt;&lt;/span> &lt;span style="color:#000">$COMMENT&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#39;output_fields&amp;#39;&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&amp;gt;&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;id&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#39;fields&amp;#39;&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&amp;gt;&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">\&lt;/span>&lt;span style="color:#000">%fields&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">);&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">my&lt;/span> &lt;span style="color:#000">$response&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#000">$browser&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">-&amp;gt;&lt;/span>&lt;span style="color:#000">post&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">$url&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#000;font-weight:bold">[&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#39;auth_user&amp;#39;&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&amp;gt;&lt;/span> &lt;span style="color:#000">$ITOP_LOGIN&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#39;auth_pwd&amp;#39;&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&amp;gt;&lt;/span> &lt;span style="color:#000">$ITOP_PWD&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#39;json_data&amp;#39;&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&amp;gt;&lt;/span> &lt;span style="color:#000">encode_json&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">\&lt;/span>&lt;span style="color:#000">%data&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">]);&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">if&lt;/span> &lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">$response&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">-&amp;gt;&lt;/span>&lt;span style="color:#000">is_success&lt;/span>&lt;span style="color:#000;font-weight:bold">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">my&lt;/span> &lt;span style="color:#000">$output&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#000">decode_json&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span> &lt;span style="color:#000">$response&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">-&amp;gt;&lt;/span>&lt;span style="color:#000">decoded_content&lt;/span>&lt;span style="color:#000;font-weight:bold">);&lt;/span> &lt;span style="color:#8f5902;font-style:italic"># or whatever&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">if&lt;/span> &lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">$output&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">-&amp;gt;&lt;/span>&lt;span style="color:#000;font-weight:bold">{&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;code&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">}&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">!=&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">0&lt;/span>&lt;span style="color:#000;font-weight:bold">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">print&lt;/span> &lt;span style="color:#000">$output&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">-&amp;gt;&lt;/span>&lt;span style="color:#000;font-weight:bold">{&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;message&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">.&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;\n&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">else&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">print&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Ticket created.\n&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">else&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87">die&lt;/span> &lt;span style="color:#000">$response&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">-&amp;gt;&lt;/span>&lt;span style="color:#000">status_line&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">else&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">print&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Service state type !=&amp;#39;HARD&amp;#39;, doing nothing.\n&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="用法-1">用法&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>create-ticket.pl &amp;lt;host&amp;gt; &amp;lt;service&amp;gt; &amp;lt;service_status&amp;gt; &amp;lt;service_state_type&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="配置-1">配置&lt;/h3>
&lt;p>编辑脚本开头的以下行（在脚本开头）以根据您的环境进行调整：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-perl" data-lang="perl">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"># Default values&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">my&lt;/span> &lt;span style="color:#000">$ITOP_URL&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;https://demo.combodo.com/simple&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">my&lt;/span> &lt;span style="color:#000">$ITOP_LOGIN&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;admin&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">my&lt;/span> &lt;span style="color:#000">$ITOP_PWD&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;admin&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">my&lt;/span> &lt;span style="color:#000">$TICKET_CLASS&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;UserRequest&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">my&lt;/span> &lt;span style="color:#000">$DEFAULT_DESCRIPTION&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;Service &amp;#34;%1$s&amp;#34; is down on host &amp;#34;%2$s&amp;#34;&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">my&lt;/span> &lt;span style="color:#000">$DEFAULT_TITLE&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;Service down on &amp;#34;%1$s&amp;#34;&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">my&lt;/span> &lt;span style="color:#000">$COMMENT&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Created from $0&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="故障排除-1">故障排除&lt;/h3>
&lt;p>您可以通过手动运行脚本来测试工单创建。例如，如果您的 iTop 中存在名为 Server1 的服务器，您可以运行以下命令来创建工单：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>create-ticket.pl &lt;span style="color:#4e9a06">&amp;#34;Server1&amp;#34;&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Manual Test&amp;#34;&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;DOWN&amp;#34;&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;HARD&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="使用-python">使用 Python&lt;/h2>
&lt;p>本节提供了一个用 &lt;strong>python&lt;/strong> 脚本语言编写的示例脚本，用于在（远程）iTop 中使用 REST/JSON Web 服务创建工单。为了简化此示例，仅执行了最少的参数验证和返回状态验证。&lt;/p>
&lt;p>要求：带有 requests、json 和（显然）sys 包的 python。&lt;/p>
&lt;p>限制：Nagios 中的 &amp;ldquo;host&amp;rdquo; 值必须对应于 iTop 中唯一的 FunctionalCI。&lt;/p>
&lt;p>以下 python 脚本创建一个 UserRequest 工单（您可以将配置更改为创建 Incident 或 Change），并将提供的 host（= FunctionalCI）附加到它。工单在与 host 相同的组织中创建。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">#!/usr/bin/python&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">import&lt;/span> &lt;span style="color:#000">requests&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">import&lt;/span> &lt;span style="color:#000">json&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">import&lt;/span> &lt;span style="color:#000">sys&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">ITOP_URL&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;https://demo.combodo.com/simple&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">ITOP_USER&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;admin&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">ITOP_PWD&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;admin&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">TICKET_CLASS&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;UserRequest&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">TITLE&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;Service down on &lt;/span>&lt;span style="color:#4e9a06">%(host)s&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">DESCRIPTION&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;The service &lt;/span>&lt;span style="color:#4e9a06">%(service)s&lt;/span>&lt;span style="color:#4e9a06"> is down on &lt;/span>&lt;span style="color:#4e9a06">%(host)s&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">COMMENT&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;Created from Python&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">if&lt;/span> &lt;span style="color:#204a87">len&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">sys&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">.&lt;/span>&lt;span style="color:#000">argv&lt;/span>&lt;span style="color:#000;font-weight:bold">)&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">!=&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">5&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87">print&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Usage: &amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">+&lt;/span>&lt;span style="color:#000">sys&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">.&lt;/span>&lt;span style="color:#000">argv&lt;/span>&lt;span style="color:#000;font-weight:bold">[&lt;/span>&lt;span style="color:#0000cf;font-weight:bold">0&lt;/span>&lt;span style="color:#000;font-weight:bold">]&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">+&lt;/span>&lt;span style="color:#4e9a06">&amp;#34; host service service_status service_state_type&lt;/span>&lt;span style="color:#4e9a06">\n&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">sys&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">.&lt;/span>&lt;span style="color:#000">exit&lt;/span>&lt;span style="color:#000;font-weight:bold">()&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">else&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87">print&lt;/span> &lt;span style="color:#204a87">str&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">sys&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">.&lt;/span>&lt;span style="color:#000">argv&lt;/span>&lt;span style="color:#000;font-weight:bold">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">host&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#000">sys&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">.&lt;/span>&lt;span style="color:#000">argv&lt;/span>&lt;span style="color:#000;font-weight:bold">[&lt;/span>&lt;span style="color:#0000cf;font-weight:bold">1&lt;/span>&lt;span style="color:#000;font-weight:bold">]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">service&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#000">sys&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">.&lt;/span>&lt;span style="color:#000">argv&lt;/span>&lt;span style="color:#000;font-weight:bold">[&lt;/span>&lt;span style="color:#0000cf;font-weight:bold">2&lt;/span>&lt;span style="color:#000;font-weight:bold">]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">service_status&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#000">sys&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">.&lt;/span>&lt;span style="color:#000">argv&lt;/span>&lt;span style="color:#000;font-weight:bold">[&lt;/span>&lt;span style="color:#0000cf;font-weight:bold">3&lt;/span>&lt;span style="color:#000;font-weight:bold">]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">service_state_type&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#000">sys&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">.&lt;/span>&lt;span style="color:#000">argv&lt;/span>&lt;span style="color:#000;font-weight:bold">[&lt;/span>&lt;span style="color:#0000cf;font-weight:bold">4&lt;/span>&lt;span style="color:#000;font-weight:bold">]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">if&lt;/span> &lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">service_status&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">!=&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;OK&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">)&lt;/span> &lt;span style="color:#204a87;font-weight:bold">and&lt;/span> &lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">service_status&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">!=&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;UP&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">)&lt;/span> &lt;span style="color:#204a87;font-weight:bold">and&lt;/span> &lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">service_state_type&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">==&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;HARD&amp;#34;&lt;/span> &lt;span style="color:#000;font-weight:bold">):&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">json_data&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#39;operation&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;core/create&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#39;class&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#000">TICKET_CLASS&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#39;fields&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#39;title&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#000">TITLE&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">%&lt;/span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;host&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#000">host&lt;/span> &lt;span style="color:#000;font-weight:bold">},&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#39;description&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#000">DESCRIPTION&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">%&lt;/span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;host&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#000">host&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;service&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#000">service&lt;/span> &lt;span style="color:#000;font-weight:bold">},&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#39;org_id&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;SELECT Organization AS O JOIN FunctionalCI AS CI ON CI.org_id = O.id WHERE CI.name=&amp;#34;&lt;/span>&lt;span style="color:#4e9a06">%(host)s&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&amp;#39;&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">%&lt;/span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;host&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#000">host&lt;/span>&lt;span style="color:#000;font-weight:bold">},&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#39;functionalcis_list&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#000;font-weight:bold">[&lt;/span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#39;functionalci_id&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;SELECT FunctionalCI WHERE name=&amp;#39;&lt;/span>&lt;span style="color:#4e9a06">%(host)s&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;&amp;#34;&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">%&lt;/span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;host&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#000">host&lt;/span>&lt;span style="color:#000;font-weight:bold">},&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#39;impact_code&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;manual&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">}],&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">},&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#39;comment&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#000">COMMENT&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#4e9a06">&amp;#39;output_fields&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;id&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">encoded_data&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#000">json&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">.&lt;/span>&lt;span style="color:#000">dumps&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">json_data&lt;/span>&lt;span style="color:#000;font-weight:bold">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">r&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#000">requests&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">.&lt;/span>&lt;span style="color:#000">post&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">ITOP_URL&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">+&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;/webservices/rest.php?version=1.0&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#000">verify&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#204a87;font-weight:bold">False&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#000">data&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#000;font-weight:bold">{&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;auth_user&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#000">ITOP_USER&lt;/span> &lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;auth_pwd&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#000">ITOP_PWD&lt;/span> &lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;json_data&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span> &lt;span style="color:#000">encoded_data&lt;/span>&lt;span style="color:#000;font-weight:bold">})&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">result&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#000">json&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">.&lt;/span>&lt;span style="color:#000">loads&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">r&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">.&lt;/span>&lt;span style="color:#000">text&lt;/span>&lt;span style="color:#000;font-weight:bold">);&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">if&lt;/span> &lt;span style="color:#000">result&lt;/span>&lt;span style="color:#000;font-weight:bold">[&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;code&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">]&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">==&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">0&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87">print&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Ticket created.&lt;/span>&lt;span style="color:#4e9a06">\n&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">else&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87">print&lt;/span> &lt;span style="color:#000">result&lt;/span>&lt;span style="color:#000;font-weight:bold">[&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;message&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">]&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">+&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&lt;/span>&lt;span style="color:#4e9a06">\n&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">else&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87">print&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Service state type !=&amp;#39;HARD&amp;#39;, doing nothing.&lt;/span>&lt;span style="color:#4e9a06">\n&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="用法-2">用法&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>create-ticket.py &amp;lt;host&amp;gt; &amp;lt;service&amp;gt; &amp;lt;service_status&amp;gt; &amp;lt;service_state_type&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="配置-2">配置&lt;/h3>
&lt;p>编辑脚本开头的以下行以根据您的环境进行调整：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">ITOP_URL&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;https://demo.combodo.com/simple&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">ITOP_USER&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;admin&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">ITOP_PWD&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;admin&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">TICKET_CLASS&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;UserRequest&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">TITLE&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;Service down on &lt;/span>&lt;span style="color:#4e9a06">%(host)s&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">DESCRIPTION&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;The service &lt;/span>&lt;span style="color:#4e9a06">%(service)s&lt;/span>&lt;span style="color:#4e9a06"> is down on &lt;/span>&lt;span style="color:#4e9a06">%(host)s&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">COMMENT&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;Created from Python&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="故障排除-2">故障排除&lt;/h3>
&lt;p>您可以通过手动运行脚本来测试工单创建。例如，如果您的 iTop 中存在名为 Server1 的服务器，您可以运行以下命令来创建工单：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>create-ticket.py &lt;span style="color:#4e9a06">&amp;#34;Server1&amp;#34;&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Manual Test&amp;#34;&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;DOWN&amp;#34;&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;HARD&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="使用-bash-和-wget">使用 bash 和 wget&lt;/h2>
&lt;p>本节提供了一个用 &lt;strong>bash&lt;/strong> 脚本语言编写的示例脚本，用于在（远程）iTop 中使用 REST/JSON Web 服务创建工单。为了简化此示例，仅执行了最少的参数验证和返回状态验证。&lt;/p>
&lt;p>要求：bash 和 wget。&lt;/p>
&lt;p>限制：Nagios 中的 &amp;ldquo;host&amp;rdquo; 值必须对应于 iTop 中唯一的 FunctionalCI。&lt;/p>
&lt;p>以下 bash 脚本创建一个 UserRequest 工单（您可以将配置更改为创建 Incident 或 Change），并将提供的 CI 附加到它。工单在与 CI 相同的组织中创建。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">#!/bin/bash
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span>&lt;span style="color:#8f5902;font-style:italic">##################################################################################&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"># #&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"># Example script for creating a UserRequest ticket via the REST/JSON webservices #&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"># #&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">##################################################################################&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"># iTop location and credentials, change them to suit your iTop installation&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">ITOP_URL&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;https://demo.combodo.com/simple&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">ITOP_USER&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;admin&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">ITOP_PWD&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;admin&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"># Parameters checking, see below for default values&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">if&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">[&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;&lt;/span>&lt;span style="color:#000">$1&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">==&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">]&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span> &lt;span style="color:#204a87;font-weight:bold">then&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87">echo&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Missing parameter 1: host&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87">exit&lt;/span> -1
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">else&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">HOST&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&lt;/span>&lt;span style="color:#000">$1&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">fi&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">if&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">[&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;&lt;/span>&lt;span style="color:#000">$2&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">==&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">]&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span> &lt;span style="color:#204a87;font-weight:bold">then&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87">echo&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Missing parameter 2: Service&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87">exit&lt;/span> -1
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">else&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">SERVICE&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&lt;/span>&lt;span style="color:#000">$2&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">fi&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">if&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">[&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;&lt;/span>&lt;span style="color:#000">$3&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">==&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">]&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span> &lt;span style="color:#204a87;font-weight:bold">then&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87">echo&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Missing parameter 3: Service Status&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87">exit&lt;/span> -1
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">else&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">SERVICE_STATUS&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&lt;/span>&lt;span style="color:#000">$3&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">fi&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">if&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">[&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;&lt;/span>&lt;span style="color:#000">$4&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">==&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;&amp;#34;&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">]&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span> &lt;span style="color:#204a87;font-weight:bold">then&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87">echo&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Missing parameter 4: Service State Type&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87">exit&lt;/span> -1
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">else&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">SERVICE_STATUS_TYPE&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&lt;/span>&lt;span style="color:#000">$4&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">fi&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"># Default values, adapt them to your configuration&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">TICKET_CLASS&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;UserRequest&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">ORGANIZATION&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;SELECT Organization JOIN FunctionalCI AS CI ON CI.org_id=Organization.id WHERE CI.name=&amp;#39;&amp;#34;&lt;/span>&lt;span style="color:#4e9a06">${&lt;/span>&lt;span style="color:#000">HOST&lt;/span>&lt;span style="color:#4e9a06">}&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&amp;#39;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">TITLE&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;Service Down on &lt;/span>&lt;span style="color:#000">$1&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">DESCRIPTION&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;The service &lt;/span>&lt;span style="color:#000">$SERVICE&lt;/span>&lt;span style="color:#4e9a06"> is in state &lt;/span>&lt;span style="color:#000">$SERVICE_STATUS&lt;/span>&lt;span style="color:#4e9a06"> on &lt;/span>&lt;span style="color:#000">$HOST&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"># Let&amp;#39;s create the ticket via the REST/JSON API&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">if&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">[[&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;&lt;/span>&lt;span style="color:#000">$SERVICE_STATUS&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&lt;/span> !&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;OK&amp;#34;&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">)&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">&amp;amp;&amp;amp;&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;&lt;/span>&lt;span style="color:#000">$SERVICE_STATUS&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&lt;/span> !&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;UP&amp;#34;&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">)&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">&amp;amp;&amp;amp;&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">(&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;&lt;/span>&lt;span style="color:#000">$SERVICE_STATUS_TYPE&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">==&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;HARD&amp;#34;&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">)&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">]]&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span> &lt;span style="color:#204a87;font-weight:bold">then&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">CIS_LIST&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;[{&amp;#34;functionalci_id&amp;#34;:&amp;#34;SELECT FunctionalCI WHERE name=\&amp;#34;&amp;#39;&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&lt;/span>&lt;span style="color:#000">$1&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;\&amp;#34;&amp;#34;, &amp;#34;impact_code&amp;#34;: &amp;#34;manual&amp;#34;}]&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">JSON_DATA&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;{&amp;#34;operation&amp;#34;:&amp;#34;core/create&amp;#34;, &amp;#34;class&amp;#34;:&amp;#34;&amp;#39;&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&lt;/span>&lt;span style="color:#4e9a06">${&lt;/span>&lt;span style="color:#000">TICKET_CLASS&lt;/span>&lt;span style="color:#4e9a06">}&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;&amp;#34;, &amp;#34;fields&amp;#34;: {&amp;#34;functionalcis_list&amp;#34;:&amp;#39;&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&lt;/span>&lt;span style="color:#4e9a06">${&lt;/span>&lt;span style="color:#000">CIS_LIST&lt;/span>&lt;span style="color:#4e9a06">}&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;, &amp;#34;org_id&amp;#34;:&amp;#34;&amp;#39;&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&lt;/span>&lt;span style="color:#4e9a06">${&lt;/span>&lt;span style="color:#000">ORGANIZATION&lt;/span>&lt;span style="color:#4e9a06">}&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;&amp;#34;, &amp;#34;title&amp;#34;:&amp;#34;&amp;#39;&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&lt;/span>&lt;span style="color:#000">$TITLE&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;&amp;#34;, &amp;#34;description&amp;#34;:&amp;#34;&amp;#39;&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&lt;/span>&lt;span style="color:#000">$DESCRIPTION&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;&amp;#34;}, &amp;#34;comment&amp;#34;: &amp;#34;Created by the Monitoring&amp;#34;, &amp;#34;output_fields&amp;#34;: &amp;#34;id&amp;#34;}&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">RESULT&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">`&lt;/span>wget -q --post-data&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;auth_user=&amp;#39;&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&lt;/span>&lt;span style="color:#4e9a06">${&lt;/span>&lt;span style="color:#000">ITOP_USER&lt;/span>&lt;span style="color:#4e9a06">}&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;&amp;amp;auth_pwd=&amp;#39;&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&lt;/span>&lt;span style="color:#4e9a06">${&lt;/span>&lt;span style="color:#000">ITOP_PWD&lt;/span>&lt;span style="color:#4e9a06">}&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;&amp;amp;json_data=&amp;#39;&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&lt;/span>&lt;span style="color:#4e9a06">${&lt;/span>&lt;span style="color:#000">JSON_DATA&lt;/span>&lt;span style="color:#4e9a06">}&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&lt;/span> --no-check-certificate -O - &lt;span style="color:#4e9a06">&amp;#34;&lt;/span>&lt;span style="color:#4e9a06">${&lt;/span>&lt;span style="color:#000">ITOP_URL&lt;/span>&lt;span style="color:#4e9a06">}&lt;/span>&lt;span style="color:#4e9a06">/webservices/rest.php?version=1.0&amp;#34;&lt;/span>&lt;span style="color:#4e9a06">`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">PATTERN&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;&amp;#34;key&amp;#34;:&amp;#34;([0-9])+&amp;#34;&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">if&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">[[&lt;/span> &lt;span style="color:#000">$RESULT&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>~ &lt;span style="color:#000">$PATTERN&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">]]&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span> &lt;span style="color:#204a87;font-weight:bold">then&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87">echo&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Ticket created successfully&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">else&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87">echo&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;ERROR: failed to create ticket&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87">echo&lt;/span> &lt;span style="color:#000">$RESULT&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">fi&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">else&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87">echo&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Service State Type != HARD, doing nothing&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">fi&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="用法-3">用法&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>create-ticket.bash &amp;lt;host&amp;gt; &amp;lt;service&amp;gt; &amp;lt;service_status&amp;gt; &amp;lt;service_state_type&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="配置-3">配置&lt;/h3>
&lt;p>更改脚本顶部的 3 行以适应您的环境：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">ITOP_URL&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;https://demo.combodo.com/simple&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">ITOP_USER&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;admin&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">ITOP_PWD&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;admin&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>然后更改默认值以满足您的需求：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"># Default values, adapt them to your configuration&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">TICKET_CLASS&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;UserRequest&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">ORGANIZATION&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;SELECT Organization JOIN FunctionalCI AS CI ON CI.org_id=Organization.id WHERE CI.name=&amp;#39;&amp;#34;&lt;/span>&lt;span style="color:#4e9a06">${&lt;/span>&lt;span style="color:#000">HOST&lt;/span>&lt;span style="color:#4e9a06">}&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&amp;#39;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">TITLE&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;Service Down on &lt;/span>&lt;span style="color:#000">$1&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">DESCRIPTION&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;The service &lt;/span>&lt;span style="color:#000">$SERVICE&lt;/span>&lt;span style="color:#4e9a06"> is in state &lt;/span>&lt;span style="color:#000">$SERVICE_STATUS&lt;/span>&lt;span style="color:#4e9a06"> on &lt;/span>&lt;span style="color:#000">$HOST&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="故障排除-3">故障排除&lt;/h3>
&lt;p>您可以通过手动运行脚本来测试工单创建。例如，如果您的 iTop 中存在名为 Server1 的服务器，您可以运行以下命令来创建工单：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>create-ticket.bash &lt;span style="color:#4e9a06">&amp;#34;Server1&amp;#34;&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Manual Test&amp;#34;&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;DOWN&amp;#34;&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;HARD&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="使用-bash-和-curl">使用 bash 和 curl&lt;/h2>
&lt;p>本节提供了一个用 &lt;strong>bash&lt;/strong> 脚本语言编写的示例脚本，用于在（远程）iTop 中使用 REST/JSON Web 服务更新工单。&lt;/p>
&lt;p>复制粘贴此命令作为示例：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>curl -X POST -F &lt;span style="color:#4e9a06">&amp;#39;version=1.3&amp;#39;&lt;/span> -F &lt;span style="color:#4e9a06">&amp;#39;auth_user=admin&amp;#39;&lt;/span> -F &lt;span style="color:#4e9a06">&amp;#39;auth_pwd=admin&amp;#39;&lt;/span> http://localhost/itop/webservices/rest.php --form-string &lt;span style="color:#4e9a06">&amp;#39;json_data={&amp;#34;operation&amp;#34;:&amp;#34;core/create&amp;#34;,&amp;#34;comment&amp;#34;:&amp;#34;Synchronization from blah...&amp;#34;, &amp;#34;class&amp;#34;:&amp;#34;UserRequest&amp;#34;,&amp;#34;output_fields&amp;#34;:&amp;#34;id, friendlyname&amp;#34;, &amp;#34;fields&amp;#34;:{&amp;#34;org_id&amp;#34;:&amp;#34;SELECT Organization WHERE id=3&amp;#34;, &amp;#34;caller_id&amp;#34;:{&amp;#34;name&amp;#34;:&amp;#34;monet&amp;#34;,&amp;#34;first_name&amp;#34;:&amp;#34;claude&amp;#34;},&amp;#34;title&amp;#34;:&amp;#34;issue blah&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;something happened&amp;#34;}}&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;hr>
&lt;p>原文：&lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:advancedtopics:create_ticket">https://www.itophub.io/wiki/page?id=3_2_0:advancedtopics:create_ticket&lt;/a>&lt;/p>
&lt;p>2024/09/10 10:25 by127.0.0.1&lt;/p>
&lt;p>版本：3_2_0/advancedtopics/create_ticket.txt · Last modified: 2024/09/10 10:25 by 127.0.0.1&lt;/p></description></item></channel></rss>