Что программист должен знать каждый системный администратор?

20

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

Тим
источник
1
Не должно ли это быть таким вопросом. Я думаю, что это уже там спросили.
Тим Мэтьюз
2
Да, но, как было отмечено по этому вопросу, существуют два очень отдельных сообщества по SF и SO. Я думаю , было бы интересно посмотреть , что программист вещь сисадмины думают админы должны знать, а не то , что программист вещь программисты думают админы должны знать.
Тим

Ответы:

29
  • Контроль версий . Уметь создавать, читать и применять патчи. Знать, как использовать систему контроля версий, которая представляет широкие версии репозитория, и почему вы хотите такую. Знать, как писать описательные журналы изменений и почему вы хотите их. Знать, как искать в журналах репозитория ключевые слова и временные рамки.
  • Сценарии . Сделай что-нибудь один раз и будь на пути. Сделайте это дважды или более, сделайте это один раз, затем напишите сценарий.
  • Отладка . Уметь читать трассировку стека и сообщать о соответствующих ошибках контактному лицу службы поддержки. Обнаружение ошибки приятно и полезно, но знание того, как ее исправить, может потребовать больших затрат на чтение кода. Сделайте ту часть, которая проста для вас, и пусть они сделают ту часть, которая проста для них.
  • Тестирование . Мониторинг непрерывно и регистрировать ошибки. В сочетании с контролем версий и тестированием у вас есть четкое представление о том, что могло пойти не так, когда и что изменилось. Контролировать как производство, так и подготовку производства.
  • Экспертная оценка . Предлагайте и просматривайте изменения в производственных системах. Проведите тестирование на подготовительном этапе, точно определите, что необходимо сделать, и запишите, какие службы могут быть затронуты в течение длительного времени. Не позволяйте Управлению изменениями превращаться в политические битвы за бюрократическую власть.
  • Изучите криптографию . Современный системный администратор отвечает за сетевые ресурсы; добавление безопасности в качестве последнего шага находится где-то между невозможным и очень дорогим предложением. Понимание криптографии с открытым ключом, методов обработки паролей и шифрования в целом будет чрезвычайно ценно.
мин
источник
И даже если вы не можете писать сценарий (или писать хорошо), очень важно уметь распознавать, когда нужно что-то автоматизировать.
Ether
Что такое быстрая и простая система контроля версий для магазина Windows?
Jftuga
SVN? Я имею в виду, это кажется достаточно хорошим для этого идиота: codinghorror.com/blog/2008/04/…
jldugger
9

Я бы начал с:

  1. Как написать больше, чем самые простые сценарии, независимо от языка. Автоматизация - твой друг.
  2. Как запустить отладчик / знать, как читать отчеты о сбоях: это значительно облегчает определение отчета о сбоях и того, у кого спрашивать, что делать.
  3. Контроль версий - не только для кода, но и для всего, что стоит хранить историю или контролировать изменения.
Chealion
источник
7

Системное администрирование - это просто программирование. Система управления конфигурацией позволяет вам видеть всю инфраструктуру как распределенную машину. Как системный администратор, ваша задача - программировать эту машину.

Знай один текстовый редактор. Обычно vi для системных администраторов, emacs для программистов.

Знать, как писать сценарии. Выберите язык сценариев. Perl является постоянным фаворитом, как и комбо shell / sed / awk. Ruby и Python могут работать, но для многих вещей объекты - неправильная парадигма.

Уметь писать читабельную документацию.

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

Учитесь мыслить в терминах программирования. Понимать процедурные, объектно-ориентированные и функциональные парадигмы программирования. Они никогда не могут быть использованы, но знание их делает вас бесконечно более продуктивным.

Научитесь использовать отладчик (или более) и ведение журнала.

Научитесь пользоваться СУБД. Существует множество требований к обработке данных, которые могут быть упрощены при правильном использовании СУБД. Даже возможность переключения на роль администратора по требованию может творить чудеса.

Протестируйте перед развертыванием. Ознакомьтесь с философией разработки, основанной на тестировании.

Парное программирование - это хорошо. Пусть кто-нибудь еще присмотрит за вашим плечом, чтобы выучить / посоветовать / исправить.

