Альтернативы сценариев для сценариев оболочки Bash

Я только что перешел на рабочую станцию ​​UNIX. Моя memory о сценариях оболочки Bash исчезла из-за школы, и я считаю, что syntax очень запутан. Мне интересно, какие другие языки сценариев используются для автоматизации задач. Два самых популярных из них, о которых я слышал, – это Perl и Python.

  1. Какой язык сценариев наиболее широко используется в магазинах реального мира?
  2. Какой язык сценариев наиболее близко напоминает syntax C / C ++?
  3. Есть ли другой язык сценариев, о котором я не знаю?

Спасибо за вашу помощь,

Скотт

В какой-то степени это вопрос личных предпочтений. Perl и Python, безусловно, там с точки зрения популярности.

Чтобы ответить на два из ваших трех вопросов:

  1. Я бы предположил, что bash наиболее широко используется, вероятно, за ним следует perl. Просто гадать, но, если никто не сделал опрос. 🙂
  2. Там есть bazillions языков сценариев. 🙂

Моя рекомендация – Python. Его легко читать и писать, очень мощно, и в Интерlessе есть много полезных resources для изучения, не говоря уже о коде, который вы можете скопировать и переименовать.

Perl и Python – это, очеviewно, ответы; но каждый из них используется для выполнения различных задач:

  1. Баш – Руки вниз проще всего изучать. С помощью скриптов Bash вы запускаете команды и управляете выходом.
  2. Python – второй прост в освоении. Python более полезен, чем Bash, поскольку вы можете использовать Python для написания полных программ, и это хорошо поддерживается сообществом. Python также чрезвычайно читабельна и удобна в редактировании через несколько месяцев.
  3. Perl – лучший из трех (для сценариев), но легко самая крутая кривая обучения. Имеет очень хорошую поддержку регулярных выражений (что является основной причиной, по которой она все еще используется сегодня), и с течением времени вы, вероятно, столкlessесь со многими сценариями Perl. Основные проблемы с Perl – читаемость кода – через несколько месяцев после написания кода вы не сможете понять, что он делает. Поэтому вам лучше прокомментировать.
  4. Awk / Sed – Оба очень полезны, но оба очень трудно научиться. Я бы посоветовал заняться этим последним, если только вы не добьетесь узора.

Что касается того, что нужно изучать прямо сейчас (так как вы, вероятно, не знаете ни одного из них), я бы изучил Python. Это самый простой и полезный для понимания.

А что касается ответов на ваши вопросы:

Какой язык сценариев наиболее широко используется в магазинах реального мира?

Все они, но я бы предположил, что Perl имеет немного преимущество здесь (будучи тем, что он используется в системном администрировании намного дольше).

Какой язык сценариев наиболее близко напоминает syntax C / C ++?

Perl

Есть ли другой язык сценариев, о котором я не знаю?

Ruby, Tcsh / Csh, http://en.wikipedia.org/wiki/Interpreted_language

awk для небольших заданий, python для больше, чем-oneliners.

Python (если вы не используете определенные API-interfaceы и другие зависимые от платforms вещи) имеет богатую «стандартную библиотеку», которая доступна на всех платформах, где вы используете используемую версию python. Это очень приятно, так как вы можете легко использовать свои scripting и означает, что ваши знания – хорошие инвестиции, даже если вы измените свою платформу.

В нашей компании мы используем python для всех сценариев, мониторинга, … и java для приложения, и мы хорошо работаем в гетерогенной среде.

Я бы сказал, что perl и python, вероятно, являются двумя лучшими альтернативами. Вы можете многое сделать с sed и awk.

Sh (bourne shell), grep, awk и sed – всегда хорошая вещь, чтобы снова схватиться. Perl отлично, если вы не много textового regexing и ремонтопригодность не так важно (не говоря, что это невозможно). Python; если читаемость важна для вас. Мое предпочтение – Python, но все эти инструменты хороши для большинства вещей, которые вы бросаете на него. Возможно, вам захочется пересмотреть требование syntaxа c / c ++, сохраняя при этом зависание в конечном итоге.

Если вы хотите научиться чему-то с нуля, вероятно, лучше всего (повторно) изучить bash.

Кроме того, perl и python популярны в наши дни; Я частично отношусь к perl, но мой стиль написания perl не сильно изменился, так как Perl 4 отсутствовал.

Я не знаю ни одного языка сценариев типа «c-syntax».

