0

我们有许多 perl 和 python 脚本,我们想向我们的一些队友公开以供随意使用;我们真的不想用 git、perl、python、依赖项等来设置它们。

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

这似乎是一个如此简单的需求,以至于我很惊讶我在外面找不到任何类似的东西。没有渲染表单的框架,它会输出一个虚拟控制台屏幕......

当然,存在重大的安全问题。任何人都可以推荐执行上述操作或其他类似的解决方案吗?

4

2 回答 2

2

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

使用脚本在盒子上运行 SSHD。在 Windows 上,这很容易使用 cygwin,否则默认情况下在 Mac 和 Linux 上存在

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

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

维护也会容易得多。

于 2012-07-17T02:43:07.237 回答
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 相同的内容;像这样的文章展示了从头开始构建一个是多么容易。或者,更简单,只使用Validation插件,这样你只需要一行JS。

为了设置表单来触发您的脚本,任何现有的 CGI 框架都可以立即执行此操作。

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

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

所以,是的,这里有一些代码要写。但是任何解决方案都需要一些代码——你必须以某种方式将类型输入其中,对吧?——并且使用流行的通用库(例如,带有验证插件的 jQuery)可能不需要更多的代码。专用框架会有。以及更多的可定制性和可维护性(找到有 jQuery 经验的人比有一些狭窄用途库经验的人容易得多)。

于 2012-07-17T18:04:39.703 回答