Линуксоид переходит на windows

Не так давно я сменил работу — перешел в очень крупную организацию со строгими политиками безопасности. По корпоративному кодексу здесь все сотрудники сидят под Windows с урезанными правами. Политики безопасности довольно жесткие. До этого в качестве основной рабочей системы я использовал Linux, на который перешел очень давно, сначала поставив его на служебный компьютер, а потом и на все домашние.7197ff51fa0c44e5a3eb04ef07305206.jpeg

Помимо основной работы я веду дополнительно несколько проектов на Django, а моя должность никак не связана с программированием. Можно сказать, что с точки зрения IT-шников и безопасности, я являюсь обычным офисным планктоном. И здесь я опишу вещи, которые я развернул на своей урезанной во всех правах рабочей станции. Возможно большинство моих заметок будут наивны, но для меня они стали открытием — за последние 8 лет windows я видел три раза, два из которых по телевизору) И эта статья окажется полезной людям, оказавшимся в схожем со мной положении.

Сначала это кажется непривычным — здесь за каждой программой надо идти на официальный сайт и качать ее руками. А как качать? Надо открывать Internet Explorer, искать в google, ждать, пока он подвиснет или упадет. Никаких wget-ов и curl-ов обнаружить мне не удалось… Благо мучиться с этим браузером недолго — первым делом встает мой любимый огнелис. После этого ослика (его еще так называют?) можно отправить подальше.Далее нам нужно как-то общаться с людьми. Здесь мне нужен скайп и аська. Быстро находим родной pidgin и skype. Skype… здесь он тормозит еще больше и жрет памяти больше всего офисного пакета. Хотя вроде теперь он принадлежит Microsoft, неужели никак нельзя оптимизировать? Хорошо, что весь этот софт подхватывает системные настройки прокси.Да, прав у меня никаких на этом компе, по этому все программы искались в portable-версии.

На заметку. В Windows 7 есть встроенная утилитка «Ножницы». Она позволяет удобно делать скриншоты —, а именно выделить нужную часть экрана для снимка. Ищется она в меню «Пуск». Я хотел повесить запуск ее на горячую клавишу, но пользовательские права доступа не дали мне этого сделать. Зато она находится в system32 и ее можно вызвать через  → snippingtool. Ей я и делал все скриншоты в статье.

Первое, с чем я не мог смириться — отсутствие консоли и привычных команд. Как бывший пользователь linux я не мог вообразить работу без привычного bash-а. Порыскав по интернетам, нашел для себя хороший эмулятор терминала Conemu. Довольно добротная консоль. Имеет кучу настроек, позволяет делать табы, умеет нормальное выделение-копирование-вставку текста без особо лишних телодвижений, поддерживает терминал по умолчанию (я выбрал powershell), автозапуск скриптов при загрузке, файловый менеджер FAR. Смотрится вполне симпатично.1322e9065a75467595591ccef494fdb7.JPG

В линуксе я привык делать ссылки на часто используемые программы в исполняемые директории. Здесь у меня нет на это прав. В system32 просто так ничего не добавишь. Свой PATH по умолчанию я тоже не нашел, как поменять. Пришлось ставить в ConEmu при запуске выполнение скрипта для добавления новой директории.

PowerShell порадовал — довольно логичные команды есть на многие часто используемые утилиты — Get-Process, Format-List, Select-String, Stop-Process… Конечно не так удобно — непривычные опции, на выходе не строки, а объекты, но положить отжирающий память процесс уже можно. В прочем, можно и в cmd — tasklist и killtask там также есть. Также порадовало наличие уже привычных в алиасов. ls, mv, ps, kill — уже есть из коробки, что несказанно радует.

Конечно не обошлось без граблей. Так, команда cat есть, за ней скрывается Get-Content, которая выводит текст в кодировке ANSI. Чтобы вывести в UTF-8, нужно добавлять дополнительный параметр. И хотя алиасы есть, я не могу сделать их с параметрами! То есть alias cat «Get-Content -Encoding UTF8» не работает. Обход этого — создание своего скрипта. Все советуют делать chcp 65001 и выставлять шрифт Lucida. Хрен — для PowerShell это не работает!

Ну и да, эти чертовы слеши в другую сторону! Работая в консоли постоянно с ними путаешься. И еще доставляет регистронезависимые команды и файлы — быстро привыкаешь и уже поступаешь также на других машинах с обычной консолью.

Такие косяки все больше и больше подталкивали развернуть окружение Cygwin или собрать нужные мне вещи через mingw. Но об этом ниже.

Конечно, я привык ставить все devel-вещи через apt или yum, но в чудном мире windows ничего такого так и не появилось. Опасаясь за отсутствие админских прав и идя по принципу методики установки прочего стороннего софта, я стал рыскать в поисках portable-версии. Зря, все portable версии python ужасны. Они либо не содержат половины встроенных библиотек, либо тянут за собой все, что только можно. Поставив одну из них, я обнаружил Pycharm, Sublime, django и кучу еще всякой всячины. Господи, там прилетело даже PyQT с QTDesigner-ом!… Все хорошо, но нафига? Тем более версии стороннего софта оставляют желать лучшего.В итоге я скачал обычный интерпретатор CPython с офсайта — его можно установить без админских прав.

682f8e78adfb4cabaa7a33336b398939.JPG

Мой инструмент наконец-то поставлен и запускается! Дальше, естественно, мне нужны дополнительные либы для него. Я привык ставить их через pip. В новых версиях python (>=3.4) менеджер библиотек идет сразу в составе интерпретатора, но я до сих пор использую вторую ветку. Вопрос этот холиварный, лично меня не устраивает тотальный unicode и расширенный object.

