LINUX.ORG.RU

Более кроссплатформенный скриптинг, чем Python

 , ,


0

3

Есть у меня набор скриптов, расшаренный между некоторым количеством хостов (разные юниксы, винда), в т.ч. есть крон-файл, который запускает эти скрипты. Сами скрипты написаны на питоне (100% кроссверсионно), кронтаб на винде через python-crontab, команды в кронтабе совместимы и с башем, и с cmd, всё работало как часы.

Недавно один из хостов проапгрейдили до последней версии Oracle Linux, в которой хипстеры удалили исполняемый python, оставив только python с явным указанием версии. В результате у меня начали агриться шебанги /usr/bin/env python. Для пользовательского шелла я сделал кастомную обёртку, которая определяет эту дебильную ситуацию и подставляет какой-нибудь существующий интерепретатор. Но, поскольку в кронтабе нет возможности переносимо указать окружение, хотя бы PATH (например, AIXовый кронтаб этого не умеет), то приходится изворачиваться и делать отдельный крон-файл конкретно для этого хоста.

Пробовал завести отдельный шелл-скрипт с нужным окружением, который можно будет сорсить или запускать с командой в качестве параметра, но что выбрать в качестве языка? Питон и так был самым кроссплатформенным способом.

Повершелл не подходит, он отсутствует на некоторых хостах. Perl тоже не предлагать, у него ещё больше проблем с шебангами.

UPD: Админских прав на этом хосте нет, поэтому в окружение, доступное кронтабу по умолчанию, ничего положить нельзя.

Есть ли более удобные способы решения этой проблемы?

UPD: Пока лучший вариант - bat/sh скрипт из первого коммента:

:<<@exit/b
   @echo Windows stuff
@exit/b
   echo Unix stuff
★★★

Последнее исправление: E (всего исправлений: 5)

Ответ на: комментарий от zendrz

а с каких пор python == python2 == python3, извините?

С тех пор, как используешь __future__ и six и не пишешь заведомо непереносимый код.

сколько у тебя пакетов из pip юзается, кстати?

[~] pip list | wc -l
      25

Спасибо, что напомнил, кстати, надо почистить неиспользуемые.

E ★★★
() автор топика
Последнее исправление: E (всего исправлений: 1)
Ответ на: комментарий от Ford_Focus

golang не совсем не про скриптинг (хотя и есть gorun), но зато всё нужное носит с собой в одном файле

Кстати да. Например, заметил, что тулзы всякие, типа управлялок по web-api разными сервисами намного удобнее в виде go приложений. Никаких кривых npm или pip тебе. Всегда предпочитаю и ищу версию тулзы на go в таком случае (как пользователь).

zendrz ★★
()
Ответ на: комментарий от zendrz

Всегда предпочитаю и ищу версию тулзы на go в таком случае (как пользователь)

Какая разница между Go приложениями, Rust приложениями, или С приложениями, или Pascal приложениями? В чём особенность именно go приложений? Статическая линковка есть во всех этих и множестве других языков…

fsb4000 ★★★★★
()
Последнее исправление: fsb4000 (всего исправлений: 1)

Совсем забыл про Java. Кто-нибудь пробовал джаву в этом плане?

UPD: Отбой, джава отсутствует на большинстве хостов в дефолтном PATH.

E ★★★
() автор топика
Последнее исправление: E (всего исправлений: 1)
Ответ на: комментарий от anonymous

В винде ситуация намного проще. Там большую часть сервисов можно запускать из-под пользователя и питон ставится в два клика в пользовательский профиль. И на многих наших рабочих машинах он уже предустановленным идёт, но это от корп. политик софта зависит, конечно.

E ★★★
() автор топика
Ответ на: комментарий от fsb4000

Не сравнивая по высокоуровневости библиотек и удобству работы со строками (это дело программистов, я тут выступаю как пользователь), основное различие - Го по дефолту собирает удобный бандл. С Си это обычная свистопляска со всеми зависимостями. На Раст я для себя тулз не встречал вообще, как на Паскале. Так же, я не встречал многих тулз на Си, которые есть на Го и на Питоне. Поэтому при сравнениии двух последний я выбираю Го (как пользователь).

zendrz ★★
()
Последнее исправление: zendrz (всего исправлений: 1)

Раз уж пошла такая пьянка, то нода. Там один единственный бинарник и больше ничего для работы не надо.

crutch_master ★★★★★
()
Последнее исправление: crutch_master (всего исправлений: 1)
Ответ на: комментарий от crutch_master

