Как стать автором
Обновить

Комментарии 181

Да, на Линуксе не бывает вирусов. Поэтому, я предусмотрел установку антивируса.

Ну и зачем тогда он в скрипте? Зачем изначально формировать ложный список must have ПО?

Да, но обычно в сети не все машины на linux
Windows машины не заразны для linux

Там же очевидный сарказм, нет? Вирусов не бывает только на обесточенном и желательно разобранном компьютере.

А если на него чихнут?
А можно пожалуйста ссылку на git? Спасибо!
Это может звучит странно для местных жителей, но на гитхабе я его не публиковал. :)
Каюсь, виноват. Обещаю исправиться. :)
Тоже жду ссылку на GitHub. Заранее спасибо
мне тоже первая мысль пришла: почему не на git :)

Большая работа и очень полезный скрипт. Спасибо. Уважаю чрезвычайно!

Большое спасибо за труд! Действительно, полезная вещь, сам тоже часто не знаю\забываю, как сделать какую-то вещь, правда CentOS еще не использовал.


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

Тут я с вами согласен. Не очень удобно. Выбрал этот вариант как более «безопасный» по сравнению с тем, чтобы просто дать ссылку на скрипт, хранящийся где-то у меня.
Просто на гитхабе не публиковался. Теперь вижу, что пора. Чуть позже перенесу всё на гитхаб и статью подправлю.
Клево, но я так понимаю заточен скрипт исключительно под CentOS?
Пока да. Следующее, что планировал сделать — это как раз добавить поддержку Debian/Ubuntu. «Заготовку» под это сделал. Почти везде в коде все типовые действия выполняются отдельными функциями. Достаточно добавить проверку дистрибутива и вписать команды, собственно, под другие дистрибутивы. Думаю, что если будет поддержка семейств не только RHEL, но и Debian, подавляющее большинство потребностей уже будет закрыто.
Осталось найти время. :)
Очень жду Ваш проект под Debian! Спасибо!

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

Возможно лучше делать отдельный скрипт для каждой ОС? А то поддержка очень быстро станет адом.
menu="
┌─────────────────────────────────────────────┐
│ $title $ver$space│
├───┬─────────────────────────────────────────┤
│ 1 │ Информация о системе │
├───┼─────────────────────────────────────────┤
│ 2 │ Работа с ОС │
├───┼─────────────────────────────────────────┤
│ 3 │ Установить панель управления хостингом │
Может всё же какой-нибудь dialog лучше или аналог?
Стоит понимать, что это не коммерческий продукт. Это не работа для заказчика. Всё это делалось под себя из того, с чем удобней было работать в тот момент, не ковыряясь в лишних мануалах. Можно ведь по меню и курсором бегать. Только перед этим мне придется достаточно много часов потратить на изучение соответствующих материалов. А данный скрипт — результат хобби и работы «для души». Более того, если поковыряться в коде, я уверен, что многие гуру баша могут и сматериться местами. Мол «зачем ты так криво проверяешь введенный символ на принадлежность цифре, когда это можно сделать одним красивым регулярным выражением?». Конечно можно. Но я не ставил цель участвовать в конкурсе на самый красивый код. В тот момент мне было быстрее выражение записать именно так, чем читать многотонную статью о премудростях регулярных выражений на Баше.

Так или иначе это код менялся и дополнялся на протяжении последних 9-10 месяцев. Уверен, еще через полгода он будет другим. Будет больше радовать тех, кто вообще плохо разбирается в Линуксе. И будет меньше резать глаза «тру кодерам». :)
Только перед этим мне придется достаточно много часов потратить на изучение соответствующих материалов.
В том-то и дело, что не придется. dialog или его аналог все сделает за вас.

Пробегите глазами код Winetricks.

Я с Вами согласен. но "пробегите глазами" по пятнадцати тысячам строк — это это Вы знатно протролили =)

Два года назад, когда я пробовал использовать dialog, он был ужасным глюкодромом.
whiptail куда лучше.
Ждем на github, а там и портирование под ubuntu появится
При слабых знаниях администрирования, этот скрипт, да и большинство подобной автоматизации написанной другими, дают их пользователям ложную уверенность, что у них всё хорошо и всё работает.
В реальности же, это не так, и такие сервера с впсками с удовольствием используют для рассылки спама и ddos, потому что такие штуки, даже если всё правильно настраивают, то только то, для чего созданы, и не отменяют необходимости настроить всё остальное, и, что очень важно, следить за всем настроенным.
Ну и до кучи они «отменяют» необходимость хотя бы минимально разобраться как должно работать настраиваемое, и покопаться в документации.

Желающим попользоваться — одумайтесь! Либо разберитесь в том, чем будете пользоваться, либо купите готовую услугу, либо наймите кого-нибудь, чтобы сделать хорошо, как нужно вам. Нет других путей — такие скрипты всегда путь к проблемам, даже если автор хотел как лучше.
Добавлю, что кроме ложной уверенности, это еще и набор вредных и весьма опасных практик, собранный в одном флаконе. Кроме того, что оно должно запускаться под root, оно еще смело загружает по http черт знает что из интернета и потом запускает под тем же самым рутом.

Большое спасибо за скрипт!!!
Я конечно не поставлю такие вещи к себе на сервере… НО! Скрипт просто «прелесть» для изучения! Автору респект!

Что же с нами стало. Детский сад какой-то. Бложиг программистов.

Это не с нами, это дети шалят.
Вот если бы это было писано например под Ansible, то это было бы сразу кросс-дистрибутивно, и более-менее актуально.
Ну и полезно бы тоже было, чего уж там.

Особенно в ansible кросс-дистрибутивны модули yum/apt/dnf/pacman/zypper, да. Это даже не вспоминая о том, что в разных дистрибутивах пакеты могут называться существенно по разному: где-то apache2, где-то — httpd. Иногда и в рамках одного дистрибутива разных версий бывает каша, например, в centos/rhel 6-7 были docker-io, docker, docker-engine, которые, по сути, являются одним и тем же продуктом.

Никто не мешает использовать условия на версию и дистрибутив.

А с докером — это их завтык. Везде у них так.
Никто не мешает использовать условия на версию и дистрибутив.

Равно как и самописном скрипте, в общем.


А с докером — это их завтык. Везде у них так.

Это просто не хипстерский (в плохом смысле этого слова) подход. Если в репозитории rhel6/centos6 уже есть пакет docker (это какой-то док для wm/de в рамках x11), то никто не будет новый пакет называть также и выкидывать старый в рамках одной major версии дистрибутива. Банальная обратная совместимость. Точно также происходит во всех более-менее нормальных дистрибутивах: centos/fedora/rhel, debian, ubuntu — как минимум. У большинства, правда, lts немножко меньше 10 лет.


То, что докеровцы в какой-то момент переназвали кусок, который ныне именуется docker-engine — их личное дело. И мейнтейнеры дистрибутивов в этом не виноваты.

Я думаю, вы меня не так поняли.


Я имел ввиду, что существование таких пакетов, как docker-lcx, docker-io и docker-engine вместо нормальной версионности — это решение самих разработчиков Docker.

Про ansible не знаю, но у salt stack управление пакетами кросс-дистрибутивно.

А разнообразие имен пакетов аккуратно оформляется в «рецепте», знания о том, какой дистрибутив доступно.
Про ansible не знаю, но у salt stack управление пакетами кросс-дистрибутивно.
А разнообразие имен пакетов аккуратно оформляется в «рецепте», знания о том, какой дистрибутив доступно.

Я знаком с этим подходом по chef'у. У ansible просто более явная модель. Обычно, если пишутся ansible playbooks, охватывающие несколько дистрибутивов, то делается условный include на семейство или версию дистрибутивов. Ведь кроме имён пакетов конфиги могут лежать в разных директориях, использоваться разные init-системы и т. п.

Но зачем, когда есть масса утилит для управления конфигурациями? Лучше бы плейбуков для ансибла/кукбуков для шефа написали.
PPTP в 2016? «Декорации» в меню? Сотня echo "", десятки «Начинаем\Заканчиваем установку» и wget чёрт знает откуда? И это только на поверхности. А глянуть подробно в каждый процесс установки — вообще волосы дыбом встают.

Я понимаю, что ты осилил case и прочие основы bash, но выкатывать свой helloworld.sh, пусть и на несколько сотен строчек — моветон. Тем более называя его таблеткой от всех болезней.

Читателей прошу ни в коем случае не использовать это, даже ради «посмотреть как на баше писать» так писать нельзя. Модераторов или автора прошу удалить\убрать в черновики статью как зловред.

ps: У кого один-два сервера должны прочитать ман и поднять нужные службы правильно, а не как в твоём скрипте. У кого серверов много — давно научились puppet\ansible.

Подскажите, пожалуйста, в какую сторону надо копать, чтобы узнать, как надо делать?

