Переносимый язык сценариев для администратора нескольких серверов?

Обратите внимание: Портативный, как в portableapps.com, не в традиционном смысле языка, который можно использовать на нескольких архитектурах или в операционных системах. Тот, кто придумал это использование переносимого слова, должен быть взломан.:)

Я - администратор базы данных и sysadmin, в основном для машин Windows, работающих под управлением SQL Server. Я ищу язык программирования/сценариев для Windows, который не требует доступа администратора или установщика, не требуя процесса установки, кроме его расширения в папку. Мое намерение состоит в том, чтобы иметь язык для автоматизации, вокруг которого я могу стандартизировать.

До этого момента я использовал комбинацию пакетных файлов и оболочки Unix, используя sh.exe из UnxUtils, но это далеко не идеальное решение.

Я оценил несколько вариантов, у всех из них есть хотя бы один серьезный недостаток. У меня есть сильное предпочтение чему-то с открытым исходным кодом или двойной лицензии, но меня больше интересует поиск нужного инструмента, чем что-либо еще. Не интересно, что все, что опирается на Cygwin или Java, но в этот момент мне было бы хорошо с чем-то, что нужно .NET.

Требования:

  • Управляемый размер (1-100 файлов, менее 30 МБ)
  • Запуск в Windows XP и Server (2003 +)
  • Нет инсталлятора (exe, msi)
  • Нельзя полагаться на установку JVM или Cygwin.
  • Работает с внешними трубами, процессами и файлами.
  • Поддержка соединений MS SQL Server или ODBC

Бонусные баллы:

  • Открытый исходный код
  • FFI для вызова функций в родных DLL
  • Поддержка GUI (родной или gtk, wx, fltk и т.д.)
  • Поддержка Linux, AIX и/или OS X
  • Динамический, объектно-ориентированный и/или функциональный, интерпретируемый или байт-код скомпилированный; интерактивное развитие
  • Возможность упаковывать или компилировать сценарии в исполняемые файлы

До сих пор я пробовал:

  • Ruby: 148 МБ на диске, 23000 файлов
  • Portable Python: 54 МБ на диске, 2800 файлов
  • Strawberry Perl: 123 МБ на диске, 3600 файлов
  • REBOL: Отлично, за исключением закрытого источника и без MSSQL или ODBC в бесплатной версии
  • Squeak Smalltalk: Отлично, за исключением плохой поддержки скриптов.

Ответ 1

Tclkit - это однокомпонентная автономная система Tcl/Tk. У Mac-версии у меня около 3,8 мегабайта. Вы можете получить версию практически для любой современной ОС. Я держу вокруг флэш-накопителя, который имеет mac, windows и linux двоичные файлы, поэтому я могу запускать свои скрипты на любой платформе. Установка не требуется, просто скопируйте один файл там, где вы хотите.

Единственное, чего он не видит в исходной спецификации, это поддержка MS SQL Server/ODBC из коробки. Я знаю, что люди используют tcl для этого, но я думаю, вам придется добавить дополнительную библиотеку или что-то еще. Дополнительную информацию см. В записи Wiki Tcl'ers на MS SQL Server.

Ответ 2