Perl, руки вниз, хотя бы для невероятного ресурса CPAN ( http://search.cpan.org/ ). Преимущество использования языка сценариев с таким массовым сообществом, что вы вряд ли когда-либо будете devise что-то самостоятельно.

Perl также имеет преимущество быть настолько сложным, насколько это необходимо для текущей ситуации. Вы можете рассматривать его как простой язык сценариев для быстрого администрирования или одноцелевые scripting, но вы можете использовать objectно-ориентированные концепции или обширные системы метаobjectов, когда вы хотите создавать более крупные, простые в обслуживании приложения (например, демоны, serverы, клиенты).

Различия между языками сценариев не достаточно серьезны, чтобы выбрать явного победителя, но вам следует в первую queue взглянуть на то, как легко вам будет find информацию по интересующим вас темам.

Синтаксис Perl также может быть поразительно близок к C, если вы можете обойти отсутствие набора textа и сигил; расширенное использование perl придет естественно, поскольку вы в конечном итоге узнаете сильные стороны языка.

И для скептиков на фронте читабельности: вы можете писать, чтобы читать код на любом языке. Если вы оглядываетесь назад на свой код с 4 месяцев назад и не можете его понять, вы делаете что-то неправильно.

ps Это post было заполнено ссылками на различные модули, поддерживающие администрирование на CPAN, но, viewимо, новые пользователи могут отправлять только одну ссылку, поэтому используйте эту ссылку CPAN для searchа таких вещей, как «CVS» «SVN» «Cron» и «Moose» ( обширная система objectов)

  1. наиболее часто используемый: Perl, в основном по историческим причинам. Python широко доступен во всех дистрибутивах Linux и BSD (он даже установлен на Mac OSX), и намного лучше изучать / программировать. Конечно, как только вы получите syntax, Bash проще для всего, что вы могли бы сделать в командной строке. В конце концов, это командная string.

    • Синтаксис C: есть csh , но вы можете легко установить TCC и использовать реальный C в качестве языка сценариев, скомпилированный из источника за меньшее time, чем запуск других языков.

    • другие языки сценариев: много! Lua , Ruby , JavaScript …

Вы должны использовать комбинацию всех тех, где это уместно. Мне очень не нравится perl (читаемость), но это хорошо для многих вещей. С другой стороны, Python был для меня чем-то новым с точки зрения системного администрирования, пока мне не пришлось управлять (и до сих пор) несколькими машинами KVM. Запуск, остановка, сохранение, загрузка, перенос всех этих машин через скрипт стал реальностью после 1 часа беспорядка с привязками python libvirt.

И последнее, но не менее важное: я бы не использовал perl или python, если я должен, скажем, сбрасывать все базы данных с serverа mysql каждую ночь (каждая database в собственном fileе дампа), tar и rsync на каком-то другом serverе. Зачем ? Потому что быстрее и проще писать в bash 🙂

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

Мне нравится ruby. Это просто и легко программировать. Существует отличная книга по системному администрированию с использованием rubyа .

Ruby используется в нескольких системах управления конфигурацией (capistrano, chef, puppet) и последней версии metasploit.

Вы можете использовать спешку , замену для оболочки Unix с syntaxом ruby ​​и делать такие вещи:

 local = Rush::Box.new('localhost') remote = Rush::Box.new('my.remote.server.com') local_dir = local['/Users/adam/myproj/'] remote_dir = remote['/home/myproj/app/'] local_dir.copy_to remote_dir remote_dir['**/.svn/'].each { |d| d.destroy } 
  • Рубин
  • питон
  • Go – межплатформенный язык, сценарии упоминаются как одна из сильных сторон Go .
  • Node.js – см. Grunt.js, Gulp.js. Многие проекты теперь используют Node.js в качестве инструмента автоматизации оболочки.
  • Perl
  • неожиданный конец ошибки fileа в fileе сценария
  • Управление патчами на нескольких системах
  • Команда Unix Snoop
  • Книги или веб-страницы по философии Windows
  • apt-get обновить / обновить list без изменения чего-либо
  • mysql & maatkit: Какая locking будет делать mk-table-checksum?
  • Как перенести веб-website с одного serverа на другой с минимальным временем простоя?
  • Может кто-нибудь помочь мне установить MYSQL serverную пелазу? Это меня раздражает
  • Запустить session экрана
  • Как обновить passwords уже существующих пользователей в ldap?
  • apt-get on solaris
  • Interesting Posts

    Использование параметров «mx ptr» в записи DNS SPF

    AADSTS90019 при попытке автоматической регистрации Azure AD подkeyенного к домену устройства Windows 10

    Список клиентов DHCP-клиента Windows и DNS-суффикса (опция 119)

    Не удалось записать в Samba share, даже если член группы

    WDS захватывает image, не загружая

    Блоки Firewalld IPv6, игнорирует конфигурацию

    Как настроить modprobe для распознавания вновь установленного драйвера для eth1 при загрузке?

    Синтаксическая ошибка Nagios bash

    Принудительное сканирование по принуждению

    Мониторинг сетевого трафика приложений

    index.html redirect при сохранении статического fileа index.html с Apache mod_rewrite

    Является ли обратный DNS хорошим методом для продвижения серых IP-адресов из доверенных доменов в белый?

    Должен ли я включить автоматическое обновление на стойке Debian lenny?

    Брандмауэр на основе ipfw замедляет работу веб-serverа Apache

    Сервер Sql 2008 – изменено имя serverа

    Давайте будем гением компьютера.