问题 适用于多服务器管理员的可移植脚本语言?


请注意: 像portableapps.com中的便携式,不是传统意义上的可用于多种体系结构或操作系统的语言。无论是谁创造了便携式这个词的用法,都应该受到打击。 :)

我是一名DBA和sysadmin,主要用于运行SQL Server的Windows机器。我正在寻找一种不需要管理员访问或安装程序的Windows编程/脚本语言,除了将其扩展到文件夹之外不需要任何安装过程。我的目的是拥有一种可以自我标准化的自动化语言。

到目前为止,我一直在使用批处理文件和Unix shell的组合,使用sh.exe UnxUtils 但它远非一个完美的解决方案。

我评估了一些选项,他们都至少有一个严重的缺点或另一个。我非常喜欢开源或双重许可,但我更感兴趣的是找到合适的工具而不是其他任何东西。对依赖Cygwin或Java的任何东西都不感兴趣,但此时我对需要.NET的东西没问题。

要求:

  • 可管理的占地面积(1-100个文件,安装在30 MB以下)
  • 在Windows XP和Server(2003+)上运行
  • 没有安装程序(exe,msi)
  • 不依赖于JVM或Cygwin安装
  • 使用外部管道,进程和文件
  • 支持MS SQL Server或ODBC连接

奖励积分:

  • 开源
  • 用于调用本机DLL中的函数的FFI
  • GUI支持(native或gtk,wx,fltk等)
  • Linux,AIX和/或OS X支持
  • 动态的,面向对象的和/或功能的,解释的或字节码编译的;互动发展
  • 能够将脚本打包或编译成可执行文件

到目前为止,我已经尝试过:

  • Ruby:磁盘上148 MB,23000个文件
  • 便携式Python:磁盘54 MB,2800个文件
  • Strawberry Perl:磁盘上123 MB,3600个文件
  • REBOL:很好,除了封闭源代码,免费版本没有MSSQL或ODBC
  • Squeak Smalltalk:很棒,除了对脚本的支持不佳

4964
2018-01-25 21:28


起源

你试过的那些,其中任何一个都有效吗?顺便说一句,我是一个巨大的Python粉丝。 - Hamish Grubijan
这可能是Serverfault的问题吗? - Tom Duckering
@Hamish:不清楚道歉,但列出的语言是我尝试过但却出于某种原因而失败的语言。我可以详细说明,但由于安装的相对复杂性,文件数量和安装大小,Ruby,Python和Perl都不尽如人意。其他答案已经提出了Iron Ruby和Iron Python,我还没有真正看过的选项 - 我来自更多的Unix背景,并且一直在评估主流Ruby和Python的Windows发行版。 Python是第一种我很兴奋的语言,早在99年代,我仍然喜欢在其中工作! - Aaron
我知道延迟选择最佳答案是不好的形式 - 但是我需要一点时间来比较领跑者:tclkit,某种形式的lua,Iron Python或Iron Ruby。明天,我保证! - Aaron
我理解尺寸要求,但为什么你关心“引擎”中的文件数量? - Perica Zivkovic


答案:


Tclkit 是一个单文件,独立的Tcl / Tk系统。我的mac版本大约是3.8兆。您可以获得几乎任何现代操作系统的版本。我带着一个有mac,windows和linux二进制文件的拇指驱动器,所以我可以在任何平台上运行我的脚本。无需安装,只需将文件复制到任何位置即可。

它原始规范中唯一缺少的是开箱即​​用的MS SQL Server / ODBC支持。我知道人们使用tcl,但我认为你必须添加额外的库或其他东西。见 Tcl'ers MS SQL Server上的wiki条目 了解更多信息。


2
2018-01-25 21:40