Изучить основы администрирования, основы программирования. Читать opennet, stackoverflow, набираться опыта, оптимизировать накопленные знания. Пока не будут пройдены эти этапы, как надо не получится.
Сначала учиться, потом делать, а не искать готовый рецепт и не думая копипастить команды в терминал.
Если говорить конкретно о RHEL/CentOS, то можно почитать RHCSA/RHCE Red Hat Linux Certification Study Guide, а так же документацию на сайтах Red Hat, Fedora Project и CentOS.
Ну и за лишний запуск man ни кто по рукам не ударит.
как нужно делать что?

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

Как уже заметили выше — нужно что-то готовое, гораздо лучше просто купить готовую услугу. VPN, прокси, хранение данных — всё это есть, или за деньги сравнимые с VPS, или даже бесплатно. И если вам лень разбираться, как это реально работает — такого рода скрипты дадут только ложную уверенность.

Ох… Я имел в виду немного другое. Я сам против использования чего-то не разобравшись в вопросе.
Просто iAndrey говорил


PPTP в 2016? «Декорации» в меню? Сотня echo ""

и мне стало интересно — чтобы написать для себя некий скрипт конфигурации с менюшкой, что использовать вместо раскритикованных вещей? Просто если бы я писал что-то такое, то так же бы использовал case и echo в большом количестве.

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

ansible, salt, chef, puppet (что-то забыл?) — кому что интереснее/удобнее/привычнее. Насколько я понимаю, у ansible самый низкий порог вхождения, и в случае «нет у меня кластера, одна машина» с ним проще всего.

Мне ближе salt, поэтому я бы начинал с https://github.com/saltstack-formulas/

Что там хотел автор, VPN? Например https://github.com/saltstack-formulas/openvpn-formula
Прокси? https://github.com/saltstack-formulas/squid-formula

Почему-то уверен, что есть где-то аналогичный сборник уже готовых «рецептов», для остальных систем автоматической конфигурации.

— Не понимаю, откуда у людей такая тяга к интерактивным штукам. Понятно откуда тяга к общению с людьми: от природы, инстинкты, гены и всё такое. Во всех остальных случаях, всегда нужно стремиться к одной кнопке «сделать хорошо».

Опять-же, в случае salt'а, скажем, я пишу

some.new.host:
— vpn
— squid
— some-another-stuff

в одном месте, а потом в консоли говорю

salt some.new.host state.highstate


Через какое-то время, получаю на этот some.new.host всё установленное и настроенное так, как мне нужно.
«Как именно нужно» — опять-же, хранится в рецептах «vpn», «squid», «some-another-stuff».

Правда, удобно?

Большое спасибо за ответ и ссылки.

Если уж так хочется диалогов, то dialog или ncurses (если на C/C++)
ansible, salt, chef, puppet (что-то забыл?)

bcfg, cfengine и тонна более древних средств. Моё личное предпочтение — ansible, т. к. требует только ssh для начала работы и python 2.4+ для продолжения, но не требует агентов на хостах.

мы остановились на salt, потому что в момент когда выбирали, только там адекватно (даже более — очень комфортно) поддерживался Windows, которого у нас достаточно много.

С тех пор, с одной стороны, что-то на тему Windows сделали в ansible. С другой, у salt появился salt-ssh, который «как в ansible». За другими совсем не слежу, но слышал Chef вполне себе успешно развивается.

В общем, смысл писать «скрипты» (да еще и на bash) для конфигурирования линукса мне не понятен. Если нужно один раз — просто делаешь руками, если нужно много раз — пишешь рецепт для своей любимой системы оркестрации или как там их правильно называют.

Они обычно называются SCM (software configuration management), но некоторые используются и для оркестрации, хотя это далеко не их основное предназначение.

Я бы добавил:
zpanel_install()
{
wget http://evtikhov.ru/zpanel.sh
sh zpanel.sh
rm -f zpanel.sh
}


Домен автора? При желании отличный ботнет выйдет :-)
Ну и согласен с тем, что единственная польза от скрипта — это понять, как не надо писать на bash.

Думаю, что автору (если цель, конечно, не распространение ботнета) имеет смысл немножко углубится в знаниях по администрированию *nix-систем и в последующем написать пост о работе над ошибками после этого. Будет ценнее и полезнее.

Достаточно любого домена и использования http без дальнейших проверок с использованием gpg или, как минимум, криптографических хэшсумм ,)

В комментарии сквозит гордость от собственных знаний и презрение к тем, кто знает меньше.
ОС — это среда для запуска программ, и для меня (прикладного программиста) разбираться в системе — это лишняя работа.
Если бы при аренде VDS можно было галочками отметить пакеты, которые надо установить,
гордые собой линуксойды остались бы без работы.
Да уж, поставить пакеты в ОС и минимально уметь настроить окружение — это ведь такая сложная задача по сравнению с программированием.
И у вас, как у программиста, к скрипту претензий нет. Верно?
У меня претензия к Linux. Доля виндовс на ПК 90%, Linux 1.5%
Если бы в всех Linux была единая настройка конфигурации, не требующая знания системы, проценты были бы другие (imho).
То, что человек сделал шаг в этом направлении, я приветствую.
А то, что он плохо знает bash, — не страшно и не главное.
Я не администратор Linux и не хочу им быть. Не хочу забивать голову сотнями команд и параметров.
Я хочу при установке системы нажать 28 раз кнопку ОК или клавшу «Y» и получить готовую систему.

П.С. Я недавно сменил хостинг из-за непомерной жадности хостера. То, что настройки apache делаются по другому
и то, что MySql не понял старый my.cnf, меня удивило и опечалило. И отняло время.
У меня к вам всего 3 вопроса:
1) Мы говорим о десктопах или о серверах? Покажите эти 90% серверов под Windows.
2) Вас насильно заставляют администрировать linux системы, или жалко денег на профильного специалиста, а сервер под Windows любой человек с улицы сможет правильно настроить?
3) Т.е. вы не зная как устроена и работает система разрабатываете под неё программное обеспечение?

PS Ну вот ни как не пойму, зачем 28 раз нажимать «ОК», если можно один раз указать путь к ks файлу и идти пить кофе, а по возвращении получить готовую систему в которой не просто апач будет установлен (коли вы про веб-дев заговорили), но и ваше приложение уже развернётся и запустится.
НЛО прилетело и опубликовало эту надпись здесь
Вы абсолютно правы: мне жалко денег на специалиста, и я действительно не знаю и знать не хочу, как устроены Windows, Mac Os, Linux.
Вы удивитесь, но мы разрабатываем кроссплатформенное прикладное ПО, и оно всюду работает.
Программное обеспечение может всюду работать одинаково хорошо и одинаково плохо. Увы, но без «знать как устроены ОС» «одинаково хорошо» не получится никогда. Тем более, если ни разработчики сами не знают, ни специалистов не привлекают со стороны.
Вы меня заинтриговали. Что же Вы такое знаете, без чего все будет одинаково плохо?
А то я и заказчики думали, что у нас все одинаково хорошо, а оказывается во как.
Поделитесь примером, что нужно знать прикладному программисту на Python про отличия в системах.
Я кроме chmod ничего и не знаю.
[безсарказма]визитки-одностраничники клепать — ничего и не надо знать, кроме chmod[/безсарказма]
Более-менее серьёзные проекты требуют определённых знаний, но нужно знать специфику проекта, чтобы сказать каких. А можно везде городить свои велосипеды, но это снова разговор про «одинаково плохо»
Вы не ответили, что же надо знать. Пример приведите.
У нас средний проект: 25 тыс строк на Питоне, JS/CSS еще 10т., около 200 html-форм, около 300 пользователей (MFF/GH).
Один и тот же код работает на Windows и разных Linux с разными SQL серверами.
Распределенная система из 30 серверов. В т.ч. есть мнисерверы: стартуют, как службы виндовс на ПК пользователя.
И никто из команды не знает ни Windows ни Linux и знать не хочет.
Когда клиент просит настроить ОС, коллеги валят на меня, а я с матюгами лезу в шпаргалки и мануалы.
При этом главная мысль: «КАК ЭТО ВСЕ НЕУДОБНО».
Исходно шла речь о администрировании ОС и о том, нужен ли инструмент, позволяющий получить готовую систему без глубоких знаний в части администрирования.
Смею Вас уверить, что то, что я узнаю/вспоминаю в процесс настройки ОС, для прикладного программирования БЕСПОЛЕЗНО. Отсюда соответствующее отношение.

НЛО прилетело и опубликовало эту надпись здесь
Я не лукавлю. Я действительно не люблю администрировать ОС.
Не потому, что я этого не могу, просто мне это неинтересно. Когда я проходил обучение в Nato по курсу «Практическое администрирование TCP/IP сетей» (это не шутка), я во многом разобрался. Получил сертификат и благополучно все (почти все) забыл, потому что для прикладного программирования это не нужно.

