пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие
наши статьи:
Представьте, что одним прекрасным днем вы просыпаетесь и понимаете, что ваш программный комплекс не работает, в нем есть ошибка, которую необходимо найти. Такое и в страшном сне не присниться.
Кроме того, вы понимаете, что вам нужно сравнить код двух версий, и вы вынуждены вернуться к предыдущей версии системы. Все паникуют, и это абсолютно нормально!
Благо, есть такая утилита Linux под названием diff, которая прикроет вашу спину.
Что такое команда
diff
?
Довольно часто применяется такая операция, как сравнение файлов и поиск различий между ними. Особенно полезна такая операция в случае, если вам нужно сравнить файлы со сложным кодом или файлы конфигурации.
Вместо того, чтобы сравнивать эти файлы вручную (что может повлечь за собой человеческий фактор), вы можете воспользоваться встроенной мощной утилитой Linux под названием
diff
. Кроме того, вы можете сэкономить свое время.
Помимо команды
diff
, у Linux также есть еще одна команда, с помощью которой вы можете применить изменения одного файла к другому, и это команда
patch
. В этой статье мы подробно рассмотрим эти многофункциональные и крайне интересные команды, чтобы узнать, как их можно применять.
Синтаксис команды
diff
Ниже представлен синтаксис команды
diff
:
diff [options] file1 file2
Синтаксис diff
В зависимости от изменений, команда
diff
может отображать три символа:
Символ
Значение
c
CHANGE – необходимо внести изменения.
d
DELETE – необходимо что-то удалить.
a
ADD – необходимо что-то добавить.
В выводе команды
diff
символ < указывает на первый файл, а символ > - на второй, который используется в качестве ссылки.
Давайте взглянем на несколько примеров, как можно использовать команду
diff
.
Примеры использования команды
diff
Для того, чтобы показать, что файлы одинаковы, вместе с командой
diff
мы используем флаг
-s
. В данном примере два файла (fileA и sameAsfileA) имеют одинаковое содержимое.
В следующем примере у нас есть два файла, содержимое которых отличается. В выводе, продемонстрированном ниже, команда
diff
показывает, что в файле showList_v2.js необходимо изменить строки с номерами 11 и 14, чтобы они соответствовали строкам с номерами 11 и 13 в файле showList_v1.js.
Следующий вариант использования команды
diff
- мой любимый. А все потому, что вы можете наглядно видеть различия.
Просто воспользуйтесь флагом
-y
, как показано ниже:
diff -y file1 file2
Наглядное сравнение файлов
Последний пример, который бы я хотел привести – это пример унифицированного вывода. Эти выходные данные зачастую используются в качестве входных данных для команды
patch
. Заодно мы посмотрим, как работает команда
patch
:
Унифицированный вывод, который используется в качестве входных данных для команды patch
Ниже вы можете видеть несколько других полезных флагов, который можно использовать с командой
diff
:
-i
- флаг позволяет игнорировать регистр. По умолчанию команда
diff
чувствительна к регистру.
-w
- флаг позволяет игнорировать пробелы в файле. По умолчанию пробелы тоже сравниваются.
Синтаксис команды
patch
Вы регулярно вносите изменения в свой код, и для того, чтобы обмениваться отредактированными и исправленными файлами после каждого внесенного изменения, нужно много времени, и это практически невозможно. Как правило, разработчики делятся с командой своими исправлениями в коде, поэтому они сразу же применяются.
Использование команды
patch
- это самый безопасный способ передачи этих исправлений.
Давайте взглянем, как работает команда
patch
:
patch file_to_change < patch_file
Синтаксис команды patch
Примеры использования команды
patch
Вот пример внесения исправлений: допустим, что у нас есть простой код JavaScript [имя файла: print_in_js,js], который печатает строку.
И все-таки в этой функции печати что-то не так, и для того, чтобы выяснить, что именно, нам нужно провести тестирование. Отправляем файл print_in_js,js нашему коллеге, он его исправляет и отправляет обратно нам.
Для начала наш коллега находит неправильный тип в строке под номером 3. Он исправляет файл.
После того, как он исправил файл и убедился, что код работает, он создает «заплатку».
diff -u print_in_js.js print_in_js_Fixed.js > patched_print_js.diff
Создание «заплатки»
Давайте проверим содержимое этой «заплатки»:
Содержимое «заплатки»
Теперь, когда у нас есть «заплатка», мы можем ее применить:
patch print_in_js.js < patched_print_js.diff
Применение «заплатки»
Исправленный код после применения «заплатки»
И да, наш код исправлен!
Заключение
Создавать и применять «заплатки» с помощью команд
patch
и
diff
довольно легко. Аналогичный подход используют системы контроля версий, например, Git или SVN. Изучив основы, вы с легкостью сможете понять, как работает контроль версий, и начать его использовать, ведь именно он является важным аспектом разработки программного обеспечения.
Дорогой друг! Ранее мы рассказывали про новинки FreePBX 14. Новые и интересные фичи безусловно не будут лишними. Ну что же, приступим теперь к обновлению FreePBX 13 версии до 14?
Pre-work
Рекомендуем перед началом работ сделать полный бэкап/снэпшот сервера, на котором будут производиться работы;
Как и у любого пользователя FreePBX, у вас в Dashboard графической оболочки появилось следующее уведомление:
Заманчивое название модуля. Переходим в консоль (подключаемся пол SSH) вашего сервера и даем простую команду:
fwconsole ma downloadinstall versionupgrade
Модуль будет установлен:
Теперь возвращаемся в FreePBX. В правом верхнем углу нажимаем Apply Config. Далее, прыгаем по пути Admin → 13 to 14 Upgrade Tool и вот что мы увидим:
Нажимаем на кнопку Check the requirements! и смотрим: система говорит, что у нас установлен FreePBX Distro и нам необходимо воспользоваться специальным скриптом для апгрейда. Что же, приступим к обновлению вручную.
Обновление через CLI
Перед началом работ есть определенные требования, такие как:
Сервер с 64 - битной архитектурой;
Как минимум 10 Гб свободного места;
Стабильное интернет соединение;
Если вы используете 32 – битную архитектуру, то проще всего воспользоваться FreePBX Conversion tool, сделав бэкап на 32 – битной системе, а восстановить его в системе 64 – бит с FreePBX 14. При попытке установки на 32 – битной системе процесс предупредит вас об этом:
Устанавливаем нужный RPM:
yum -y install http://package1.sangoma.net/distro-upgrade-1707-16.sng7.noarch.rpm
После успешной установки RPM даем следующую команду:
distro-upgrade
И переходим в интерактивный режим:
[root@freepbx ~]# distro-upgrade
??????????????????????????????????????????????
? ?
? Sangoma 6 to 7 Upgrade Tool ?
? ?
? Distro Upgrade - Version 1707-2.sng7 ?
? Build Date: 2017-06-21 ?
? ?
??????????????????????????????????????????????
Checking prerequsites...
Checking bitsize of machine [ ? ] - x86_64
Checking available disk space [ ? ] - 13G Available
All prerequsites passed!
Are you ready to upgrade your machine to SNG7? This process requires
two reboots, and will download approximately 200mb of files before
starting. There will be no interruption to service until this machine
is rebooted.
Download files required for upgrade [Yn]?
Указываем y:
Download files required for upgrade [Yn]? y
######### Starting setup upgrade on Tue Aug 22 17:39:08 MSK 2017 #########
######### Creating upgrade repofile #########
######### Installing needed packages #########
######### Running preupgrade #########
######### Running upgrade-tool #########
######### Downloading sangoma-release rpm #########
######### Updating packages.list #########
######### Verified sangoma-release in package.list #########
######### Reboot to finish this stage of the upgrade #########
######### Finished setup upgrade on Tue Aug 22 17:44:12 MSK 2017 #########
Preparations complete!
Please reboot your machine when convenient. This machine will install all the new
and upgraded packages, and then reboot for a second time automatically. After the
second reboot, it will then continue the upgrade process automatically. When the
upgrade is complete, you will be presented with a standard login prompt.
Важно! Данный процесс можно проводить в рабочее время параллельно с обслуживанием вызовов. Даунтайм подразумевается только далее, после перезагрузки.
Перезагружаем сервер командой reboot. При загрузке, у вас будет автоматически выбрана опция System Upgrade, как показано ниже. Если нет, то выберите эту опцию вручную стрелками на клавиатуре:
После этого начнется процесс обновления. Длительность этого процесса напрямую коррелирует с производительностью вашего сервера. После обновление компоненты Core OS произойдет вторая перезагрузка, в рамках которой произойдет обновление всех модулей FreePBX, после чего апгрейд будет завершен.
По окончанию, вы увидите стандартный баннер FreePBX 14:
Выполняем проверку версии. Даем команду в консоль:
ls -l /usr/src | grep freepbx
Если все ОК, то вывод будет вот такой:
SNMP (Simple Network Management Protocol) - стандартный протокол для запроса информации о состоянии сетевых устройств, и он является pull протоколом - это означает, что SNMP обязан на регулярной основе запрашивать информацию о состоянии устройств - SNMP-коллекторы опрашивают устройства, а SNMP-агенты на устройствах передают данную информацию.
Частота опросов основывается на нескольких факторах, таких как:
Степень необходимой детализации получаемой информации;
Объем доступного места на хранилище;
Срок хранения данной информации;
SNMP является широко распространенным протоколом - в свободном доступе находится как достаточно много решений-коллекторов с открытым кодом, так и коммерческих вариантов - причем существуют как программные решения, так и “железные”. Маршрутизаторы и свичи чаще всего являются SNMP-агентами, также как и три основных операционных системы - Windows, Mac OS и Linux. Но с небольшой поправкой, на них SNMP служба должна быть запущена вручную.
Важно: SNMP может предоставить много полезной информации о “здоровье” оборудования, но необходимо помнить, что всегда нужно использовать безопасную версию SNMP протокола - с настроенной аутентификацией и нестандартной Community строкой.
Версии SNMP протокола
Всего существует три основных (они же и повсеместно используемые) версии SNMP протокола, в нашем случае мы будем использовать третью версию. Ниже, на всякий случай, приведено краткое описание каждой из версий.
SNMP v1
Первая версия является оригинальной версией и до сих пор используется, даже практически спустя тридцать лет. В данной версии нельзя применить никакие меры для повышения безопасности помимо Community строки, которая является чем-то вроде пароля. Если данная строка на Коллекторе соответствует строке на Агенте, то Коллектор сможет запросить информацию. Именно поэтому так важно изолировать SNMP и поместить его в отдельную подсеть и изменить Community строку.
SNMP v2c
Версия 2с привнесла дополнительные фичи в SNMP, но основным инструментом повышения безопасности все еще является Community строка. Следующая версия (v3) является предпочтительным вариантом, но некоторые организации все еще используют v1 и v2c.
SNMP v3
Третья версия имеет в себе фичи шифрования и аутентификации, а также способна отправлять настройки на удаленные SNMP-агенты. Данная версия является предпочтительной, но необходимо чтобы и Коллектор, и Агент поддерживали её. Несмотря на то, что SNMP v3 позволяет удаленно конфигурировать девайсы, большинство организаций не используют данную фичу - для этих целей используются такие решения как Ansible, Puppet, Chef или проприетарные системы управления.
Настройка на маршрутизаторе MikroTik
На большинстве устройств Community строкой является слово “public” - и этот факт широко известен, к примеру порт сканнер Nmap автоматически будет пробовать данный вариант. Если данная строка не была изменена, вы, по сути, предоставляете очевидную лазейку злоумышленникам. К сожалению, на маршрутизаторах MikroTik данную строку нельзя отключить или удалить, но её можно изменить и запретить.
/snmp community set 0 name=not_public read-access=no write-access=no
Затем необходимо создать SNMP Community со следующими параметрами:
Нестандартное имя;
Только чтение;
Аутентификация;
Шифрование;
Для этого можно использовать команду ниже - она сделает все необходимое, но, естественно, вам необходимо поменять строки wow_password и awesome_password на актуальные пароли, которые будут использоваться у вас в системе. Также поменяйте имя строки на любое другое - в примере используется имя perch_pike.
/snmp community add name=perch_pike read-access=yes write-access=no authentication-protocol=SHA1 authentication-password=wow_password
encryption-protocol=AES encryption-password=awesome_password security=private
Осталось выполнить всего одну команду для включения SNMP и настройки вашей локации и контактной информации для устройства:
/snmp set contact="Aristarh @ Merion Networks" location="Internet, RUS" enabled=yes
Заключение
SNMP - широко известный протокол, который также хорошо поддерживается компанией MikroTik и остальными производителями. Всегда используйте нестандартные Community строки, аутентификацию и шифрование, чтобы быть на 100% уверенными в том, что злоумышленники не могут получить информацию об устройствах в вашей сети - и тогда SNMP будет верным помощником в поддержке вашей сети.
