如何使用 PHP shell_exec 添加新用户到 Kamailio?

How to add new user to Kamailio using PHP shell_exec?

需要使用 PHP 以编程方式将新用户添加到 Kamailio。我尝试使用 SQL[=43= 手动将用户名和密码添加到 subscriber table ] 查询,但它不会工作,因为 ha1ha1b 应该添加到 table。我不知道 Kamailio 如何生成 ha1ha1b。以下是使用 kamctl 工具手动添加的条目。

mysql> select * from subscriber limit 2;
+----+----------+---------------+--------------+---------------+----------------------------------+----------------------------------+------+
| id | username | domain        | password     | email_address | ha1                              | ha1b                             | rpid |
+----+----------+---------------+--------------+---------------+----------------------------------+----------------------------------+------+
|  9 | 1010101  | 10.101.101.10 | aswwwwwwwsdf |               | a37d1785953310c206481ca1a33f16b6 | 7e981130f05a547a738d3c29031e89d0 | NULL |
| 10 | 1010102  | 10.101.101.10 | 6eeeeee8a72  |               | 6b574f9047206481ca1a33501d7dbdce | cd9a8b89d926f3cb1290311a8cb8a2a8 | NULL |
+----+----------+---------------+--------------+---------------+----------------------------------+----------------------------------+------+

然后我尝试在 PHP 中使用 shell_exec 函数来使用 kamctl 命令(kamctl 添加用户名密码)。但它会提示输入 Kamailio 读写用户密码。因此以下命令无法将新用户添加到 Kamailio

$res = shell_exec("sudo kamctl add new_username new_password);   

所以,请建议一种以编程方式将新用户添加到 Kamailio 的方法。

如果您使用 php 创建用户帐户,您可以直接在 Kamailio 数据库中添加订阅者 table。 ha1b 只不过是用户名、领域、密码详细信息的 md5 散列。 kamailio 订阅者 table 结构如下所示。

问题是关于如何为 add 命令后出现的提示提供密码。
这是解决方案,您可以使用 echo 将密码传递给提示,您可以在实际命令之前使用 pipe。这样提示就会得到回显的密码,并且会添加一个新用户。

$res = shell_exec("echo password |kamctl add new_username new_password");