向用户远程公开命令行工具

时间:2012-07-17 00:44:13

标签: python http command-line cgi

我们有一些perl和python脚本,我们想让我们的一些队友随意使用;我们真的不想让他们用git,perl,python,依赖等设置它们。

我们的一个想法是为每个脚本编写一个描述符,说明它需要什么参数;然后让一个简单的HTML页面使用适当的参数调用CGI脚本,等待并将stdout返回给用户。

这似乎是一个简单的需求,我很惊讶我找不到它存在的东西。没有框架可以呈现出一个虚拟控制台屏幕......

当然,存在重大的安全问题。任何人都可以推荐一个能够完成上述工作的解决方案,或者其他类

2 个答案:

答案 0 :(得分:2)

队友是开发人员还是对命令行感到满意?如果是这样,我会建议使用SSH。

使用脚本在包装盒上运行SSHD。在Windows上,使用cygwin很容易,否则默认情况下它会出现在Mac和Linux上

客户端登录(ssh user @ host)并运行脚本。使用证书设置安全性,您甚至不必输入密码。

如果有问题,我宁愿在命令行上调试脚本而不是在不透明的网页末尾。

维护也会更容易。

答案 1 :(得分:1)

我认为你正在以错误的方式看问题。

没有用于运行脚本的通用框架可能有助于对任意perl或python脚本的参数进行类型检查,因为它们只是字符串(无论是传递给sys.argv / $ARGV还是CGI环境变量)。

但是如果你把它分成几部分,它们都非常容易,而且大多是正交的。

首先,您如何对字段进行类型检查?好吧,如果您愿意要求HTML 5,只需在字段中输入相应的类型和其他参数:

<input name="foo" type="number" required>

如果您需要支持旧版浏览器,谷歌“HTML表单验证”或“JS表单验证”,您将找到数百个执行操作的库,可以通过简化您必须编写的JS,或者通过租用您可以按名称或CSS样式附加股票验证人,例如:

  // ...
  <input name="foo" id="foo">
</form>
<script>
  // ...
  Validator.add("foo", type="number", required=true)
</script>

像往常一样,jQuery非常有用。有一些解决方案可以让你编写与HTML 5相同的东西;像this one这样的文章表明从头开始构建一个文章是多么容易。或者,更简单,只需使用Validation插件,因此您只需要一行JS。

要设置表单以触发脚本,任何库存CGI框架都可以直接执行此操作。

为了让脚本将stdout返回给用户,这也是CGI内置的。但是,请确保将服务器配置为发送内容类型text / plain而不是text / html(对于脚本所在的目录,或* .cgi或* .py / * .pl,或任何适当的)。 / p>

那么,还剩下什么?您是否要自动生成表单,例如,从某些数据库映射脚本名称到类型验证字符串?同样,没有人会有一个通用库,可以根据您的类型字符串格式构建表单。但用jQuery编写起来非常容易。只需创建一个带有空字段集和操作的表单。在#(document).ready中(或从选项菜单中选择,或其他),将具有适当验证属性的字段添加到空字段集。 (或者,如果您使用的是基于脚本的简单验证库,只需修改库代码即可直接使用您的类型描述符,而不是使用其他格式。)您也可以在此处设置action属性(如果您是使用HTML 5或Validation插件,因此您不需要自定义提交脚本),或者只需从自定义提交脚本中点击URL(如果您正在以已经需要的方式进行验证)。

所以,是的,这里有一些代码要写。但是任何解决方案都需要一些代码 - 你必须以某种方式将类型提供给它 - 对吧? - 使用流行的通用库(例如,带有Validation插件的jQuery)可能不再需要代码了专用框架会有。除了可定制和可维护之外(找到具有jQuery经验的人比使用某些窄目标库的人更容易)。