Как мы разворачиваем:
Для минисервера на ПК пользователя есть инсталлятор (делается с помощью cx_Freeze + InnoSetup).
Для обычного сервера надо скопировать папку и прописать запуск приложения.
Остальное через ВЕБ. Исходные тексты одни и те же. Кроме chmode ничего платформозависимого.

Мне кажется, все так делают. Недавно жене в институте установил Moodle (онлайн обучение) — та же схема. Копируешь папку, а дальше веб-настройка.
НЛО прилетело и опубликовало эту надпись здесь
Если не понятно, куда копировать, то в виндовс есть $Recycle.Bin, в Linux копировать в папку nul.
НЛО прилетело и опубликовало эту надпись здесь
У вас слишком зауженное понимание термина «прикладное программирование».
Ну это на мой взгляд. На тот же (мой) взгляд, вы слишком настойчиво пытаетесь навязать весьма далекую от действительности точку зрения о бесполезности понимания процессов ОС для прикладного программирования.
Вообще странно видеть человека, который занимается программированием, но упорно не желает изучать среды, под которые программирует.

О времена, о нравы
В чем зауженность термина «прикладное программирование»?
Наш проект сочетает multiThreadin и multiprocessing, сервера общаются друг с другом и со смежными системами по 7 протоколам, могут одновременно работать с разными sql-серверами, полнотекстовый поиск через сфинкс.
При этом решается прикладная задача. Пользователям не важно, какая ОС. Нам тоже. Питон всюду одинаково работает.
Зачем тратить время на освоение того, что не нужно? Я вот даже не знаю, что такое реестр в винде. То ли это файл, то ли таблица, формируемая при загрузке. И совершенно не комплексую.
На мой взгляд, копаться в системе нужно системным программистам, тем кто пишет драйвера и системные утилиты.
Сейчас заказчик попросил мобильное приложение — ваяю в Android Studio и даже в мыслях нет изучать еще одну ОС.

Кстати никто не привел ни одного примера, зачем прикладному программисту знать тонкости ОС.
Тонко подталкиваете к холивару? Нет уж.
Вот библиотеки питона, по вашему, кто писал? Системный программист? «Программист драйверов»? Как вы отличаете системного программиста от прикладного?
Ваша задача слишком узка для того, чтобы можно начать дискутировать на тему «Зачем программисту знать про специфику ОС».
Вот я знаю как писать драйверы и приложения под win, *nix системы, могу выбрать язык (c/c++, python, bash, vbs, asm), могу выбрать api (winapi, gtk), framework (dotnet, qt), написать оконное приложение, консольное. Сегодня захочу написать свою оболочку (на замену Explorer, если угодно) для win, а завтра веб-приложение. Кто я? Системный программист? Прикладной? Кросс-платформенный я или инструмент (ЯП)? Мыслите шире, изучайте, познавайте. В информационных технологиях никакие знания не бывают лишними.
Если вам это надо, изучайте. Я не против. Для моей работы это лишнее, мне и без ОС есть что изучать.
Задачи разные: для платформозависимых надо знать ОС, для моих — не надо. О чем спорить?
Прикладной программист это, имхо, тот, кто в первую очередь разбирается в прикладной задаче. Ее и надо изучать.
Для меня ОС — это среда для запуска приложений, и если автор скрипта пытается упростить ее настройку, я это приветствую. Тем, кто посвятил себя администрированию, наверно обидно, что имея удобный инструмент любой чел сможет сконфигурить Линукс не хуже чем гуру со стажем. Иначе я не могу объяснить столько негатива в адрес автора скрипта.
Вот товарищ пишет: «администрируя юникс крайне вредно использовать виндовые подходы. Что за желание сделать одно мегаприложение? Учитесь думать по другому».
Думать по другому для него — это помнить десятки команд и настроек, вместо того, чтобы запустить приложение, которое спросит, что я хочу и само все сделает. Причем оптимально и без ошибок.
Простое лучше сложного, давайте упростим настройку. Но нет: деды руками вводили команды, отцы вводили и мы будем. Как в старой шутке: в Линукс настроить можно все, и вы, блин, будете настраивать все.
А вам не надо знать как работает SQL сервер, который обрабатывает запросы вашего ПО?

Не умеешь linux — ставь Ubuntu, там всё просто. Зачем выбирать систему, где предполагается наличие скиллов у администратора, если администратора нет?

Оптимально и без ошибок? Повторю вопрос (если и сейчас уйдёте от ответа, значит вас всё устраивает): к скрипту у вас претензий нет — он хорошо написан, делает правильные вещи правильным образом?
1. с точки зрения программиста сервер работает одинаково на всех платформах. Настройки разные, — это как раз то, на что тратится время. И кроссплатформенный инсталлятор облегчит работу.
2. Я выбираю систему из того, что стоит у заказчика или из списка систем провайдера
3. Я не писал, что скрипт хорош, я говорил о шаге в правильном направлении
спасибо за ссылку. Мне понравилось.
Я так понял, это новый проект. В общем примерно то, что я хотел.
Я не против терминала, — был случай, когда доступ только по SSH
НЛО прилетело и опубликовало эту надпись здесь
Мне кажется, в ваших письмах появились эмоции. Не надо раздражаться. Все хорошо, вчера наши победили:)
Про chown — грешен, утаил: я его тоже использую.

Вам показалось, что я писал конкретно про Ваш негатив.

Да, мы делаем веб-приложения. За ними будущее. Толстые клиенты вымрут, а платформозависимое ПО останется в инструментальной сфере.

По поводу скрипта: шарить по каталогам и вводить команды руками я считаю тупой работой. Помнить десятки команд и сотни параметров я считаю бесполезными знаниями. Потому что все это может сделать компьютер. Он для того и придуман.
Алексей, вы лукавите. Поделие Результата, может и использует несколько протоколов и sql серверов. Только не потому что «сложное и крутое», а потому что вы не осилили кластеризацию и репликацию sql. В прошлых темах вам уже говорили, что ваш подход крайне не эффективен — где можно создать 100К записей, вы создаёте 1М.

Вы кривую архитектуру пытаетесь выставить как достоинство. Системные требования вашего ПО можно? А результаты тестирования производительности?
Я не удачно выразился. Имеется в виду, что часть данных может храниться в MySQL, часть в Postgree
Подход эффективен, потому что все работает прекрасно. Кстати вместо 100к у нас будет примерно 5М. И что? Вас это пугает? Система, которая стояла до нас была сделана на нормализованной базе и работала медленнее.
Вы что-нибудь слышали о mangoDB? Если для Вас она тоже кривая, то говорить не о чем. У нас тот же принцип реализован иначе и на базовых запросах работает быстрее (сбор отчетов, правда, медленнее).

Не думаю, что здесь уместно рассказывать о системных требованиях.

Результаты тестирования — вещь многоплановая. Если коротко, годовые отчеты собираются за 2-30 мин. Поиск работает быстро: в ТЗ был прописан Сфинкс (отличная вещь, кстати), но потом попросили убрать кнопку. Потому что родной поиск по скорости работает практически также (меньше секунды, в таблице 20 млн строк).
Вы что-нибудь слышали о mangoDB? Если для Вас она тоже кривая, то говорить не о чем.

Вы про эту, надеюсь? Прекрасная быстрая CLOUD SCALE база без IO bottleneck'а.

ибо
танки /dev/null'ы наши быстры


Если про другую и это не orm к монге для пыха, то стоит написать об этом в MongoDB, Inc. То trademark infingement дело такое..

Приношу извинения за опечатку (очень хотелось съесть манго). Конечно MongoDB.
Т.е. вы не используете по полной ни тот, ни другой. Или они не взаимозаменяемы, тогда какой от этого профит?

Какой «тот же»? Вы уже внутри реляционной СУБД сидите, а используете её как документоориентированную. И рассказываете тут о производительности хорошей.

Конечно, если вы расскажете о системных требованиях, вам уже не получится петь о высокой скорости работы.
Это правительство региона. В локальной сети 30 ОГВ, не в сети 30 ОМСУ. У некоторых подразделений свои сервера со своими админами, которые чужих не пускают. Серверов приложений (http сервер) в ЛС всего 3 + 30 для ОМСУ. Сервер приложений может отправлять информацию на другой сервер приложений в виде сообщения, а может напрямую записать в БД какого-то министерства (Postgree or MySQL).

Да именно так. Сделали ДОБД в РБД и там сидим, и производительность хорошая. Отчеты тормозят. АП РФ требует отчеты 200 столбцов на 2000 строк — они ночью собираются за 30 мин.
Возможно откажемся от MySQL и будем в PostGree хранить данные в json. Переходить на MongoDB не планируем, хотя прикладная задача документоориентированная
Это правительство региона.
Как раз не показатель. При распиле бюджета зачастую решает не качество, а откатчество. Налогоплательщики любой цирк оплатят, даже «ДОБД в РБД».
У некоторых подразделений свои сервера со своими админами, которые чужих не пускают.
Иными словами: «не знаем ни как настроить, ни ТЗ для местечковых админов написать не можем.
производительность хорошая. Отчеты тормозят.
/0

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