我试着阅读tcl代码 - 不好玩。 - Hamish Grubijan
有些人似乎有心理障碍阻止他们理解Tcl。我不确定为什么,因为它确实是那种更易读的语言之一。只有12条规则来管理整个语言,所以它并不是一门困难的语言。 - Bryan Oakley
Tcl工作得很好。如果您正在执行Windows操作(tcom用于OLE,twapi用于访问Windows API以及其中一个ODBC绑定以访问SQL Server),您可能需要向开发环境添加一些库。 WITS是一个很好的例子,可以用这些东西做什么: wits.magicsplat.com - schlenk
Tcl很难,因为它基于文本替换。伯克利和斯坦福大学的教授应该比创建编程语言更好,而编程语言的评估模型基于替代。 (Don Knuth,给你的办公室打电话。)我承认Tcl与C的接口是我见过的最简单,最简单的。但它给程序员带来了巨大的负担,使得所有本机类型都可以表示为字符串。 - Norman Ramsey
没错,Tcl不是复杂数据结构的最佳选择。这并不意味着它通常很糟糕 - 有一个巨大的应用程序世界,tcl非常适合。我花了15年时间测试这个理论,并在那段时间内创建了许多复杂,成功的tcl应用程序。这种语言有疣,但是什么语言没有?老实说,我相信大多数解雇Tcl的人(我并不是在暗示这里的任何人本身)根本不能接受它的简单性是它最大的优势之一。 - Bryan Oakley