Научитесь хотя бы проходить знакомство с кучей языков. Учите новый язык каждый год.

Девдас
источник
Вернувшись в реальный мир ... Мне еще предстоит встретиться с сисадмином, который делает все это (кроме тестирования и написания небольшого количества документа). Может быть, я работал не на те компании!
PowerApp101
1
Тогда ваша версия реальности отстой. Каждый из моих работников предпочитает vi (я выучил emacs, и мне не хочется дважды проходить через эту пытку); у нас есть сотни Perl-скриптов и дюжина одноразовых php-сайтов для поддержки. Мы запускаем Opsview / nagios для мониторинга, который на самом деле представляет собой просто постоянное тестирование формы - мгновенную обратную связь, когда вы фиксируете изменение. Тем не менее, я хотел бы получить больше контроля версий для веб-сайтов и сценариев, а также улучшить аудиторские следы.
Jldugger
Вы, ребята, администраторы Unix? В мире Windows многие из этих вещей еще не просочились в сознание системных администраторов. Поверьте мне, я был бы рад, если бы это было так.
PowerApp101
Мальчик 20-го века, мы пнули наших администраторов Windows в изучение этого материала. Их еще нет, но лучше здесь, чем когда я присоединился. Большие проблемы, с которыми мы сталкиваемся сейчас, - это проблемы политики / управления, а не технические проблемы, которые у нас были.
Devdas
О, и у нас также есть разработчики для Windows, у которых есть подсказка, так что они на самом деле поддерживают такие усилия.
Devdas
5
  • Знать, как программировать. Да, это важно: как сказал один комментатор, если вы делаете это более одного раза, то напишите сценарий - и напишите это хорошо.
  • Знать инструменты, включенные в стандартную установку операционной системы. Для администраторов UNIX это означает такие инструменты, как Korn Shell (ksh), Perl и vi. Не полагайтесь на наличие оболочки Emacs, Ruby, Tcl или C.
  • Знай сеть. Как соединяются пакеты Ethernet? Как выглядит пакет? Какие существуют типы пакетов? Познакомьтесь с такими инструментами, как tcpdump, wireshark, snoop и другими.
  • Написать переносимый код. Если код будет работать под Linux - и Tru64 - и Solaris - и OpenVMS - тогда напишите переносимый код. Даже если он будет работать только под двумя версиями UNIX - сделайте его переносимым. Но тогда, если это не должно быть портативно, не тратьте дополнительное время на это.
  • Знайте, где находится документация. Для Perl это означает perldoc, Perl Mongers, perl.org и т. Д. Для ksh это означает страницу руководства и ваши любимые книги оболочки Korn.
  • Документ, документ, документ, документ! Документируйте свой код, создавайте справочные страницы, создавайте встроенную документацию Perl и все, что подходит. Объясните, как использовать программу и почему вы ее так закодировали.
  • Знать инструменты упаковки вашей системы. Знать, как создавать RPM для Red Hat, хранилищ HP-UX или пакетов Solaris: это позволит вам создавать пакеты для ваших систем и, таким образом, интегрировать их в процесс установки.
Mei
источник
3

Сценарии очень важны, но я бы сказал, что знание некоторых «настоящих» языков - явный бонус. Например, с пространством имен .NET System.DirectoryServices можно сделать несколько очень полезных вещей.

Максимус Минимус
источник
3

Я программист и старший администратор / интегратор. Чтобы работать там, где я работаю, нужно знать следующие вещи:

  • Как писать сценарии оболочки (POSIX, без Bashisms), немного Perl, немного Python
  • Basic C (единая спецификация UNIX)
  • Как установить цепочку инструментов компилятора
  • Как создавать библиотеки и другие проекты OSS из исходного кода
  • Что такое Valgrind и как его использовать для выявления утечек памяти
  • Как свернуть пакеты .rpm и .deb
  • Хотя нам это не нужно , немного PHP и немного LISP не повредят

Большинство младших администраторов могут посмотреть на одного из наших программистов и сказать (с правами), да, я установил его правильно, вот где у вас есть утечка, поэтому код, который вы только что нажали, нарушает. Или "Нет, это не наша версия MySQL, посмотрите на ваш запрос здесь ..."

Я думаю, что мы немного отличаемся, когда нанимаем талантливого администратора ... мы наполовину ожидаем, что они (в конце концов) найдут свой путь к программированию, даже если это просто взлом чего-то, что мы используем, чтобы работать так, как им нужно для работы ,

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

Тим Пост
источник
1

Много-много лет назад (на самом деле Windows NT 3.1) я начинал как программист, специализирующийся на написании сервисов и даже случайных драйверов устройств. Это означает, что вы хорошо знакомы с ядром Windows. Со временем я немного устал от программирования и переключился на управление сетью. Я обнаружил, что мой опыт программирования очень важен снова и снова.

Дело не только в том, что написание скриптов на VBScript относительно безболезненно. Знание того, как работает Windows, и, в частности, как работает IP, очень помогает в устранении нечетных проблем с сервером и сетью. Также это мышление. Программисты привыкли к документации и контролю версий, и я ужасаюсь, когда я вижу, сколько администраторов Windows просто попробуют что-то посмотреть, работает ли оно, и потом беспокоятся о том, чтобы разобраться в беспорядке.

Все очень хорошо, но это не очень полезный совет - уходить и работать программистом десять лет! Однако я думаю, что это поможет большинству системных администраторов иметь некоторый опыт программирования на «жестком» языке, таком как C ++ или C #. И если в вашей организации есть ручные программисты, пейте с ними!

Джон Ренни

Джон Ренни
источник
1

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

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

Рональд Поттол
источник
1

Со всеми описаниями здесь, я не собираюсь говорить, что я системный администратор. Но тот факт, что я создал и управляю парой серверов Windows / Linux, я должен признать, что:

  • в linux необходимо знать bash-скриптинг - если вы знаете, как интегрировать его с perl / awk / etc, лучше. Я обнаружил, что многие задачи стали проще с его помощью.

  • Знание программирования на C / C ++ очень помогает. Иногда вам нужно изменить исходный код GNU (если вы его используете) в соответствии с вашими потребностями, потому что, став продуктом GNU, не гарантирует, что вы всегда получите необходимую помощь вовремя - и много раз они написаны на C / C ++.

Марио Патти ФК
источник
0
  • SQL - все работает с базами данных
  • Программирование - язык не имеет значения, если вы понимаете логику и процесс, который вы можете выучить и адаптировать к любому языку.
  • КАК ДОКУМЕНТИТЬ КОД И ИЗМЕНЕНИЯ - этот огромный. Сколько раз вы застревали, глядя на конфигурацию, пытаясь выяснить, почему, черт возьми, кто-то сделал это и на что это повлияет, если мы изменим ее обратно. Это выходит за рамки всего того, что вы кодируете или пишете, и охватывает, когда вы вносите изменения в настройки брандмауэра, чтобы обработать дополнительный случай, когда пользователь X получает электронную почту из домена Y во второй половине дня, когда идет дождь. И это может быть не вы, это может быть PFY, который решит пойти дальше и сделать это, а затем должен позвонить вам в 2 часа ночи в отпуск, потому что все сломалось отвратительным образом.
  • Системные языки - В Windows это такие вещи, как Powershell и WMI, которые позволяют вашим языкам сценариев объединяться в довольно мощные ресурсы и делать что-либо на ПК. Unix / Linux имеет свой собственный набор инструментов, о которых я не могу говорить.
Shial
источник
0

Знание того, как связываться с вашим LDAP и получать необходимую информацию на выбранном вами языке сценариев, является ключевым для всего: от устранения неполадок до реального активизации различных типов автоматизации (обеспечение учетных записей и ресурсов, более интеллектуальные проверки учетных записей пользователей или компьютеров).

Может показаться простым, но я видел множество магазинов, где люди не думают, что им нужен такой вид системного администрирования. Множество мест тратят большие $$$ на большие наборы административных инструментов и, насколько я могу судить, 95% того, для чего они используют инструменты, можно было бы сделать за несколько часов написания сценариев, если бы кто-нибудь знал это или знал, как сделай это.

damorg
источник
0

Я обнаружил, что знание сценариев bash, dos batch и powershell предоставляет системному администратору среду, позволяющую делать практически все в любой популярной системе.

Beep Beep
источник