Кстати ДОБД в РБД не мы придумали. IBM в свое время интегрировало Lotus Notes и DB2. Записи из документориентированной системы (Lotus Notes) хранились в РБД. Почитайте статьи на эту тему, а то у вас взгляд однобокий.
Всего-лишь сужу по уровню знаний, который вы демонстрируете.
Когда мы применили документориентированный принцип хранения стало лучше: быстрее и гибче.
Я разве сказал, что у вас самый плохой продукт.? И то, что до вас было ещё хуже и тот продукт был принят в работу лишь подтверждает теорию откатчества.
Кстати ДОБД в РБД не мы придумали. IBM в свое время интегрировало Lotus Notes и DB2.
Если в вашем мире с 1989 года ничего нового не придумали, это не значит, что весь IT мир застыл в прошлом веке.
Насчет откатов вы больший специалист, чем я.
Я больше 10 лет работаю с госструктурами и не разу с ними не сталкивался. За последние 2 года больше 30 договоров и все через эл. торги. С реальными конкурсами (бывало и с демпингом, бывало и проигрывали). Кому и за что откатывать? Я не ангел, но участвовать в мутных схемах — себе дороже.

IBM интегрировало Lotus Notes и DB2 в 2008.
В Postgres поддержка Json (т.е. возможность реализовать ДОБД в РБД) появилась в версии 9.2. (кажется 2014).
Что касается уровня ваших знаний, то я про них говорить не хочу.
Это не я здесь кичусь знанием всего одной команды, которую написать правильно не умею.
Насчет откатов вы больший специалист, чем я.
Я лишь сказал, что фраза «это проект для муниципалитета» ни разу не говорит о качестве продукта. И это скорее за камень в огород предыдущих разработчиков можно принять (у которых было ещё хуже). Но раз шапку вам тушить пришлось… ок.
В Postgres поддержка Json (т.е. возможность реализовать ДОБД в РБД) появилась в версии 9.2. (кажется 2014).
И что? Вы храните в реляционных базах информацию. Вы и преимущества NoSQL не используете, и преимущетв SQL себя лишили. От того и тормозят.
Не надо приписывать мне то, чего я не говорил и оправдываться. И не придирайтесь к опечаткам — это мелочно.

Почему бы вам не переключиться с критики нашей системы на критику MongoDB и ДОБД вообще. Мы всего лишь по требованию заказчика повторили монгоДБ с хранением данных в РБД. Поиск у нас работает быстрее, чем в монго, запись медленнее. Аналитические отчеты в любой ДОБД будут тормозить. Монго компактней, но это не принципиально. Вложения занимают террабайты, а на размер базы никто не смотрит.
Да, изобрели велосипед. Но:
1. нам за это заплатили
2. велосипед получился удобным: не нужен север mongoDB. Мини-сервер стартует как служба виндовс и может хранить данные в SQLite. Рразвернуть такой сервер может девочка, которая (ужас) даже не знает, какая у нее ОС.

Система не идеальна, список TODO не мал, но вы же ее не видели. Почему ДОБД в РБД это цирк, а ДОБД в mongDB это не цирк?
Почему бы вам не переключиться… на критику MongoDB
Потому что монго не плоха. Плохо делать монгу в мускуле.

И не придирайтесь к опечаткам
Если бы это были опечатки. Неоднократное коверкание того-же PostgreSQL. Говорит о том, что это неграмотность, а не неосторожность.

Да, изобрели велосипед. Но нам за это заплатили
Правильно, зачем брать готовые решения, если можно распилить гос. бюджет на разработку своего велосипеда?

не нужен север mongoDB.
Мини-сервер стартует как служба виндовс
и может хранить данные в SQLite.
Рразвернуть такой сервер может девочка, которая не знает, какая у нее ОС.
Но нужен SQL сервер.
Чуть выше вы говорили о кроссплатформенности. Неосилили системд, от того и бомбит?
То сотни пользователей, то база sqllite. Вы уж определитесь с масштабами.
Зачем девочке разворачивать службу? Есть технари на это.

Система не идеальна, список TODO не мал, но вы же ее не видели.
Сову видел, тыкал палочкой в то, что Результат предлагает. Без слёз взглянуть невозможно. Да и пилится оно уже не один год далеко. Ощущение, что цель не результат, а цель присосаться к бюдежту на самый долгий возможный срок.

Почему ДОБД в РБД это цирк, а ДОБД в mongDB это не цирк?
Потму что монго и есть ДОСУБД. А вы имитируете ДОБД в РСБУД не используя ДО функционал сервера. Но если вы этого не понимаете, о чём с вами вообще говорить можно?
Забавно обсуждать ДОБД с человеком, который в этом ничего не понимает. «Не используете функционал» говорит о том, что вы функционала ДО сервера не знаете. Почитайте mongoDB-API, — там весь функционал описан (кстати, основы позаимствованы у Lotus Notes, который вы тоже не знаете). Мы написали аналогичный API, получили ДО-сервер с тем же функционалом. Что не понятно?

Про наши серверы повторюсь: система распределенная. В каких-то подразделениях работают десятки человек — там сервер под Linux или WinServer. Где-то 1 чел. Там мини-сервер с SQLite. Исходники одни и те же. Клиентское ПО: MFF/GH. Если мини-сервер включен, коллеги имеют доступ к системе по чтению. Красивое решение с минимальным привлечением технарей. Или вам за технарей обидно: то, что должен делать админ, знающий 100 команд, у нас делает девочка, умеющая лайкать няшки?

Причем тут Сова? У вас в голове все смешалось. Сова — это примитивная локальная CRM, написана давно для конкретного человека и выложена в сеть бесплатно.
Это троллинг, или всё действительно так плохо со знаниями? …или с совестью. Зачем вы врёте? У вас данные лежат в РСУБД. То, что вы своими костылями поверх РСУБД имитируете ДОСУБД не ускоряет работу РСУБД, а только добовляет накладных расходов на ваши костыли.

У вес не «система распределённая». У вас бардак. Это видно и по комментариям, и по тому, что вы гордитесь тем, что из-за вашей криворукости девочка вынуждена отвлекаться от своей работы на установку вашей системы.

А что одно, что другое — всё дичайшее легаси с болезнями начала нулевых.
Ваше незнание ДОБД принимает агрессивный характер. Lotus Notes и mongoDB имеют собственное хранилище, мы используем SQL-сервер. Мы не врем, чесслово. То, что вы не знали, что на SQL-сервере можно хранить любые данные и даже реализовать ДОБД, — не страшно, не надо из-за этого нервничать. Может вас успокоит, что это не мы придумали (json-поля в Postgres и пр).

Вам девочка не дает покоя, потому что для разворачивания системы ваши глубокие знания ОС бесполезны? А вас не напрягает то, что на телефонах девочки сами устанавливают приложения? Я светлое будущее вижу так: отметил галочками перед установкой ОС нужное, нажал кнопку и ОС готова. И никаких сисадминов. Простое лучше сложного.
НЛО прилетело и опубликовало эту надпись здесь
анти-паттерны, увы, есть. И если бы мы начинали проект сейчас, многое сделали бы по другому. Но ДОБД оставили бы в SQL с тем же API.

В чем на ваш взгляд бардак?
Он, конечно есть, точнее они. Локальные бардачки, помеченные TODO. Мне интересно ваше мнение.
НЛО прилетело и опубликовало эту надпись здесь
Спасибо.
Комментарии действительно…

По поводу распределенности:
есть несколько автономных систем, которые обмениваются информацией. Каждая система обрабатывает свою информацию и информацию от других систем. И возвращает результаты. Это можно назвать распределенной системой?

Мы положили в основу EAV, отсюда упор на ДОБД. Json-поля для этого хорошо подходят. В ссылке, которую вы мне дали, автор пишет о них, как об альтернативе mongoDB (про недостатки я тоже прочитал). Все зависит от задачи. Почему использовать в качестве хранилища mongDB — это хорошо, а postgres — это плохо?
НЛО прилетело и опубликовало эту надпись здесь
3 протокола. 1 наш и 2 для смежных систем. Синхронизации данных нет (не считая обновление системы и справочников по тому же протоколу). Есть отправка задания и получение ответа.
Вопрос терминологии. Я это называю распределенной системой.
Взаимодействие с внешними системами: 2http, smtp, imap4, smpp(не используется).

Зачем для EAV 2 таблицы? У нас 1.
Монго, основные понятия:
база: список документов с уникальными id
коллекция: список документов внутри БД (список id)
документ: словарь (объект) «ключ-значение»
связанность/подчиненность документов: поля со списком id
На мой скромный взгляд EAV и никакой магии
НЛО прилетело и опубликовало эту надпись здесь
база: список документов с уникальными id

