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

时间:2010-01-25 21:28:51

标签: windows ruby programming-languages scripting portable-applications

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

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

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

我评估了一些选项,他们都至少有一个严重的缺点或另一个。我非常喜欢开源或双重许可,但我更感兴趣的是找到合适的工具而不是其他任何东西。对依赖于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个文件
  • Portable Python:54 MB磁盘,2800个文件
  • Strawberry Perl:磁盘上123 MB,3600个文件
  • REBOL:很好,除了封闭源代码,免费版本没有MSSQL或ODBC
  • Squeak Smalltalk:很好,除了对脚本的支持不足

7 个答案:

答案 0 :(得分:9)

我恳请你试试Lua。关于您的要求:

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

你的奖励积分:

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

额外奖励积分:

答案 1 :(得分:3)

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

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

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

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

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

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

答案 2 :(得分:2)

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

原始规范中唯一缺少的是开箱即​​用的MS SQL Server / ODBC支持。我知道人们使用tcl,但我认为你必须添加额外的库或其他东西。有关详细信息,请参阅Tcl'ers wiki entry on MS SQL Server

答案 3 :(得分:0)

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

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

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

答案 4 :(得分:0)

查看维基百科详尽的list便携式软件 还有维基百科here上的Tiny C编译器及其自己的主页here

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

  • 小 - 可以在任何地方编译和执行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许可证允许任何人使用,修改和/或重新分发软件,它可用于开发开源软件或专有软件。

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

答案 5 :(得分:0)

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

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

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

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

答案 6 :(得分:0)

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