我劝你试试 LUA。关于您的要求:

  • 占地面积小(56个源文件,150K以下编译)
  • 到处运行(仅使用ANSI C)
  • 无需安装人员;你从源代码编译(也有一个 包括“电池包” 我没有探索过
  • 不需要JVM并且可以与任何ANSI C编译器一起使用,因此您可以使用Visual Studio进行编译,而不是使用Cygwin进行编译
  • 适用于外部进程和文件,但仅限于ANSI C支持的范围。如果POSIX popen 然后提供也支持。

而你的奖励积分:

  • 开源(MIT许可证)
  • FFI到C的设计和执行都非常出色 - 不像Tcl那么简单但负载更强大。 许多 与Python或Ruby相比,更好地与C集成。
  • GUI支持是混合的,但wx小部件有很好的绑定。 QT支持曾在那里,但我不知道它是否得到了维护。
  • 支持Linux
  • 语言/编译器功能:
    • 动态
    • 实用
    • 基于原型的对象和继承 元方法 (您将在下面的书中看到示例
    • 西方最快的字节码编译器
    • 交互式读取 - 评估 - 打印循环;动态加载新代码
  • 能够将脚本打包成可执行文件;或者使用Luiz de Figueiredo的 srlua,或者我可以发送一个120行的Lua脚本,将Lua源转换为.c文件,您可以将其与应用程序和解释器链接以生成可执行文件。

额外奖励积分:

  • 非常清晰,干净,设计精良的语言。
  • 足够小,可以完整掌握,并在一天内提高工作效率。
  • 精湛的书 Lua编程 (看看 上一版免费在线

9
2018-01-26 01:15



优秀的建议。特别是对于Windows,Idle也可能值得一看。它是Lua 5.1的一个合适的超集(每个语法上正确的Lua 5.1程序也是一个语法正确且语义相同的Idle程序),但是它预先编译并预先捆绑了一些Windows特定的或难以编译的Lua扩展。这里列出的所有功能和优点同样适用于空闲,只有两个注意事项:社区规模和没有Roberto Ierusalimschy。 - Jörg W Mittag
@Norman和@ Joerg-你对murgaLua有什么看法?看起来似乎是沿着类似的路线,但是很难看出它是否正在走向垃圾箱......一般来说,不是Lua,看起来不像是在任何地方。我对NewtonScript有一些经验,Lua让我想起了很多。我会看看你推荐的图书馆和发行版! - Aaron
@Aaron:Murga的事情看起来很蛰伏。真正的优势似乎是FLTK,但他没有跟上FLTK的步伐。对于XML,我从PUC-Rio的lxp和lxp.lom获得了非常好的结果。对于GUI,我很想从PUC-Rio尝试IUP,因为它的设计目的是从一开始就与Lua一起工作。 (我已经使用wxLua和Lua绑定QT,这两种经验都没有给我带来热情。) - Norman Ramsey


Python有两种选择可能适合您的账单:

  • 首先是 IronPython的, 可以在没有安装程序的情况下运行,并且可以很好地使用.net API。这使您可以访问任何可以构建PIA的.net API或COM类型库。我之所以使用at作为脚本机制正是出于这个原因 - 它可以被放入系统内的一个目录中,而不需要显式安装。

    您必须安装适当的.Net运行时,但.Net 2.0随SQL Server 2005一起安装。可以通过ADO.net访问SQL Server,使用Winforms构建GUI非常简单。

  • 第二是 便携式Python 设计用于USB密钥运行。虽然我看到你已经尝试过,但你可能会详细说明缺点是什么。如果在基本安装中没有可用的东西,您可以随时查看构建包含它的自定义版本。 TkInter(至少)捆绑在一起。

    您还可以使用Py2EXE生成独立的python应用程序,并删除所有多余的垃圾。这将为您提供大约10个文件(取决于DLL的数量),这些文件可以从单个目录运行,可能在USB密钥上运行。

在Unix-oid操作系统上运行本地python安装是非常简单的,所以这几乎没有用。另外,python附带了大多数Linux发行版,并且可以从大多数(如果不是全部)trad unix供应商那里获得“贡献软件”。 IIRC它也与MacOS捆绑在一起。


3
2018-01-25 21:58



+1用于详细说明Portable Python的缺点。如果它的大小你可以剥掉它并删除你不需要的包。如果您需要额外的模块,请详细说明,我会看到我可以为下一个版本做些什么;-) - Perica Zivkovic
它是否带有标准版本中的ODBC模块?我在网站上的文档中看不到任何内容。 - ConcernedOfTunbridgeWells


对于tcl,除了Tclkit之外, freewrap 是tcl的另一个小型便携式自包含解释器。

只需将freewrap可执行文件重命名为其他内容即可将其转换为独立的解释器。将其重命名为freewrap会将其转换为脚本包装器。

此外,freewrapped应用程序包含一个tcl解释器。在紧急情况下,您可以尝试将应用程序作为zip文件打开并编辑/替换其中包含的tcl代码(只需记住先制作副本)。当我在没有开发工具的客户端站点但需要解决问题时,这已经多次保存了我。我只是复制了我部署的应用程序和presto之一 - 即时开发环境!


0
2018-01-26 01:55





看着维基百科的详尽无遗 名单 便携式软件 还有维基百科的Tiny C编译器 这里,以及它自己的主页 这里

通过引用维基百科的功能列表来总结:

  • 小 - 可以在任何地方编译和执行C代码,例如在救援磁盘上(x86 TCC可执行文件大约100KB,包括C预处理器,C编译器,汇编器和链接器)。
  • 快速 - tcc生成优化的x86代码。没有字节码开销。它编译,组装和链接的速度比GCC快9倍。
  • 任何C动态库都可以直接使用。 TCC正朝着完全符合ISOC99的方向发展。 TCC当然可以编译自己。
  • 包括可选内存和绑定检查器。绑定的检查代码可以与标准代码自由混合。
  • 直接编译和执行C源代码。无需链接或组装。包括完整的C预处理器和类似GNU的汇编程序。
  • 支持C脚本:只需在C源代码的第一行添加“#!/ usr / local / bin / tcc -run”,然后直接从命令行执行。
  • 使用libtcc,您可以使用TCC作为动态代码生成的后端。
  • 几乎没有依赖。它包括自己的手写词法分析器,它使用递归下降解析器实现。因此,构建TCC需要很少的其他库。
  • 其LGPL许可证允许任何人使用,修改和/或重新分发软件,它可用于开发开源软件或专有软件。

希望这有用并且有用, 最好的祝福, 汤姆。


0
2018-01-26 02:10





除了Lua的建议,还有 。它基本上是Lua 5.1的超集,包括语言(和库)以及基于Lua的实现。它最初是为Windows提供更完整的脚本解决方案:因为Lua主要用于嵌入,它有一个相当小的标准库,并且通常期望嵌入应用程序为Lua提供丰富的库。

这对于嵌入式语言来说是有意义的,因为毕竟,Adobe Lightroom,Nginx和魔兽世界之间没有太多共同的功能,所以你根本就没有什么可以放入 标准 图书馆。但是对于更通用的OS脚本语言,人们会想要一个稍大的库。因此,Idle在Lua的标准库中捆绑了几个第三方库(有时很难在Windows上工作)。

Idle标准库通过Lua添加的一些东西是紧密的Win32集成,SQLite3支持,网络支持,PEG解析器生成器和归档支持。

此外,Idle支持将Perl和C代码嵌入到Idle程序中。


0
2018-01-26 03:00





每个有点现代的Windows版本都预先安装了VBScript和JScript。不符合 所有 您的功能(编译为可执行文件)会浮现在脑海中,但它们在安装大小方面肯定具有无与伦比的优势:它很难被击败 0


0
2018-01-26 03:18