Ну-ну, вы хоть раз монгой-то пользовались? _id уникален в рамках коллекции.

А то, что девочка домой продукты закупает и (возможно, если мужа нет) стройматериалы, означает, что она и закупками заниматься будет. А две успешных продажи на авито позволяют повесить и сбыт на неё. А если порядок в кладовке умеет навести — и кладовщика отдельного не надо. За оклад оператора девочка будет делать всё, что ей скажут.

По второму подписываюсь под словами KlimovDm
с чем вы спорите? С тем, что простая установка системы не требующая сисадмина лучше, чем сложная?
Любая установка плохого по хуже сложной установки хорошего — 1. И 2: если девушке не платят за установку ПО, нормальный человек не будет заставлять её заниматься этим.
Да эт наверное разработчики битрикса.
Все в порядке.
вот так вот автор столько лет писал скрипт, юзал его и горя не знал
поделился с миром и оказывается в реальном мире код надо выкладывать на гитхаб, код написан не правильно, а правильно надо через dialog, в 2016 году уже есть всякие механизмы автоматизации ansible, да и вообще скрипт от рута работает

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

однако только в собственном соку тоже не стоит варится :)

Эпично. Жду твикера и компрессора реестра от автора.
НЛО прилетело и опубликовало эту надпись здесь
А как же dconf?
dconf editor
Очень крутой и полезный скрипт, маст хэв так сказать. В свое время писал подобные для винды :). Автору желаю дальнейшего развития «проекта» и конечно жду поддержки Ubuntu /debian.
как новичок, с нетерпением буду ждать статью про этот скрипт, но для Debian подобных пингвинов =)
как пользователь окон и любитель делать все мышкой и хоткеями одной клавишей очень рад начать знакомство с линуксом в таком лояльном к пользователю формате!
Задаём переменную с нужным количеством пробелов, чтобы меню не разъезжалось от смены версии

Есть же printf "%-7s${$title}"


Определяем ОС

if [ "$(cat /etc/redhat-release | awk {'print $2'})" == "release" ]
и т.д. и.т.п.

А если файл не найден?


уберём двойные пробелы:

cpu_model=echo $cpu_model | sed -e "s/ / /g" | sed -e "s/ / /g" | sed -e "s/ / /g" | sed -e "s/ / /g" | sed -e "s/ / /g" | sed -e "s/ / /g" | sed -e "s/ / /g" | sed -e "s/ / /g" | sed -e "s/ / /g" | sed -e "s/ / /g"

Мои глаза! sed -e "s/ */ /g"


iptables -A OUTPUT -p icmp -j ACCEPT

-A OUTPUT -p icmp --icmp-type 0 -m state --state ESTABLISHED,RELATED -j ACCEPT -A OUTPUT -p icmp --icmp-type 8 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT


echo "0 4 $temp * * $cron_task" >> /var/spool/cron/$(whoami)

Нет чмода (0600) и човна ($user:crontab) соответствующего файла. Выполнять все задания от рута — рискованно.


В целом: шибко большая простыня исходника скрипта, так и напрашивается разбитие на подскрипты, запуск с параметрами (getopts) и вынос настроек [с урлами] в отдельный файл, подгружаемый через source <(grep = "${D}/config.ini" | sed 's/ *= */=/g')
Нет проверки на уставленный запускаемый бинарник, только проверка на установленный пакет.


Не нашел самого важного: бекапы.

НЛО прилетело и опубликовало эту надпись здесь
Меня печалит и удивляет что подобные утилиты не встроены в популярные дистрибутивы. Пока для себя я этот вопрос решил написанием большой шапаргалки на Google Documents с кучей команд, кусков конфигов и т.п.
Было бы хорошо, если бы этот скрипт помимо выполнений действий, опционально показывал какие команды или изменения он сейчас будет выполнять и давал текстовые пояснения своим действиям. А то просто верить и наедятся что он все сделает как надо — это не очень хорошая практика.
Так ведь скрипт на баше! Открыл в любом текстовом редакторе и посмотрел
Пишете в начале скрипта:

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

Кстати, вопрос к администраторам Linux (сам я нуб).


Код на bash лично мне делает больно глазам — переменные, условия, циклы (ну это понятно, он выполняется командным интерпретатором).
Почему бы не использовать скрипты на том же Python, который куда понятнее и удобнее для чтения и позволяет с легкостью вызывать команды. Во многих десктоп-дистрибутивах он уже есть "из коробки", а если есть — легко поставить?

Кто-то и делает на Python/Ruby/Perl, кто-то рекомендует в различных целях только на них и писать системные скрипты.

Преимущество bash/dash/ash в повсеместности, на любом тапке под UNIX будет подобный шелл. Стандарт POSIX требует наличия этого, насколько помню. Помимо этого, во множестве дистрибутивов он является login shell, а посему более-менее известен пользователям. Ну и на мой взгляд, простые скрипты делать на bash просто: используются ровно те же команды, что вы можете писать руками (то есть, взял из истории пачку строк, сохранил в файл — есть скрипт); различные expansions, куча руководств по созданию скриптов именно в обычном шелле. С другой стороны, когда такой скрипт разрастается — его уже сложнее править и читать, да и разных (для многих неожиданных) особенностей хватает.

Я бы сказал, что если ваш скрипт будет запускаться только в современных системах на десктопе и вы знаете Python/Perl/Ruby — стоит на них и писать.
Есть вот такая полезная книжица. Минус Python в контексте системного администрирования в том, что кода в небольших скриптах получается больше. Там где в bash обойдешься однострочником, в Python менее чем в 10 строк вряд ли получится.

