понедельник, 30 мая 2011 г.

востановление mbr windows 7

Решение 2. Восстановление при помощи командной строки:
Проделайте те же действия, что и в Решении 1 до появления окна System Recovery Options, но выберите не Startup Repair, а Command Prompt. Затем, после появления сообщения системы X:windowssystem32> напишите bootsect /nt60 All, запустив процесс восстановления загрузчика. По завершению работы в ответ на сообщение системы X:windowssystem32> напишите exit → Enter. В окне System Recovery Options выберите Restart. Затем загрузите Windows 7 в штатном режиме.

понедельник, 9 мая 2011 г.

карьера системного администратора


Что подразумевают под системным администрированием?


(речь про сисадминов-универсалов, конечно)
  • Администрирование сети. В минимальном виде это «гуру конфигурации десктопного wi-fi роутера», в максимальном — человек, который спланирует сеть на 1000 человек с филиалами в пяти городах. В это входит: топология сети (какую железку в какую втыкать и зачем), планирование СКС (где и сколько розеток), конфигурация nat'ов и vpn'ов и т.д. В эту же кучу идут и всякие сервисы контроля доступа в интернет — squid, IIS, умные и тупые файрволы, IDS и т.д.
  • Администрирование рабочих станций. Сгоревшие БП, переустановка виндов, решение проблемы с очередным банк-клиентом, починка отвалившейся печати, решение проблемы «чем мне открыть этот файл», борьба с вирусами для windows и т.д. Минимальный уровень — установить офис, максимальный — разработать групповую политику для автоматического накатывания новой версии софта, которая не имеет msi (самому делать придётся). Заодно решаются проблемы с автоматическим деплоем рабочих станций, бэкапов, безопасного удаления и т.д.
  • Централизованная авторизация. Обычно в этом качестве выступает Active Directory. Одна из самых «чистых» дисциплин, она же одна из самых сложных. Минимальный уровень — добавить/удалить пользователей, вогнать рабочую станцию в домен. Максимальный — реализовать автоматическое назначение политик на пользователей заданного OU в случае доступа к компьютеру в одном из узлов соседнего дерева в лесу (мы все любим эту терминологию, да).
  • Почта. Условно делится на три мира: мелкие виндовые почтовые сервера (класса Kerio), могучий и ужасный Exchange, нормальный linux/freebsd сервер с любым вменяемым почтовым сервером (postfix, exim, sendmail и т.д.). Минимальный уровень: добавить почтовый ящик, добавить ещё один домен и добавить дополнительный емейл пользователю. Максимальный уровень: настроить почтовую тикет-систему, список рассылки, фильтрацию спама, автоматическое заведение ящиков и т.д.
  • Базы данных — чаще всего является частью другой инфраструктуры. Специализированные администраторы баз данных — совсем отдельная лига. Минимальный уровень: установить, перезапустить, подключить в приложении, добавить/удалить БД. Обычно так же умение сделать бэкап и его восстановить (что сложнее). Максимального уровня нет, т.к. если вы хорошо знаете какую-либо СУБД, SQL, способны развернуть сервер с активной асинхронной подпиской на другую БД, то это уже не совсем «универсальный системный администратор». Условным потолком можно считать способность починить побившуюсь MyISAM базу данных.
  • 1C. Не смотря на то, что 1C — это такая фирма, выпускающая игрушки и обучающие диски, под «1С» обычно подразумевают 1C: Предприятие, 1С: Бухгалтерию и прочие кошмарные порождения извращённого соития бухгалтерии и программирования. Человек, который много про «это» знает, называется «программист 1С» (не путать с нормальными программистами). Минимальный уровень: создать новую базу, завести/удалить пользователя. Максимальный уровень: поправить конфигурацию, добавить поле в отчёт, разбираться с тем, как 1С возлежит с SQL.
  • Сайты. Под этим может подразумеваться почти что угодно — от «заказать shared-хостинг» до «решить проблему производительности в django-orm при работе с postregsql». Запросто в эту область может оказаться включенным копирайтинг, поисковый спам (SEO), веб-дизайн, веб-программирование и т.д. Минимальный уровень: уметь чуть-чуть верстать в html, максимального не существует, т.к. перечислены разные профессии. Кстати, среди них есть и настоящая систадминская: администратор web-сервера — load ballancing, failover, high avablility, кластеры и т.д., что опять же выходит за категорию «универсальности».
  • Системы контроля доступа и видеонаблюдение. Чаще всего их делают специализированные организации, однако, бывает, что приходится возиться и системному администратору. Минимальный уровень: подцепить ещё одну камеру, прописать карточку доступа. Максимальный уровень: автоэкспорт видео в архив, синхронизацию всех видов контроля. Будущее с большой вероятностью не админское, насколько я знаю, эту область администраторы обычно не любят.
  • АТС. Ещё одна область, которая попадает в системное администрирование случайно. Минимальный уровень: добавить переадресацию, подключить дополнительную входящую линию. Максимальный уровень: поднять свой астериск с голосовым меню на 300 пунктов, sip-skype гейтом, маршрутизацией, способной перкидываться между IP, медью и E1 в зависимости от условий. Ещё сюда часто попадает телефонная legacy, «обстучать крон», разбираться в всяких плезиосинхронных входящих линиях, E1 и т.д. Повторю, это не админская специализация — вообще этим занимаются телефонисты.
  • Печать/сканирование. Чаще всего тривиальная задача, пока не приходится делать принтеры сетевыми и решать проблемы всяких промышленных принтеров. Минимальный уровень: подцепить принтер; Максимальный уровень — решить проблему цветовых профилей, подключить принтер этикеток в качестве сетевого, автоматически назначать принтеры при входе пользователя на компьютер.

