我有一个数据库表,我需要在其中插入一行,每个主机都被分配了一个特定的 puppet 模型。让我们称之为木偶模型foo
。调用的 db 表foo_hosts
具有三列:id
、hostname
和date_added
。我想知道我的foo
模块如何执行 SQL ...
insert into foo_hosts (hostname) values ( $hostname );
...如果主机表中还没有一行。
我有一个数据库表,我需要在其中插入一行,每个主机都被分配了一个特定的 puppet 模型。让我们称之为木偶模型foo
。调用的 db 表foo_hosts
具有三列:id
、hostname
和date_added
。我想知道我的foo
模块如何执行 SQL ...
insert into foo_hosts (hostname) values ( $hostname );
...如果主机表中还没有一行。
您将需要一种从命令行访问数据库的方法。你没有指定你正在使用哪个数据库引擎,所以我会假设 PostgreSQL,因为这是我最熟悉的。我知道 SQLite 和 MySQL 都有一个允许执行查询的命令行客户端。
首先,我将从一个模块开始:
update-database
脚本可能是:请注意,此 SQL 查询是易受攻击的:如果攻击者获得了 Puppet 的控制权,他可以对您的数据库服务器执行任意命令。当然,如果攻击者获得了 Puppet 的控制权,你的问题就更严重了。