Раз уж пошла такая пьянка, то нода. Там один единственный бинарник и больше ничего для работы не надо.

Если брать задачу ТС, то нужен ещё, как минимум, npm (как в какой-то мере аналог pip).

OSBuster
()
Ответ на: комментарий от OSBuster

npm это скрипт для ноды. Надо будет поковыряться с путями, но в принципе оно тоже ставится куда угодно, потом прописывается в PATH и запускается.

crutch_master ★★★★★
()
Ответ на: комментарий от crutch_master

npm это скрипт для ноды. Надо будет поковыряться с путями

А PIP это что? Чем это ковыряние с путями принципиально отличается от ковыряния ТС?

OSBuster
()
Ответ на: комментарий от crutch_master

Надо будет поковыряться с путями, но в принципе оно тоже ставится куда угодно, потом прописывается в PATH и запускается.

Если бы у меня была такая возможность на всех хостах, топика бы не было, но спасибо.

E ★★★
() автор топика

Пока лучший вариант - bat/sh скрипт из первого коммента:

:<<@exit/b
   @echo Windows stuff
@exit/b
   echo Unix stuff

С шебангом немного гадит в виндовую консоль, если нет исполняемого файла #! в PATH.

Без шебанга, вроде, неопределённое поведение по POSIX, но работает на всех доступных хостах.

E ★★★
() автор топика
Последнее исправление: E (всего исправлений: 1)
Ответ на: комментарий от E

так и не нужно, чтобы сам голанг (компилятор) был доступен на всех целевых машинах - генеришь бинари на своей машине под все нужные оси и процы через GOOS и GOARCH, свободные от внешних зависимостей и их же и деплоишь

Ford_Focus ★★★★★
()
Последнее исправление: Ford_Focus (всего исправлений: 1)
Ответ на: комментарий от zendrz

Вот лорчую. Без прицепленного venv в который сложено всё гавно и симлинк на ПРАВИЛЬНЫЙ питуч, эти поделия вообще не летают, в общем случае.

d_a ★★★★★
()

Тему пролистал, вроде wsl никто не предлагал. Или у тебя винда без wsl? Миллион лет назад были rktools - набор юникс-утилит, включая и баш, они вроде могли и без инсталлятора работать.

http://www.reedkotlermusic.com/RKTOOLS/rktools.html - вероятно, они устарели…

den73 ★★★★★
()
Последнее исправление: den73 (всего исправлений: 2)
Ответ на: комментарий от Ford_Focus

генеришь бинари на своей машине под все нужные оси и процы

Это именно то, чего я стараюсь избежать.

E ★★★
() автор топика
Ответ на: комментарий от den73

Тему пролистал, вроде wsl никто не предлагал.

Потому что проблема не с виндой. На винде у меня всё в порядке и с wsl, и с позикс-окружением для самой винды.

E ★★★
() автор топика

Недавно один из хостов проапгрейдили до последней версии Oracle Linux, в которой хипстеры удалили исполняемый python, оставив только python с явным указанием версии

Вау, этой арашей кто-то пользуется. Оракл последние лет десять стал как царь мидас, только превращает любой софт в говно. Не знаю при чем тут винда - окружение сильно другое, нет смысла системную утилиту пытаться делать полностью кросс-платформенной. В конкретно твоем случае виноват исключительно Oracle Linux.

byko3y ★★★★
()

параметра, но что выбрать в качестве языка?

REXX, REBOL, RED, Lua

anonymous
()
Ответ на: комментарий от den73

Миллион лет назад были rktools - набор юникс-утилит, включая и баш, они вроде могли и без инсталлятора работать.

надо же, не знал о них…

есть менее устаревшие: UnxUtils, Gow, mksh.exe из BSD под Windows, busybox.exe под Windows (шелл ash + все обычные coretools, только компакнее – встроенные в один бинарник)

anonymous
()
Ответ на: комментарий от anonymous

есть менее устаревшие

Только смысла в них уже нет никакого. Если раньше под виндой все было плохо, в основном в обработке текста, то сейчас все прямо из коробки.

anonymous
()
Ответ на: комментарий от silver-bullet-bfg

Это тот же tcl, только ещё более отсутствующий в системе по умолчанию. Не совсем понял, как это мне поможет.

E ★★★
() автор топика
Ответ на: комментарий от anonymous

Есть ещё MKS Toolkit (современник rktools).

E ★★★
() автор топика
Ответ на: комментарий от byko3y

Что я сразу и сказал здесь. Но, видимо, ТС что-то не понравилось.

rupert ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.