Ну что же, официальное руководство говорит нам ставить pip через утилиту get-pip. Возможно на linux я бы и попробовал это сделать, но у меня на работе прокся, да еще и с NTLM-аутентификацией. Консольными скриптами не пробьешь просто так. Поэтому берем бинарь отсюда и ставим через него.

На заметку. В windows версии питона различные команды (pip, easy_install, startproject…) добавляются в папку \Scripts. Не забываем включить ее в PATH.

У нас в организации стоит прокси с аутентификацией NTLM. Это печально — мало софта могут с ней работать. Тем более сторонние библиотеки. Будет вылетать ошибка 407. Что уж говорить, даже git не может пойти через нее. Выход есть — ставим свою проксю cntlm на локальной машине. Для нее не требуется админских прав, запускается как бинарник из консоли. Для запуска создаем файл настроек.cntlm.ini Username UserName Domain DOMAIN Password PASSWORD PassLM XXXXXXXXXXX PassNT XXXXXXXXXXX PassNTLMv2 XXXXXXXXXXXXXXXXXXXXXXXXX Proxy organization-proxy.ru:8080 NoProxy localhost, 127.0.0.*, 192.168.* Listen 127.0.0.1:3129 Запускаем и смотрим результат) PS C:\distr\cntlm-0.92.3> .\cntlm.exe -c cntlm.ini PS C:\distr\cntlm-0.92.3> netstat -na | findstr 3129 TCP 127.0.0.1:3129 0.0.0.0:0 LISTENING Она ждет подключений! Настраиваем софт на нее. Старую проксю из системных настроек удалить не получилось — запрещено. Следующая наша цель — доступ по SSH к внешним ресурсам. А все порты закрыты. Изначально я запустил на одном из поддерживаемых мной сайтов аяксовый anyterm с авторизацией по SSL-ключу. Изредка проверять хватит, но не очень удобно — не работают привычные для терминала комбинации клавиш. Обычный терминал предпочтителен. Не беда — SSH умеет рабоать через HTTP-прокси, это настраивается в putty.5cef59d027d846f6b814ad885ee6a87c.JPG

Но для этого proxy-сервер должен поддерживать метод CONNECT.Едва ли админы оставят эту особенность. Но он должен работать для HTTPS-сайтов, а это порт 443. Иначе просто не откроется SSL-сессия (да поправят меня профессионалы в этом деле). Значит нужно найти где-то sshd на нужном порту.У меня завалялся один компьютер с выделенным белым адресом, на нем я запустил OpenSSH на 443 порту. Ну на самом деле я оставил на 22, а просто добавил правило в iptables. К нему в Putty отлично настраивается доступ через корпоративную прокси. Уже оттуда я могу выйти куда надо.

Получив доступ по SSH к удаленным ресурсам мы немного развязали себе руки. Идем дальше — запускаем putty в режиме socks-сервера.4fc97c6a51af4956a7a811e2d1647ec0.JPG

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

Честно сказать, мне это не обязательно, но мои руки было уже не остановить.

Все созданное выше нами конечно же нужно не только для просмотра контактика на работе. Я же все-таки хотел попрограммировать в django. В линухе все это было бы проще, развернулось бы в несколько команд: apt-get install git python-virtualenv vim-nox virtualenv venv . venv/bin/activate pip install django==1.7.0 ./manage.py startproject myproject Но windows не так удобен. Идем на сайт git-а, качаем и ставим. Благо для этого админских прав не требуется. Щелкнув по ярлыку я был приятно удивлен, что git запустился в окружении cygwin, а это значит передо мной нормальный shell и я могу работать с файлами в привычном режиме.

f8cd2bd32d934a2abc3d3484b9962e2b.JPG

Помните, выше мы поднимали NTLM-прокси на своей машинке? Изначально ее я делал как раз из-за git-а. Теперь у него в настройках можно указать ее.

git config --global https.proxy http://localhost:8080/ В линуксе я для написания кода использовал мой любимый VIM. В виндоус я не нашел его полезным. Наладить его работу можно, но его преимущество было в том, что всегда торчишь в одной из нескольких открытых консолей. Здесь же все визуально, по этому был поставлен Sublime Text. Раньше мне про него рассказывали хорошее. И не обманули — в условиях тотального GUI оно мне показалось удобнее.Конечно потребовался еще и легкий блокнотик вместо notepad, а то он уж совсем убогий. Наверно его не меняли со времен Windows 98. В интернете прочитал, что многие пользуются Notepad++. Попробовал, понял, что не мое — слишком наворочено всего много, да и компьютер у меня не слишком шустрый. Выбор пал на akelpad. Легко, просто, читает линуховое окончание строк, понимает разные кодировки, ищет и заменяет по регекспам, умеет несколько вкладок. Мне не хватает только VIM-режима.

Ну вот и все. Как показала практика, в окружении врага службы безопасности со скованными руками порезанными правами и в незнакомом окружении жить можно! Конечно многое недоступно в этом диковинном мире Windows, но со временем все приходит. Если это читают те, кто прыгнул в окна после многолетнего сожительства с пингвинами, пишите ваши ощущения. И да, опытные пользователи windows, извините меня за невежество по отношению к этой системы и поправьте, если я что-то написал не так.P.S. Кстати, почему в обновленном хабре есть топик «Настройка Linux», а нет «Настройки windows». Для меня это оказалось не такой уж тривиальной задачей.

© Habrahabr.ru