Я призываю вас попробовать Lua. Что касается ваших требований:

  • Крошечный отпечаток (56 исходных файлов, составленных до 150 КБ).
  • Работает везде (использует только ANSI C)
  • Не требуется установщик; вы компилируете исходный код (там также "battery included" package, который я не изучил
  • Не нужно JVM и работает с любым компилятором ANSI C, поэтому вы можете скомпилировать его с помощью Visual Studio, а не Cygwin
  • Работает с внешними процессами и файлами, но только в той степени, в которой поддерживается ANSI C. Если POSIX popen предоставляется, то это также поддерживается.

И ваши бонусные очки:

  • Открытый исходный код (лицензия MIT)
  • FFI to C блестяще задуман и выполнен, но не так прост, как Tcl, но загружается более мощным. Гораздо лучшая интеграция с C, чем Python или Ruby.
  • Поддержка графического интерфейса неоднозначна, но есть хорошие привязки для виджетов wx. Поддержка QT была в одно время, но я не знаю, поддерживалась ли она.
  • Поддержка Linux
  • Функции языка/компилятора:
    • Динамический
    • Functional
    • Объекты на основе прототипа и наследование через метаметоды (вы захотите увидеть примеры в книге ниже
    • Самый быстрый компилятор байт-кода на Западе
    • Интерактивный цикл чтения-eval-print; загружать новый код динамически
  • Возможность упаковывать скрипты в исполняемые файлы; либо используйте Luiz de Figueiredo srlua, либо я могу отправить вам 120-строчный Lua script, который преобразует источник Lua в файл .c которые вы связываете с вашим приложением и интерпретатором, чтобы сделать исполняемый файл.

Дополнительные бонусные очки:

Ответ 3

Есть несколько вариантов для Python, которые могут соответствовать вашему счету:

  • Первый IronPython, который может быть запущен без установки и будет хорошо работать с API-интерфейсами .net. Это дает вам доступ к чему-либо с API-интерфейсом .net или COM-стилем COM, для которого вы можете создать PIA. Я использовал в качестве механизма сценариев именно по этой причине - его можно было отбросить в каталог внутри системы и не нужно было явно устанавливать.


    У вас должно быть соответствующее время выполнения .Net но .Net 2.0 установлен с SQL Server 2005. Доступ к SQL Server через ADO.net и создание GUI с Winforms довольно прост.

  • Второй Portable Python, который предназначен для запуска с USB-ключа. Хотя я вижу, что вы уже пробовали это, вы можете уточнить, каковы были недостатки. Если что-то не доступно в базовой установке, вы всегда можете посмотреть на создание собственной версии с включенным в нее. TkInter (по крайней мере) в комплекте.

    Вы также можете использовать Py2EXE для создания автономных приложений python со всеми лишними нежелательными файлами. Это даст вам около 10 файлов или около того (в зависимости от количества DLL), которые могут запускаться из одного каталога, возможно, на USB-ключ.

Запуск локальных настроек python на ОС Unix-oid довольно прост, так что в значительной степени это не проблема. Кроме того, python поставляется с большинством дистрибутивов Linux и доступен как "предоставленное программное обеспечение" для большинства, если не для всех поставщиков und-trad unix. IIRC также поставляется вместе с MacOS.

Ответ 4

Для tcl, кроме Tclkit, freewrap - еще один небольшой переносимый автономный интерпретатор для tcl.

Просто переименуйте исполняемый файл freewrap в другое, преобразуйте его в автономный интерпретатор. Переименование обратно в freewrap преобразует его в обертку script.

Кроме того, freewrapped apps содержат интерпретатор tcl. В тяжелых чрезвычайных ситуациях вы можете попробовать открыть приложение в виде zip файла и отредактировать/заменить код tcl, содержащийся в нем (просто не забудьте сначала сделать копию). Это несколько раз спасло меня, когда я нахожусь на клиентском сайте без средств разработки, но вам нужно что-то устранить. Я просто делаю копию одной из моих развернутых приложений и пресно-мгновенной среды разработки!

Ответ 5

Взгляд на wikipedia исчерпывающий list портативного программного обеспечения Там Tiny C компилятор, снова в Википедии здесь, и его домашняя страница здесь.

Подводя итог, цитируя из списка возможностей wikipedia:

  • Small - может компилировать и выполнять код C во всем мире, например, на аварийных дисках (около 100 Кбайт для исполняемого файла x86 TCC, включая препроцессор C, компилятор C, сборщик и компоновщик).
  • Fast - tcc создает оптимизированный код x86. Нет служебных данных байтового кода. Он собирает, собирает и связывает примерно в 9 раз быстрее, чем GCC.
  • Любая динамическая библиотека C может использоваться напрямую. TCC стремится к полному соблюдению ISOC99. TCC может, конечно, скомпилировать себя.
  • Включает дополнительную память и связанную проверку. Связанный проверенный код может свободно смешиваться со стандартным кодом.
  • Скомпилировать и запустить C-источник напрямую. Не требуется никакого соединения или сборки. Префикс Full C и ассемблер, подобный GNU. Поддерживается
  • C script: просто добавьте '#!/usr/local/bin/tcc -run' в первую строку вашего источника C и выполните его непосредственно из командной строки.
  • С libtcc вы можете использовать TCC в качестве backend для генерации динамического кода.
  • Несколько зависимостей. Он включает в себя собственный ручной лексер и реализуется с использованием рекурсивного анализатора спуска. Таким образом, для построения TCC требуется несколько других библиотек.
  • Лицензия LGPL позволяет любому пользователю использовать, модифицировать и/или распространять программное обеспечение, и его можно использовать для разработки программного обеспечения с открытым исходным кодом или проприетарного программного обеспечения.

Надеюсь, что это поможет и будет полезно, С наилучшими пожеланиями, Том.

Ответ 6

В дополнение к предложению Lua существует также Idle. Это в основном надмножество Lua 5.1 с языком (и библиотеками) и реализацией на основе Lua. Первоначально он был создан для более полного решения для сценариев для Windows: поскольку Lua в первую очередь предназначен для встраивания, он имеет довольно небольшую стандартную библиотеку, и обычно ожидается, что приложение для встраивания предоставит Lua богатую библиотеку.

Это имеет смысл для внедренного языка, потому что, в конце концов, между функциональностью между Adobe Lightroom, Nginx и World of Warcraft не так много общей функциональности, поэтому просто нет ничего, что можно поместить в стандартную библиотеку. Но для более общего назначения OS-скриптов, нужно было бы немного увеличить библиотеку. Таким образом, Idle связывает несколько библиотек, которые являются сторонними (а иногда и трудными для работы в Windows) в Lua в стандартной библиотеке.

Некоторые из вещей, которые стандартная библиотека Idle добавляет поверх Lua, - это жесткая интеграция Win32, поддержка SQLite3, поддержка сети, генератор парсеров PEG и поддержка архива.

Кроме того, Idle поддерживает встраивание Perl и C-кода в ваши программы Idle.

Ответ 7

Каждая несколько современная версия Windows поставляется с предустановленной версией VBScript и JScript. Это не соответствует всем вашим функциям (компиляция с исполняемым файлом приходит на ум), но они, безусловно, имеют непревзойденное преимущество в размере установки: трудно превзойти 0.