Помимо этого есть множество специфичных областей: терминальные серверы, различные ERP/CMS, служебный софт для обслуживания сети и т.д.

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

Отдельно нужно сказать о тех, с кем вы столкнётесь при собеседовании. В отличие от остальных случаев, собеседовать вас будут с 99% вероятностью люди, далёкие от компьютеров. И проверять они будут не ваши знания, а вашу адекватность и «бойкость ответов». Если вы их закидаете умными словами, вас не воспримут адекватно.

Кто такой помощник системного администратора?

… aka эникейщик.
Это человек, на которого сваливают всю плохоформализуемую и нудную работу, общение с пользователями и возню с железом.

Основные вещи, которые обычно делает эникейщик:
  • helpdesk — стол вспоможения. Отвечать на телефонные звонки сотрудников, показывать как нажимать any key, помогать найти кнопку сортировки столбцов и выковыривать застрявший в приводе диск.
  • Подготовка рабочих станций — установка, подключение, укладывание проводов, установка ОС и софта и т.д.
  • Решение всякой неизлагаемой словами фигни с пользовательскими приложениями — особенно это касается софта из налоговой и банк-клиентов.
  • Исправление СКС (новые розетки, перенос существующих), диагностика проблем, коммутация, если стоят кроссы, то их расшитие.

Если в компании нет эникейщика, то его обязанности исполняет системный администратор.

Заметим, «помощник системного администратора» чаще всего практически расходный материал с высокой текучкой. В одной компании дело доходило до того, что начальник отдела не знал по именам всех помощников администраторов (3 шт), ибо хоть кто-то но раз в месяц-полтора уходил.

С точки зрения эникейщика — такая работа — это трамплин в системное администрирование, но никак не основная профессия.

О профилях специализализированных системных администраторов мы поговорим чуть позже, а пока о карьере в пределах этих двух профессий.

Кто идёт в эникейщики?


Мой опыт говорит, что туда идут обычно люди без профильного образования. Чаще всего молодые, хотя я собеседовал дядю 42 лет на должность «помощник системного администратора». Не смотря на то, что описанные выше обязанности вроде бы являются почти тривиальными, для многих это самый сложный шаг. Стать администратором из помощника администратора легче, чем стать помощником сисадмина.

Основная причина: от вас будут хотеть знаний, которые сравнимы с администратором. Причём, половина из этих знаний не изложена нигде в книгах и является переходящим опытом (например, возня с банк-клиентами). Ещё одной важной особенностью является «чувство компьютеров», я встречал на собеседованиях много людей, они просто не могли оценить естественность того, что происходит в компьютере, что сильно им мешало в анализе ситуации. Это невербальный опыт, он появляется после долгой работы с компьютерами.

Карьера


Типичная карьера выглядит так: помощник системого администратора (или администратор в маленькой компании с 5-8 человеками), администратор, администратор (может быть ещё 2-3 раза администратор), начало настоящей специализации. Специализация может быть двух видов: повышение технического уровня (вместо поверхностных знаний обо всём, глубокие знания о немногом), и административная карьера — начальник IT-отдела, CIO (ИТ-директор) и т.д. Это два совершенно разных направления — первое связано с компьютерами, второе — с людьми, управлением персоналом, планированием, бюджетированием, совещаниями и т.д.