Интересная штука, сам наверно пользоваться не буду, но какому нибудь волею случая администратору Линукса вполне пригодится.
Нет, не пригодится. Тот, кто пользуется таким вот скриптом не должен называть себя Линукс админом.
В статье с таким названием ожидал увидеть «rm -rf /*». Лень разбираться с линуксом? Сделайте rm, снесите линукс и поставьте винду.
НЛО прилетело и опубликовало эту надпись здесь

Очень полезная вещь, благодарю от души. Такие скрипты очень облегчают и больше времени остаётся на другие дела.
Единственная просьба есть у меня добавить в панели управления серверами webmin ;) хотя я ещё не юзал скрипт (сегодня проверю обязательно ) но на сколько понял по описанию webmin нет(((
До сих пор использую centminmod для автоматизирования многих задач в Centos.

У меня есть брат, который хотел бы разобраться в linux. Только ему этот скрипт и пригодился.
НЛО прилетело и опубликовало эту надпись здесь
Чтобы разобраться в линукс — есть man и куча учебников. А скрипт, как раз для лентяев, которые не особо хотят разбираться, но хотят что-то поднять. Ну хоть как-то. Ни одному Linux-админу этот скрипт не пригодится по понятным причинам. Был удивлен, что эти самые «труъ админы» восприняли его на свой счёт.
НЛО прилетело и опубликовало эту надпись здесь
Про надуманный функционал — это всего-лишь ваша точка зрения. Не принимайте на свой личный счёт, но есть и другие. Если вы посмотрите как часто на лорге спрашивают как поднять vpn, и как часто там выкатывают портянку готового скрипта, который это делает за них, и как часто этой портянкой пользуются, то вы, наверное, удивитесь. Представьте себе, такие потребности у людей есть. И да, я тоже готов присоединиться к армии крикунов, что, мол, ребята, читайте мануалы, разбирайтесь в том, что вы ставите, но есть намного большая армия людей, которые говорят «идите нафиг, я хочу нажать кнопку и чтоб всё было». И такие люди собирают потом на лорге такие готовые портянки. Кто для VPN, кто ещё для чего. Я им дал один общий «сборник». Плохо это или хорошо — вопрос филосовский. Да, можно вспомнить притчу про то, что когда человек голоден — можно дать ему рыбу, а можно дать удочку и научить ловить рыбу. Но иногда, с#$%, просто хочется жрать.
Если вы посмотрите как часто на лорге спрашивают как поднять vpn
Вот скажите, на моём арче ваш скрипт поднимет корректно vpn?
Нет, конечно. Вы, видимо, не читали публикацию. Там написано, что работает скрипт только на RHEL дистрибутивах. И в планах сделать так, чтобы он ровно так же работал еще и на Debian дистрибутивах. Ни один новичок (а целевая аудитория скрипта — ни разу не админы), никогда в жизни, даже случайно, не поставит Arch. В общем-то, ни у одного хостера VPS, я ни разу не встречал в наличии образа Arch. Нет его, ни на DigitalOcean, ни на VULTR.

Но вы всё это знаете лучше меня. Так и к чему был этот вопрос? Потролить человека, который разбирается в Линукс меньше вас? Или была ещё какая-то цель?
Ну да, вопрос был риторический. Возможно, он и на другом RHEL не особо поднимет, например, в следующей версии эдак через годик. Или в каких-то других условиях даже сейчас. Тут не только про vpn а вообще про всё другое. Ткнёт «новичок» в ваш пункт меню, и что? Он будет на форумах спрашивать на этот раз как поднять ваш скрипт? Подобные решения часто не делают жизнь проще, особенно новичкам, бывает они наоборот только запутывают и усложняют систему [и здесь мы сталкиваемся с так называемыми leaky abstraction («дырявые абстракции»)] Вам надо прилагать немало усилий, чтобы ваш скрипт надёжно скрывал от «новичка» какие-то низы во всех случаях. И тут встаёт вопрос — а стоит ли оно того? И для вас и для пресловутого новичка.
Ну а цель вопроса тут… не знаю, обыграть этот парадокс через иронию.
Философский? Хороший сборник — хорошо. Плохой сборник плохо. Где философия? Всё очевидно.
На форумах часто спрашивают про pptp? Повторюсь, в 2016?
Вы дали общий сборник чего, «worst practices»? Тогда годно, но статью переписать нужно.
Не поверите, но очень часто спрашивают PPTP. Потому что именно PPTP поднимается в винде в пару кликов, без танцев с бубном и стороннего софта. Ровно как и на домашних роутерах PPTP — самый поддерживаемый протокол. Следом за ним L2TP.

Если для вас дать возможность любому нубу, без объяснений, мануалов и тестов, развернуть свой VPN-сервер где-нибудь в Болгарии или Нидерландах за минуту, просто нажав несколько раз «далее» — это зло, то ради бога. Считайте так. Это всего-лишь ваша точка зрения. На свете есть и другие.

Только без этого он всё равно так сделает, но значительно дольше. Он залезет на ЛОР, часа два там поищет какие-то практики, попытается развернуть OpenVPN под какой-нибудь Fedora, не сможет подключиться к нему сначала потому, что не поймёт, что для openVPN нужно ставить сторонний софт под виндой. Потом, возможно, переделав всё на PPTP он ещё раз не сможет подключиться к VPN просто потому, что в этих советах не было ни слова про настройку iptables. Далее он психанет, пойдёт ещё куда-нибудь и, в итоге, найдет как отключается «страшный фаервол», отключит его и будет пользоваться тем, что получилось. Просто потому что работает и по-другому он «не осилил».

Я ему просто сэкономлю время. И хотя бы закрою все лишние порты в iptables.
Рулить файерволом через iptables. В RHEL7. рукалицо.жпг

Если для вас дать возможность любому нубу развернуть свой VPN-сервер просто нажав несколько раз «далее» — это зло, то ради бога.

Он попытается развернуть OpenVPN, не сможет подключиться к нему сначала потому, что не поймёт, что для openVPN нужно ставить сторонний софт под виндой.
Вам что-то мешает скриптом нагенерить сертификатов, создать конфиг и запустить сервер? А что вам тогда мешает тем же скриптом сгенерировать ключи и клиентский конфиг? «Установить» ваш скрипт ему не сложно, а протыкать «далее-далее-готово» в openvpn-setup.exe ему тяжкий труд? Вы нафигачили бесмысленных «начинаю установку», «заканчиваю установку», а написать пользователю «Для форточек зайди по адресу и скачай установщик клиента, ибо пптп не безопасно» религия не позволяет? А ещё можно bat или ps накидать, который сам и установщик скачает, и развернёт, и конфиг закинет, и службу запустит. Но зачем делать безопасный VPN, когда есть PPTP, верно?

Вы не экономите время, вы наносите вред создая иллюзию упрощения, де факто настраивая так, как настраивать нельзя.
Я хочу задать несколько простых вопросов:
1. Вы считаете, что если вы не используете PPTP, то его в этом мире не использует никто? У вас есть статистика сколько сессий в мире поднимается на PPTP, сколько на L2TP, а сколько на OpenVPN?
2. А то, что большая часть крупных провайдеров (в т.ч. «Билайн») всех домашних пользователей проводного интернета обязывает использовать именно PPTP для выхода в интернет, вас не смущает? :)
3. Как вы думаете, если пользователю, который ничего не понимает в VPN, в шифровании, в безопасности и в настройке линукс, предоставить выбор: поднять PPTP и подключиться из любой винды в пару кликов, не ставя ничего или же поднять OpenVPN, ставить сторонний софт, сертификаты и так далее, и даже крупными буквами написать, что защищенность OpenVPN многократно выше, то все ли добровольно выберут OpenVPN?
1. Не имеет значения. К слову: просканируйте сеть своего района\города. Удивитесь, сколько у скольких дебилов win2k3 торчит наружу 3389/TCP и пароли квертиподобные.
2. Билайну плевать на вашу приватность. Им pptp нужен не как средство повышения безопасности клиентов, а как способ их аутентификации. Так что тоже мимо.
3. Предоставить удобный инструмент для поднятия сервера и настройки клиента OpenVPN. Но ни в коем случае не автоматизировать установку дырявого сервера.
А то, что большая часть крупных провайдеров (в т.ч. «Билайн») всех домашних пользователей проводного интернета обязывает использовать именно PPTP для выхода в интернет, вас не смущает? :)

С разморозкой. Они долго использовали l2tp без ipsec (ещё во времена Корбины), а теперь привязывают mac-адреса к портам своих свитчей и не используют l2tp вообще. Но, как написал iAndrey выше, это было не про безопасность, а про accounting.

Кстати, вот пример с Хабра: https://habrahabr.ru/company/infopulse/blog/183628/
Гляньте, гляньте! Там приведен скрипт поднятия VPN сервера под Debian. Делает примерно то же самое. Только обратите внимание как он написано. IP он берет только для интерфейса venet0:0 (который там «захардкожен»). Причем, предполагаю, что не во всех версиях дистрибутива он одинаково хорошо определит IP, потому что вывод команды ifconfig может отличаться.

Но интересно даже не это. Интересно, что я потом лично на ЛОРе видел обсуждение, где нубы спрашивали почему же этот скрипт не работает. Не работал он, естественно, потому что интерфейс у него был eth0. Человек потратил несколько дней, чтобы добиться ответа на этот вопрос. И стал ли он лучше знать Линукс? Нет. Я ему хотя бы сэкономил время. Он сработает на любой версии rhel-дистрибутива и на любом интерфейсе.

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

P.S. Ещё раз: не принимайте на свой личный счёт. Просто точек зрения чуть больше, чем одна ваша.
Не на любом сервере заработает решение.
Хочешь, я за $100 научу как сделать openvpn и файервол вне зависимости от названия интерфейса? За $200 дам готовый пример на баше, если учиться не хочешь.
Если денег нет, бесплатно три подсказки:
1) не нужны старые net utils, iptables и иже с ними. хватит firewalld, nmcli
2) Интерфейсов может быть несколько, и все могут быть «активными внешними».
3) Оперируй не портами и интерфейсами, а сервисами и зонами. man firewalld
А за сколько $ вы научите конечного пользователя не морщиться, когда он возьмет в руки планшет (и, кстати, не важно на какой ОС: Win10, Android или iOS), захочет открыть сайт, внесенный в реестр РосКомНадзора, поймет, что открыть он его не может, а подключиться к своему болгарскому VPN он не может, просто потому, что ни в одной ОС на его планшетах нет встроенной поддержки OpenVPN и ему придется открывать ваш сайт, искать утилитку под его ОС, которая равзернет OpenVPN и подтянет бог знает откуда его собственный ключ шифрования?

И самое главное, ради чего повышенное шифрование этой сессии, если он собрался не банк взламывать, а рутрэкер открыть?
Баксов за 50 расскажу, что клиент есть. Полный дурак должен платить. Не полный найдёт в маркете бесплатный клиент, и в аппсторе найдёт.

С чего это мою утилитку? Это вы тут автоматизировать дураков пытаетесь. А вот, почему вы не снабжаете пользователей необходимой информацией — уже сами себе можете ответить.

Рутрэкер спокойно в торе работает. Зачем для него VPS\VDS держать? Да и готовых VPN сервисов навалом для этих целей. А вообще, пиратить не нужно.

И да, у вас в статье написано много юзкейсов, где кража данных может принести ущерб. Где в скрипте предупреждение, мол «если что ценное есть — впн скриптом не поднимай. дырявое будет»?
А скажите, пожалуйста, как часто в вашей личной практике у вас взламывали шифрование вашей PPTP-сесссии? И какой при этом был нанесен ущерб?
Ни разу. Я его не использую.
А вот я его использовал как 10 лет назад, так и сейчас. В самых разных ситуациях. И у меня ни разу почему-то его не взламывали. Могли, наверное. Но не взламывали вот почему-то.

А если бы и взломали, то мне не был нанесен какой-либо ущерб от слова «совсем». Я не передаю конфиденциальную информацию по нему. Конфиденциальные данные я передам по тому же OpenVPN, например.
Более того, у вас же полноценный аккаунт на Хабре. Вам ничто не мешает, в противовес к моей публикации, написать свою публикацию, где вы научите пользователей, правильно выбирать дистрибутив, правильно поднимать VPN на том протоколе, который считаете самым правильным. Научите правильно учитывать всю специфику дистрибутива и так далее. Где вы пошагово объясните что делает каждая команда на пути поднятия VPN. Поднимите вопрос правильной настройки конфига VPN и настройки iptables или firewalld. Будет весьма полезная статья. Сам, с удовольствием почитаю.

Что вас останавливает? Народ ведь требует именно таких статей!
Зачем вы унижаете аудиторию хабра? Местная аудитория, имхо, способна нагуглить рецепт, коих тысячи в интернете.

Писать вам разбор полётов? Работу над ошибками? Вы сначала репетиторство оплатите. Направление куда копать, чтобы научиться, я вам и так уже подсказал.
Без обид, но мне не нужно ваше репетиторство. Я в состоянии поднять OpenVPN сервер и настроить клиент. И автоматизировать настройку и того и другого. Вот только зачем? Мне это не нужно. Выбор в пользу PPTP был сделан абсолютно сознательно, а не от безысходности. Мы может быть с вами живем в разных мирах (хотя я тоже родился в Бийске, кстати, так что привет родной земле), но в моем мире («домашнем», а не корпоративном) я и всё мое окружение выбирает простоту. Это называется «симплификация». Вы вот прислали ссылки на приложения в Play Market и App Store. Но это ведь нужно установить эти приложения. И настроить их. Зачем? Я не хочу это делать. Я против установки любых stand-alone приложений, если без них можно обойтись. Я считаю, что глупо ставить на компьютер приложения типа Evernote/Onenote и различные ToDo, глупо ставить почтовый клиент, глупо ставить специализированное ПО для работы с интернет-банком (и не дай бог ещё Java Machine некоторые банки заставляют устанавливать). В моей парадигме — всё должно работать либо «из коробки» (в данном случае речь о «коробке» ОС), либо в браузере. В любой непонятной ситуации на пользовательской машине (речь ведь не о серверах?) ставить очередную программу — это анахронизм. И в целом индустрия развивается именно в этом направлении. 20 лет назад все проверяли почту в «Outlook Express», 10 лет назад в «The Bat!», сейчас уже почти никто не пользуется никакими почтовыми клиентами — все работают в вебе (не считая корпоративный сектор, но речь не о них ведь). Microsoft, например, начиная с Win10 build 1511 встроил Skype внутрь ОС, теперь эти сообщения сыпятся в уведомления ОС сразу на все устройства пользователя (телефон, планшет, компьютер). И пользоваться им стало чуточку комфортнее, потому что запускать каждый раз отдельное приложение для того, чтобы перекинуться парой фраз — это бред. Почти все известные сервисы обзавелись веб-интерфейсом. Даже MS Office уже многие даже не ставят, т.к. простенькие задачи можно решать прям в вебе. Бесплатно и без нарушения лицензионного соглашения. Да даже в 1С сейчас можно работать, не устанавливая НИЧЕГО на клиентский компьютер. Это называется «тенденция». Так развивается индустрия. И это сложно оспаривать.

А теперь давайте вернемся к VPN. Есть два варианта: использовать PPTP, который нативно поддерживается любой мобильной и настольной ОС и не требует установки никакого стороннего софта. Просто вводите адрес, логин, пароль и вуа-ля, мы в другой сети. И есть другой вариант — OpenVPN, который на ЛЮБОЙ ОС требует установку отдельного ПО. А кроме этого — ещё хранения где-то своих ключей шифрования. Кроме не самой простой настройки сервера, приходится довольно долго настраивать КАЖДОЕ клиентское устройство, с которого мы хотим подключиться. Туда нужно поставить софт, настроить, а потом ещё как-то доставить туда ключи шифрования. И вот тут, кстати, наша безопасность уже может кануть в лету. Дело в том, что если человеку на каждой клиентской машине может понадобиться закрытый ключ, то этот ключ он начинает хранить… где? В каком-нибудь легко доступном месте. Например, в Dropbox. Ну и о какой безопасности тогда идёт речь, если свои ключи становится скомпромитировать ещё проще при неправильном подходе? А как вы хотите заставить пользователя пересмотреть свои взгляды на хранение ключей? Это даже банкам особо не удалось.

И вот два этих варианта (PPTP/OpenVPN) дают клиенту абсолютно одну и ту же «услугу» — они пускают его в другую сеть. Разница только в стойкости шифрования. Да, OpenVPN намного безопаснее, с этим никто не спорит (вопрос про компрометирование ключей пока оставим). Но вот вопрос… Зачем ему эта повышенная безопасность? Тут нужно обратить внимание на потребности конечного пользователя. Если он собирается по этому VPN-каналу кидать перс.данные своих клиентов — тогда вопросов нет, тут важна безопасность, потому что за сохранность этих данных есть ответственность, предусмотренная ст. ФЗ 152. Или если по этому каналу он собирается гонять платежные транзакции — тоже спору нет. Вот только это не является целевой аудиторией в данном случае. А если цели пользователя попроще? Например, поиграть в онлайн-покер, который запрещен РосКомНадзором. Или подменить свой географический регион, например, чтобы в Steam купить игру по акции, проводимой для другой страны. Или, например, посмотреть онлайн-видео сервисы, которые работают только для пользователей США. Во всех этих случаях по VPN не передается конфиденциальной информации. Задачи пользователя очень просты — обойти географические запреты. Пользователю наплевать, расшифруют ли его трафик пока он смотрит Netflix или нет. Ему вообще это без разницы. А вот возможность посмотреть американский сериал в онлайн-сервисе (никакого пиратства, sic!) с любого устройства с наименьшими трудозатратами (без установки софта) — это ему намного важнее. Неужели это непонятно?

И я ещё раз задам вопрос. Вот представьте: я допишу в скрипт автоматическое поднятие OpenVPN сервера и предоставлю пользователю выбор на каком протоколе создать VPN. При этом я очень крупно и жирно напишу, что шифрование PPTP самое слабое из всех возможных протоколов VPN, что я не рекомендую его использовать, если по каналу передается конфиденциальная информация, что лучше использовать OpenVPN, но сделаю оговорку, что он требует установки стороннего ПО и ключей на клиентской стороне. И вот как вы думаете, имея такой выбор, что выберет конечный пользователь? Простоту или безопасность в ситуации, когда она неважна? Вы уверен, что в 100% случаев будет выбран OpenVPN? А вот я уверен, что даже не в половине случаев. Просто мы с вами по разному оцениваем целевую аудиторию, которая может использовать этот скрипт и собственно задачи, для которых он будет использоваться.
НЛО прилетело и опубликовало эту надпись здесь
Во-первых, не путайте клиентский сектор и серверный сектор. Парадигма о которой я говорил — минимум софта на клиентской машине. Весь софт должен быть на сервере и вот доступ к этому контенту должен, по возможности, осуществляться без стороннего софта. Вы же сейчас передёргиваете мои слова.

Во-вторых, вы сейчас размываете предмет разговора. О чем спор в этом треде? Вы говорите, что новичку можно обойтись без этого. Конечно можно! А ещё можно обойтись без клавиатуры и монитора. Есть ведь перфокарты! Простите, утрирую. Да, новичку можно обойтись и без задавания вопросов на ЛОРе. Вот тебе учебник, вот тебе man — разбирайся. Когда-нибудь настроишь. И не факт, что лучше и безопаснее. Но да, можно и так. А можно выдернуть готовый скрипт и не обязательно мой. Их много. Выше я давал ссылку на другую статью на Хабре, где поднимается VPN, тоже PPTP, но ещё менее универсально, я хотя бы IP определяю по реальному запросу во внешку и даже если там 10 интерфейсов, в интернет-то он ходит по какому-то одному, вероятнее всего. Но мне казалось, что предмет разговора у нас другой. Меня обвинили в том, что если человек мне доверился и решил, не разбираясь, настроить VPN сервер с помощью моего скрипта, то я компрометирую это доверие тем, что устанавливаю ему менее защищенный VPN-сервер, чем мог бы. А я объясняю, что делаю это сознательно для максимально упрощения его использования. Потому что в моей парадигме, пользоваться этим будут только для баловства, тестов, экспериментов и, действительно, каких-то прикладных задач, но где не важна конфиденциальность (покер, игры, медиа-контент, ограниченный по географическому признаку). И вот в чём прав iAndrey, так это в том, что, пожалуй, мне стоит выводить на экран предупреждение о степени защищенности такого канала (как, например, я предупреждаю, что использование анонимного прокси незаконно и может вызвать блокировку VPS). За этот совет ему спасибо — обязательно учту.

Ну и простите меня за то, что я покусился на святую unix-way философию. Я признаю, что как раз цель была не заставлять пользователя использовать десяток разных скриптов для разных ситуаций (или шпаргалок на гуглодоксе как что сделать), а скачать всего один скрипт для разных ситуаций. Действительно, это скорее windows-философия, отсюда и столько негатива. Мне показалось, что целевой аудитории (которые как раз исповедуют MS-веру, а не Unix) так будет проще, понятнее и привычнее (и некоторые комментарии и сообщения в личку это подтверждают). И это позволит им меньше бояться линукса, использовать его хоть для чего-то уже прямо сейчас и постепенно начать разбираться в нём самому.

То, что этот подход категорически не понравится любому тру *nix-адепту — я понимал и шел на это сознательно. И то, что каждый мой пост в комментариях вы стабильно минусуете, независимо от его содержания просто по «религиозному признаку» (что никак вас не красит) — я тоже прекрасно понимаю и продолжаю отстаивать свою точку зрения. Благо рейтинг позволяет.

Но в целом я рад, что публикация получилась довольно хайповой, собрала ~56k просмотров, ~600 «закладок» и тонны говна в комментариях. И люди активно тратили свои очки, чтобы выставить ей либо плюсик, либо минусик. Перевес в сторону плюсиков всё-таки говорит о том, что её не нужно выкинуть. Стоит отсеить эмоции в комментариях, принять к сведению здоровую критику, кое что поменять и выложить на гитхаб.

На этом, собственно, всем большое спасибо за конструктивную критику.
НЛО прилетело и опубликовало эту надпись здесь

TLDR


Ни я, ни KlimovDm, как оказалось, вас не минусовали. Может это люди со стороны?


Кому-то компьютер работать, кому-то фапать на пустой список установленных программ.


Почему вы приводите только плохие сценарии использования? Обойти блокировку, обмануть авторов сервиса, накачать игорей с рутрэкера…Помогать ему в этом не надо. А с обходом рикошетом РКН задетых сайтов справляется тор, который на локалхосте работает и серверов не требует.


Есть два варианта: сделать нормально, но установив приложение, которое (открою секрет, наверное) службой висит и молча поднимает соединение, или через задницу, но используя то, что тебе установили Microsoft. А чем установленное пользователем приложение отличается от того же скайпа, который в W10 планируют из коробки поставлять? Кроме возможности без проблем его удалить.


Если человек ключи в дропбокс кинет, то и пароли там же в txt оставит.


По поводу перевеса в плюс песня и правило 95 + толпа тех, кто плюсик поставил просто за старания, не вникая в суть.


Не сделали OpenVPN потому что не смогли. Не надо отмазок про сознательность.

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

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


facepalm.

Заморачиваться на автоматическое поднятие OpenVPN я не стал просто потому, что это никому из целевой аудитории не нужно. Кому нужен OpenVPN — к тем в принципе не сможет никак попасть в руки подобный скрипт. Вот и всё.
НЛО прилетело и опубликовало эту надпись здесь

Если смогли, то что же в скрипте её нет?
Всяких веб морд для хостинга куча на выбор, а впн только одна. Почему не выбрана самая простая? "Симплификация" же.


btw, если устанавливать дополнительное ПО — фу, то что в скрипте "Установить какую-либо программу" делает?


Не стыдно сказать "не научился ещё, потому и нет". Стыдно отговорки из пальца высасывать.


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

Я полностью согласен с тем, что поскольку OpenVPN требует дополнительное ПО то для пользователя он менее предпочтителен чем клиент который можно настроить без дополнительного ПО. Но не PPTP. Ввиду его сильной дырявости его даже нету уже в iOS/OSX (раньше был). L2TP походу есть в дефолных клиентах на всех системах. Разумеется коли
Я задам прокалывающий вопрос: Т.е. вы считаете, что сидеть в интернете через VPN — это более опасно, чем сидеть в интернете вообще без VPN'а напрямую? :)
Не понял Ваш вопрос и судя по Вашей позициия ожидал от Вас обратного вопроса. Обычно люди сидят не напрямую, а через свою вайфай точку, свой роутер. VPN же позволяет подключиться напрямую. Т.е. все фаерволы идут лесом — остаются только фаеровол VPN провайдера (если он вообще есть — обычно нету) и вашего компьютера (ох ни дай бог у вас нет последних обновлений на системе).
И нет, L2TP есть не везде. Например, на большинстве роутеров нет поддержки клиента L2TP. А вот PPTP есть. В том же dd-wrt. Ну так и зачем мне супер надежное шифрование OpenVPN или даже L2TP, если я не смогу использовать его на роутере? Всё что мне нужно от VPN — это не скрыть то, чем я занимаюсь в интернете (я не делаю ничего незаконного), а просто выйти в интернет из другой страны. Всё. Надежность шифрования тут не играет никакой роли. Как и при использовании Прокси, где вообще нет никакого шифрования.
PPTP отсутствует на iOS/OSX — поэтому для меня не удовлетворяет критерию «упростить настройку клиентской стороны». Мне так же пофигу на шифрование — но PPTP не может безопасный handshake сделать — т.е. пароль логин от VPN сервиса просто легко утекает если вы используете PPTP
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
У моего провайдера не PPTP. А прямой выход в интернет через белый IP. Т.е. мой трафик вообще не шифруется. Как и у 90% другого населения. И это никого не смущает. Почему если в сравнении с прямым выходом в интернет вдруг добавить VPN, который шифрует, но всё же уязвим ко взлому, то это вдруг стало менее безопасно, чем вообще без VPN? :)
Ещё раз повторю мысль: VPN в рассматриваемом мной сценарии используется не для шифрования трафика. А для выхода в интернет из другой точки мира в обход, например, блокировок РосКомНадзора. Меня вполне устраивает то, что мой трафик сейчас не шифруется при работе с провайдером. Меня не устраивает, что у меня теперь множество гугловских сервисов не работает. И я хочу исправить косяк РКН и получить доступ к легитимным ресурсам гугла. Кто-то для этого использует Прокси (который тоже НИКАК не шифруется), но это менее удобно чем VPN. Я для этого предпочитаю использовать VPN. Если бы на VPN можно было отключить шифрование — я бы его отключил для экономии ресурса роутера. Поэтому то, что это шифрование там есть. но его можно взломать — мне совершенно индифферентно.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Присоединяюсь к советчикам «не использовать это у себя» и «не делать так».
Автору желаю принять критику конструктивно и перейти на сторону LInux-way.
Для любителей «все в одном скрипте» и «я не хочу разбираться, хочу чтоб работало» есть уже готовые изделия, написаные специалистами, например Yast в OpenSUSE (если оно ещё живо).
Ну что же такое? Почему у меня процессор CPU: 4 x 0 MHz. Он же быстрый...image
https://yadi.sk/d/ckhrwTfduxc7x

ЗЫ: Извиняюсь перед всеми хабровчанами. Я еще не разобрался(о картинке) в структуре комментариев и предпросмотр не помогает, засим, одна из ссылок лишняя, а исправить мне без инвайта невозможно.
Может потому, что вы его запустили не под RHEL дистрибутивом? ;-)
Да, Gentoo.
Просто вы не «целевая аудитория»©™
Я так и подумал :)
Я очень скептически ко всему этому отношусь, но допускаю что есть люди кому это может быть полезно. Но в некоторых местах из глаз почти пошла кровь. Вы не думали это переписать на python или perl с минимальным вызовом внешних программ?
Плюс есть вещи вроде webmin, и вы могли бы написать модуль для него (или в некоторых местах использовать его)?
>… с минимальным вызовом внешних программ… [x] на python или perl

вы, простите, какую операционную систему используете на своем сервере? :)

В основном centos. И там тот же питон в любом случае есть. И скорее всего это лучше чем городить велосипеды из череды пайпов на awk и sed.
А про минимальный вызов внешних программ, это я имел в виду скорее предостережение для тех кто хочет из perl'а grep вызывать (видел и такое).
Не вспомню адрес, ибо давно было.
На stackoverflow один товарищ предлагал писать через os и subprocess именно через grep монитор температуры проца примерно так:
a = subprocess.Popen("cat /sys/class/hwmon/hwmon1/temp4_input", stderr=None, stdout=PIPE, shell=PIPE)
a = int(a.stdout.read())
a = a/1000; a = str(a)

Или так:
a = subprocess.Popen("sensors |grep temp|sed q", stderr=None, stdout=PIPE, shell=PIPE)
a = int(a.stdout.read())
a = a/1000; a = str(a)

Или:
b = os.system("sensors |grep temp|sed q")

Уже и не помню:)
Так ведь работает же:)
Согласен. Решаю подобные вещи на питоне.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации