Переносимый язык сценариев для многосерверного администратора?
Обратите внимание: Portable, как на portableapps.com, не в традиционном смысле языка, который может использоваться в нескольких архитектурах или операционных системах. Тот, кто придумал это использование слова "портативный", должен быть убит.:)
Я администратор баз данных и системный администратор, в основном для компьютеров с 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
- Поддержка графического интерфейса (native или gtk, wx, fltk и т. Д.)
- Поддержка Linux, AIX и / или OS X
- Динамический, объектно-ориентированный и / или функциональный, интерпретируемый или скомпилированный байт-код; интерактивная разработка
- Возможность упаковки или компиляции скриптов в исполняемые файлы
Пока что я пробовал:
- Рубин: 148 МБ на диске, 23000 файлов
- Портативный Python: 54 МБ на диске, 2800 файлов
- Клубничный Perl: 123 МБ на диске, 3600 файлов
- REBOL: Отлично, за исключением закрытого источника и без MSSQL или ODBC в бесплатной версии.
- Squeak Smalltalk: отлично, кроме плохой поддержки скриптов
7 ответов
Tclkit - это автономная система Tcl/Tk, состоящая из одного файла. Mac версия у меня составляет около 3,8 мегабайт. Вы можете получить версию практически для любой современной ОС. Я ношу с собой флеш-накопитель, на котором установлены Mac, Windows и Linux, чтобы я мог запускать свои скрипты на любой платформе. Установка не требуется, просто скопируйте один файл куда хотите.
Единственное, чего не хватает в вашей оригинальной спецификации - это поддержка MS SQL Server / ODBC из коробки. Я знаю, что люди используют tcl для этого, но я думаю, что вам придется добавить дополнительную библиотеку или что-то в этом роде. Посмотрите вики-статью Tcl'ers на MS SQL Server для получения дополнительной информации.
Я призываю вас попробовать Lua. Относительно ваших требований:
- Крошечный след (56 исходных файлов, скомпилированные под 150K)
- Работает везде (использует только ANSI C)
- Установщик не требуется; вы компилируете из исходного кода (есть также пакет "с батарейками", который я не исследовал
- Не требует JVM и работает с любым компилятором ANSI C, так что вы можете компилировать с Visual Studio, а не с Cygwin
- Работает с внешними процессами и файлами, но только в той степени, которая поддерживается ANSI C. Если POSIX
popen
предоставляется то, что поддерживается также.
И ваши бонусные баллы:
- Открытый исходный код (лицензия MIT)
- FFI to C блестяще продуман и выполнен - не так просто, как Tcl, но загружается более мощно. Гораздо лучшая интеграция с C, чем с Python или Ruby.
- Поддержка графического интерфейса смешанная, но есть хорошие привязки для виджетов wx. Поддержка QT была когда-то, но я не знаю, поддерживалась ли она.
- Linux поддерживается
- Особенности языка / компилятора:
- динамический
- функциональная
- Объекты на основе прототипов и наследование через метаметоды (вы можете увидеть примеры в книге ниже
- Самый быстрый байт-кодовый компилятор на Западе
- Интерактивный цикл чтения-оценки-печати; загружать новый код динамически
- Возможность упаковки скриптов в исполняемые файлы; либо использовать Луиса де Фигейредо
srlua
или я могу отправить вам скрипт Lua из 120 строк, который преобразует исходный код Lua в файл.c, который вы связываете со своим приложением и интерпретатором для создания исполняемого файла.
Дополнительные бонусные баллы:
- Очень четкий, чистый, хорошо продуманный язык.
- Достаточно маленький, чтобы освоить его целиком и быть продуктивным в течение дня.
- Превосходная книга Программирование на Lua (ознакомьтесь с предыдущим изданием бесплатно онлайн)
Есть несколько вариантов Python, которые могут соответствовать вашим требованиям:
Первый - это IronPython, который можно запускать без установщика и который будет прекрасно работать с API.net. Это дает вам доступ ко всему с помощью.net API или библиотеки типов COM, для которой вы можете создать PIA. Я использовал в качестве механизма сценариев именно по этой причине - его можно было поместить в каталог внутри системы, и его не нужно явно устанавливать.
У вас должна быть установлена соответствующая среда выполнения.Net, но.Net 2.0 устанавливается вместе с SQL Server 2005. Доступ к SQL Server можно получить через ADO.net, и создание графических интерфейсов с помощью Winforms довольно просто.Второй - http://portablepython.com/, который предназначен для работы с USB-ключом. Хотя я вижу, что вы уже попробовали это, вы могли бы уточнить, какие были недостатки. Если что-то не доступно в базовой установке, вы всегда можете посмотреть на создание пользовательской версии с включенной в нее. TkInter (по крайней мере) в комплекте.
Вы также можете использовать Py2EXE для генерации автономных приложений на Python со всеми лишними ненужными файлами. Это даст вам около 10 файлов или около того (в зависимости от количества библиотек DLL), которые можно запустить из одного каталога, возможно, с USB-ключа.
Запуск локальной установки Python в ОС Unix-oid довольно прост, так что это довольно просто. Кроме того, Python поставляется с большинством дистрибутивов Linux и доступен как "программное обеспечение для разработчиков" от большинства, если не от всех поставщиков Trad Unix. IIRC также поставляется в комплекте с MacOS.
Для tcl, кроме Tclkit, freewrap - это еще один небольшой портативный автономный интерпретатор для tcl.
Просто переименуйте исполняемый файл freewrap во что-то другое, и он превратится в автономный интерпретатор. Переименование его обратно во freewrap превратит его в оболочку скрипта.
Кроме того, бесплатные приложения содержат интерпретатор tcl. В критических ситуациях вы можете попробовать открыть приложение в виде zip-файла и отредактировать / заменить содержащийся в нем tcl-код (просто не забудьте сначала сделать копию). Это спасло меня несколько раз, когда я на клиентском сайте без инструментов разработки, но нужно что-то устранять. Я просто делаю копию одного из моих развернутых приложений и готовой среды разработки!
Каждая несколько современная версия Windows поставляется с предустановленным VBScript и JScript. Он не отвечает всем вашим функциям (приходит на ум компиляция в исполняемый файл), но они, безусловно, имеют непревзойденное преимущество в зависимости от размера установки: трудно победить 0
,
Глядя на исчерпывающий список портативного программного обеспечения Википедии. Есть компилятор Tiny C, снова в Википедии здесь, и его собственная домашняя страница здесь.
Подводя итог, цитируя список функций Википедии:
- Маленький - может компилировать и выполнять код на C везде, например, на спасательных дисках (около 100 КБ для исполняемого файла x86 TCC, включая препроцессор C, компилятор C, ассемблер и компоновщик).
- Fast - tcc генерирует оптимизированный код x86. Нет байт-кода накладных расходов. Он компилирует, собирает и связывает примерно в 9 раз быстрее, чем GCC.
- Любая C динамическая библиотека может быть использована напрямую. TCC движется к полному соответствию ISOC99. TCC может, конечно, скомпилировать себя.
- Включает в себя дополнительную память и связанную проверку. Связанный проверенный код можно свободно смешивать со стандартным кодом.
- Скомпилируйте и выполните исходный код C напрямую. Нет связи или сборки необходимо. Полный препроцессор C и GNU-подобный ассемблер включены.
- Поддерживается сценарий C: просто добавьте '#!/ Usr/local/bin/tcc -run' в первой строке вашего источника C и выполните его прямо из командной строки.
- С libtcc вы можете использовать TCC в качестве бэкэнда для динамической генерации кода.
- Несколько зависимостей. Он включает в себя собственный рукописный лексер и реализован с использованием рекурсивного анализатора спуска. Таким образом, создание TCC требует немного других библиотек.
- Его лицензия LGPL позволяет любому использовать, модифицировать и / или распространять программное обеспечение, и его можно использовать для разработки либо программного обеспечения с открытым исходным кодом, либо проприетарного программного обеспечения.
Надеюсь, это поможет и будет полезно, С уважением, Том.
В дополнение к предложению Lua, есть также Idle. По сути, это расширенный набор Lua 5.1 с языком (и библиотеками) и реализацией, основанной на Lua. Первоначально он был создан, чтобы быть более полным сценарием для Windows: поскольку Lua изначально предназначен для встраивания, он имеет довольно небольшую стандартную библиотеку, и обычно ожидается, что приложение для встраивания предоставляет богатую библиотеку Lua.
Это имеет смысл для встроенного языка, потому что, в конце концов, между, скажем, Adobe Lightroom, Nginx и World of Warcraft не так много общих функций, так что просто ничего нельзя поместить в стандартную библиотеку. Но для более общего языка сценариев ОС нужно было бы немного большую библиотеку. Таким образом, Idle объединяет пару библиотек сторонних производителей (и иногда трудно заставить их работать в Windows) в Lua в свою стандартную библиотеку.
Некоторые вещи, которые стандартная библиотека Idle добавляет к Lua, включают тесную интеграцию с Win32, поддержку SQLite3, поддержку сети, генератор PEG-парсеров и поддержку архивов.
Кроме того, Idle поддерживает встраивание кода Perl и C в ваши программы Idle.