Переход с этапа на этап определяется несколькими факторами: 1) Теоретическими знаниями 2) Практическими навыками 3) Знанием реалий 4) Связями и отношениями с другими людьми (как внутри компании, так и за её пределами).

Среди этого не очень понятным выглядит третий пункт. Что такое «реалиии»?

понедельник, 2 мая 2011 г.

записки про bash


При запуске программы проверяются
условия:
- право на исполнение
- является ли файл бинарным
исполняемым файлом
- если это текстовый файл, есть ли
в первой строке путь к интерпретатору
При использовании bash первая строка
shell script должна быть такой:
#! /bin/bash


Пример использования переменной:
PERM=value
echo $PERM


Три способа определения массивов:
MASS[0]=value
MASS=([0]=value1 [5]=value2)
MASS=(value1 value2)
Получение значения элемента массива:
${MASS[0]}
Получение значений всех элементов массива:
${MASS[*]} или ${MASS[@]}


Для просмотра всех переменных окружения и функций можно воспользоваться командой set.
Программа env покажет только переменные, а export — только переменные помеченные как
экспортированные. Удаление переменных происходит при помощи оператора unset.


Оператор read
read [переменная ...]
если оператор read вызывать без указания переменной, он все данные, введенные
пользователем, поместит в переменную по умолчанию — REPLY


В подстановке используется то, что
программа будет выводить на
стандартный вывод.
Два варианта записи подстановки:
`program`
$(program)


В shell script используется ограниченный
набор арифметических операций:
+ - * / и круглые скобки.
Для подстановки значения
арифметических выражений
используется:
$(( выражение ))
Если значение переменной,
используемой в арифметическом
выражении, не является целым числом,
то её значение считается равным 0.


Оператор if
if условие
then
список операторов
[else
список операторов ]
[elif условие
список операторов ]
fi




test [опции] условия ...
Программа test предназначена для
проверки следующих типов условий:
- сравнение различных значений,
- проверка типов и наличия файлов,
- проверка логических условий.


Программа может проверить два типа логических условий И (AND) и ИЛИ (OR).
● Выражение1 -а Выражение2 — возвращает истину, если истинно и Выражение1 и
Выражение2.
● Выражение1 -о Выражение2 — возвращает истину, если истинно или Выражение1
или Выражение2.
● Оператор ! инвертирует значение логического выражения.
● Сравнение чисел происходит при помощи следующих операторов:
● число1 -eq число2 — истина, если числа равны.
● число1 -ne число2 — истина, если числа не равны.
● число1 -gt число2 — истина, если первое число больше второго.
● число1 -ge число2 — истина, если первое число больше или равно второму.
● число1 -lt число2 — истина, если первое число меньше второго.
● число1 -le число2 — истина, если первое число меньше или равно второму.
● Сравнение строк:
● -n строка — истина, если строка имеет не нулевую длину.
● -z строка — истина, если строка имеет нулевую длину
● строка1 = строка2 — истина, если строка1 идентична строке2.
● Проверка существования и типов файлов:
● -e /путь/к/файлу — истина, если файл существует.
● -f /путь/к/файлу — истина, если файл существует и является обыкновенным
файлом.
● -d /путь/к/файлу — истина, если файл существует и является директорией.
● -L /путь/к/файлу — истина, если файл существует и является символьной
ссылкой.
● -r /путь/к/файлу — истина, если файл существует и доступен для чтения.
● -w /путь/к/файлу — истина, если файл существует и доступен на запись.
● -x /путь/к/файлу — истина, если файл существует и доступен на выполнение.
● -s /путь/к/файлу — истина, если файл существует и имеет не нулевую длину.




&& ― логическое И.
|| ― логическое ИЛИ.



Оператор case
case строка in
шаблон)
список операторов
;;
[ шаблон)
список операторов
[;;] ]
esac


Оператор for
for переменная [ in список ]
do
список операторов
done


Получение данных из внешних файлов
for I in `cat ./sample13-data`


Оператор while
while условие
do
набор операторов
done


Оператор select
select переменная in список
do
набор операторов
done



