Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Web services 如何构建PerlWeb服务基础架构_Web Services_Perl - Fatal编程技术网

Web services 如何构建PerlWeb服务基础架构

Web services 如何构建PerlWeb服务基础架构,web-services,perl,Web Services,Perl,我有许多用于管理多服务器基础架构的脚本。其中一些脚本需要根访问权限,一些脚本需要访问数据库,并且大多数脚本都是基于perl的。我想将所有这些脚本转换成可以从不同应用程序执行的非常简单的web服务。这些web服务将接受常规请求输入,并在执行后输出json。我想我应该设置一个简单的perl dispatcher,称之为action,它可以进行日志记录、检查凭证和执行这些简单脚本。比如: http://host/action/update-dns?server=www.google.com&i

我有许多用于管理多服务器基础架构的脚本。其中一些脚本需要根访问权限,一些脚本需要访问数据库,并且大多数脚本都是基于perl的。我想将所有这些脚本转换成可以从不同应用程序执行的非常简单的web服务。这些web服务将接受常规请求输入,并在执行后输出json。我想我应该设置一个简单的perl dispatcher,称之为
action
,它可以进行日志记录、检查凭证和执行这些简单脚本。比如:

http://host/action/update-dns?server=www.google.com&ip=192.168.1.1
这将调用
操作
perl驱动程序,该驱动程序将使用适当的参数(可能以某种方式清理)调用
更新dns
脚本,并返回适当的json响应。我希望此基础结构具有以下属性:

  • 所有脚本都驻留在一个地方。如果一个新脚本被丢弃在那里,那么它将自动成为可调用的
  • 所有脚本都需要有某种形式的清单来描述,谁可以调用它(属于某个ldap组),它需要什么参数,响应是什么,等等,以便自我解释
  • 所有脚本都记录在谁做了什么以及响应是什么方面
  • 如果有一种命令行方式来执行类似于
    #action update dns--server=www.google.com--up=192.168.1.1

我必须从头开始吗?或者已经有什么东西我可以依靠了吗?

你可能想看看我的框架。文档仍然很少,但我已经在几个项目中使用了它,包括

我们的想法是在函数中编写代码,修饰/添加足够的元数据到这些函数中(包括一些摘要、参数规范等),并且会有工具链来满足您的需要,例如,在命令行中运行函数(使用和),以及在HTTP上运行函数(使用和)

还有一个还处于初级阶段。请看一看。例如,该函数将作为API函数通过HTTP API进行访问


如果您对部署类似的东西感兴趣。

如何使用和的组合,或者是完美匹配,或者是完全关闭;-)@Fredrik将对此进行研究。我正在寻找一些简单轻量级的东西,最好是基于perl的。正如Fredrik所建议的,nagios值得一看。由于它们是独立的可执行文件,其中许多是用C和Perl编写的,因此即使没有nagios tself,也可以使用它们。如果重新发明/修改控制盘,您可以在自己的应用程序(wrt许可证)中使用它们。服务器基础结构已经由nagios控制。它非常适合监视正在发生的事情。我真正想做的是使用这些web服务提供一个新的服务器,更新它们的dns条目,等等……这似乎完全是我想要移动的方式。你有没有找到像你这样的库来做比较?对于编写命令行应用程序:如果你使用Moose,你可以使用。还有。至于向HTTP公开函数,有Plack/PSGI。