Оператор точка и функции
Оператор точка позволяет включать код, находящийся в другом файле.
function sample
{
Тело функции.
}
sample()
{
Тело функции.
}










воскресенье, 1 мая 2011 г.

Мешок банальных советов

  • очень простой способ передать файлы с машины на машину — tar cz. | nc -l -p 2214 (на передающей стороне) и nc адрес 2214 | tar xz (на принимающей). 2214 — номер порта, выбирается по желанию. в разных версиях nc нужно писать nc -l -p или nc -l
  • в локальной сети из дефолтно-настроенных убунт, можно обращаться к машинам по имени, а не по айпи: username-desktop.local отрезольвится в ip машины, которую назвали username-desktop. это магия mdns, спасибо apple
  • avahi-browse -a быстро покажет список имен машин с в локальной сети, а ключ -r покажет сразу и их ip. как и в предыдущем хинте, требуется avahi, он есть в дефолтной убунте. сама команда — в пакете avahi-utils
  • пользуйтесь ctrl-R в консоли, чтобы не жать «вверх» по сто раз
  • history не резиновый. если что-то было забито в историю интерпретатора, рано или поздно оттуда может исчезнуть, не полагайтесь на него, как на справочник
  • используйте set -e в скриптах. неотработавший «cd» во временный каталог может надолго испортить настроение содержимое /home
  • проверяйте код возврата
  • чтобы вернуться в предыдущий каталог, есть команда cd -. в zsh еще есть команда d еще есть команда dirs -v, показывающая историю переходов. еще в zsh можно делать вот так: cd -2
  • пишите в скриптах длинные --варианты параметров
  • не пишите в скриптах rm -rf $VAR/
  • используйте visudo для редактирования sudoers
  • потеряли пароль рута? при загрузке укажите ядру параметр init=/bin/bash и сбростье пароль через passwd
  • у грепа есть полезный параметр --color
  • команда, чтобы перечитать отредактированный файл с переменными окружения: source /etc/environment .
  • пользуйтесь bash -x для отладки скриптов
  • пользуйтесь strace для отладки всего остального. от лишнего выхлопа спасет параметр -e имявызова
  • не путайте /bin/sh и /bin/bash, это не всегда одно и то же. особенно в дебиане, особенно в убунте
  • настройте алиасы
  • если на команду повешен алиас, то запустить ее «настоящую» можно, добавив в начале бэкслеш например: \ls
  • если терминал переклинило после некорректного выхода из псевдографической программы иили вырвашегося на просторы stdout мусора, есть волшебная команда reset
  • exec >file в скрипте перенаправит его вывод в файл и не перезапустит скрипт
  • уже написали вагон скриптов? забекапьте
  • не храните все в / или /home
  • lvm уже придумали
  • используйте в скриптах mktemp для создания временных файлов и каталогов
  • пишите переменные вот так: ${VAR}
  • VAR=X и export VAR=X — разные вещи
  • dd может показывать, сколько он уже скопировал, если пнуть его черз kill -USR1
  • kill может принимать аргументом номер задачи, а не только идентификатор процесса: kill %1
  • jobs, bg, fg, disown — тоже так умеют
  • если «вышли» из программы через ctrl-Z, вернуться можно командой fg
  • rsync нужен не только для сетевых операций
  • rm something и rm something/ — это разные вещи. и не только в rm, cp, ls и rsync — тоже
  • watch и repeat уже написаны, не надо велосипедить их через while true
  • at тоже уже написан, а sleep понимает время не только в секундах
  • sudo echo > file открывает файл на запись не с правами рута. это делается так: sudo sh -c 'echo > file'
  • если скрипт запускается в линуксе, это не значит, что он так же хорошо отработает в bsd или макоси
  • пишите --параметры перед аргументами, иначе ls file -l в bsd вас удивит
  • грепаете вывод ifconfig? ifconfig тоже бывает разный
  • нормально работающие версии утилит в bsd и макоси имеют приставку g: gsed, gmake

Как поднять сервер для python скриптов за 1 минуту

Сам сервер запускается одной коммандой:
python -m CGIHTTPServer
Как вы можете видеть, по умолчанию он использует 8000й порт и предоставляет доступ к текущей директории терминала. Но скрипты должны запускаться из папки «cgi-bin» текущей директории. Например так:
localhost:8000/cgi-bin/helloworld.py
Спасибо за внимание, удачного тестирования скриптов!