По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
На сервера с системами семейства Linux всегда направлен большой уровень атак и сканирования портов В то время как правильно настроенный фаервол и регулярные обновления системы безопасности добавляют дополнительный уровень безопасности системы, вы также должны следить, не смог ли кто-нибудь пробраться через них. Инструменты, представленные в этой статье, созданы для этих проверок безопасности и могут идентифицировать вирусы, вредоносные программы, руткиты и вредоносные поведения. Вы можете использовать эти инструменты для регулярного сканирования системы, например, каждую ночь и отправлять отчеты на ваш электронный адрес. Lynis – Security Auditing and Rootkit Scanner Lynis - это бесплатный, мощный и популярный инструмент с открытым исходным кодом для аудита и сканирования безопасности для операционных систем Unix или Linux. Это средство сканирования на наличие вредоносных программ и обнаружения уязвимостей, которое сканирует системы на наличие информации и проблем безопасности, целостности файлов, ошибок конфигурации; выполняет аудит брандмауэра, проверяет установленное программное обеспечение, права доступа к файлам и каталогам, а также многое другое. Важно отметить, что он не выполняет автоматическое усиление защиты системы, однако просто дает предложения, позволяющие повысить уровень защиты вашего сервера. Мы установим Lynis (версия 2.6.6) из исходных кодов, используя следующие команды. # cd /opt/ # wget https://downloads.cisofy.com/lynis/lynis-2.6.6.tar.gz # tar xvzf lynis-2.6.6.tar.gz # mv lynis /usr/local/ # ln -s /usr/local/lynis/lynis /usr/local/bin/lynis Теперь вы можете выполнить сканирование вашей системы с помощью команды ниже: # lynis audit system Initializing program - Detecting OS... [DONE] - Checking profiles... [DONE] Program version: 2.6.6 Operating system: Linux Operating system name: CentOS Operating system version: CentOS Linux release 7.4.1708 (Core) Kernel version: 4.17.6 Hardware platform: x86_64 Hostname: merionet Profiles: /usr/local/lynis/default.prf Log file: /var/log/lynis.log Report file: /var/log/lynis-report.dat Report version: 1.0 Plugin directory: /usr/local/lynis/plugins Auditor: [Not Specified] Language: en Test category: all Test group: all - Program update status... [NO UPDATE] Чтобы запускать Lynis автоматически каждую ночь, добавьте следующую запись cron, которая будет запускаться в 3 часа ночи и отправлять отчеты на ваш адрес электронной почты. 0 3 * * * /usr/local/bin/lynis --quick 2>&1 | mail -s "Lynis Reports of My Server" you@yourdomain.com Chkrootkit – A Linux Rootkit Scanners Chkrootkit - это еще один бесплатный детектор руткитов с открытым исходным кодом, который локально проверяет наличие признаков руткита в Unix-подобных системах. Он помогает обнаружить скрытые дыры в безопасности. Пакет chkrootkit состоит из сценария оболочки, который проверяет системные двоичные файлы на наличие изменений руткита, и ряда программ, которые проверяют различные проблемы безопасности. Средство chkrootkit можно установить с помощью следующей команды в системах на основе Debian: $ sudo apt install chkrootkit В системах на базе CentOS вам необходимо установить его из источников, используя следующие команды: # yum update # yum install wget gcc-c++ glibc-static # wget -c ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz # tar –xzf chkrootkit.tar.gz # mkdir /usr/local/chkrootkit # mv chkrootkit-0.52/* /usr/local/chkrootkit # cd /usr/local/chkrootkit # make sense Чтобы проверить ваш сервер с помощью Chkrootkit, выполните следующую команду: $ sudo chkrootkit Или # /usr/local/chkrootkit/chkrootkit После запуска начнется проверка вашей системы на наличие известных вредоносных программ и руткитов, а после завершения процесса вы сможете увидеть отчет. Чтобы запускать Chkrootkit автоматически каждую ночь, добавьте следующую запись cron, которая будет запускаться в 3 часа ночи, и отправляйте отчеты на ваш адрес электронной почты. 0 3 * * * /usr/sbin/chkrootkit 2>&1 | mail -s "chkrootkit Reports of My Server" you@yourdomain.com Rkhunter – A Linux Rootkit Scanners RKH (RootKit Hunter) - это бесплатный, мощный, простой в использовании и хорошо известный инструмент с открытым исходным кодом для сканирования бэкдоров, руткитов и локальных эксплойтов в POSIX-совместимых системах, таких как Linux. Как следует из названия, это средство для обнаружения руткитов, мониторинга и анализа безопасности, которое тщательно проверяет систему на наличие скрытых дыр в безопасности. Инструмент rkhunter можно установить с помощью следующей команды в системах на основе Ubuntu и CentOS $ sudo apt install rkhunter # yum install epel-release # yum install rkhunter Чтобы проверить ваш сервер с помощью rkhunter, выполните следующую команду. # rkhunter -c Чтобы запускать rkhunter автоматически каждую ночь, добавьте следующую запись cron, которая будет работать в 3 часа ночи и отправлять отчеты на ваш адрес электронной почты. 0 3 * * * /usr/sbin/rkhunter -c 2>&1 | mail -s "rkhunter Reports of My Server" you@yourdomain.com ClamAV – Antivirus Software Toolkit ClamAV - это универсальный, популярный и кроссплатформенный антивирусный движок с открытым исходным кодом для обнаружения вирусов, вредоносных программ, троянов и других вредоносных программ на компьютере. Это одна из лучших бесплатных антивирусных программ для Linux и стандарт с открытым исходным кодом для сканирования почтового шлюза, который поддерживает практически все форматы почтовых файлов. Он поддерживает обновления вирусных баз во всех системах и проверку при доступе только в Linux. Кроме того, он может сканировать архивы и сжатые файлы и поддерживает такие форматы, как Zip, Tar, 7Zip, Rar и многие другие. ClamAV можно установить с помощью следующей команды в системах на основе Debian: $ sudo apt-get install clamav ClamAV можно установить с помощью следующей команды в системах на базе CentOS: # yum -y update # yum -y install clamav После установки вы можете обновить сигнатуры и отсканировать каталог с помощью следующих команд. # freshclam # clamscan -r -i DIRECTORY Где DIRECTORY - это место для сканирования. Опция -r означает рекурсивное сканирование, а -i - показать только зараженные файлы. LMD – Linux Malware Detect LMD (Linux Malware Detect) - это мощный и полнофункциональный сканер вредоносных программ для Linux с открытым исходным кодом, специально разработанный и предназначенный для общедоступных сред, но его можно использовать для обнаружения угроз в любой системе Linux. Он может быть интегрирован с модулем сканера ClamAV для повышения производительности. Он предоставляет полную систему отчетов для просмотра текущих и предыдущих результатов сканирования, поддерживает оповещения по электронной почте после каждого выполнения сканирования и многие другие полезные функции. LMD недоступен в онлайн-хранилищах, но распространяется в виде тарбола с веб-сайта проекта. Тарбол, содержащий исходный код последней версии, всегда доступен по следующей ссылке, где его можно скачать с помощью: # wget http://www.rfxn.com/downloads/maldetect-current.tar.gz Затем нам нужно распаковать архив и войти в каталог, в который было извлечено его содержимое. Там мы найдем установочный скрипт install.sh # tar -xvf maldetect-current.tar.gz # ls -l | grep maldetect Далее запускаем скрипт # ./install.sh На этом пока все! В этой статье мы поделились списком из 5 инструментов для сканирования сервера Linux на наличие вредоносных программ и руткитов.
img
Анализ телеметрических системТелеметрия это программный комплекс для автоматической записи и передачи данных из удаленных или недоступных источников в другую систему для мониторинга и анализа. Данные телеметрии могут передаваться с использованием радиосигнала, GSM, спутникового или кабельного телевидения, в зависимости от системы. > В мире разработки программного обеспечения телеметрия может дать представление о том, какие функции конечные пользователи используют чаще всего, обнаруживать ошибки и проблемы, а также предлагать лучшую информацию о производительности без необходимости запрашивать обратную связь непосредственно от пользователей. Как работает телеметрия? В общем смысле телеметрия работает через датчики на удаленном источнике, которые измеряют физические или электрические данные. Это преобразуется в электрические напряжения, которые объединяются с данными синхронизации. Они формируют поток данных, который передается по беспроводной среде, проводной или их комбинации. На удаленном приемнике поток дезагрегируется, и исходные данные отображаются или обрабатываются в соответствии со спецификациями пользователя. В контексте разработки программного обеспечения понятие телеметрии часто путают с регистрацией. Но ведение журнала это инструмент, используемый в процессе разработки для диагностики ошибок и потоков кода, и он ориентирован на внутреннюю структуру веб-сайта, приложения или другого проекта разработки. Телеметрия это то, что позволяет собирать поток данных с устройств, которые становятся основой для анализа. Основные свойства телеметрии Основным свойством телеметрии является способность конечного пользователя контролировать состояние объекта или окружающей среды, находясь вдали от него. Поскольку телеметрия дает представление о том, насколько хорошо работает система для конечных пользователей, как её используют это невероятно ценный инструмент для постоянного мониторинга и управления производительностью. Телеметрия помогает понять: Какими функциями чаще пользуются пользователи; Как они взаимодействуют с системой; Как часто взаимодействуют с системой и в течение какого времени; Какие параметры настройки пользователи выбирают чаще всего; Какие предпочитают они определенные типы дисплея, способы ввода, ориентацию экрана или другие конфигурации устройства; Как себя ведут во время сбоя. Очевидно, что телеметрия, имеет неоценимое значение для процесса разработки. Она позволяет постоянно совершенствовать и вводить новые функции. Проблемы телеметрии Телеметрия, безусловно, фантастическая технология, но она не без проблем. Наиболее значимая проблема и часто встречающаяся - связана не с самой телеметрией, а с конечными пользователями и их готовностью разрешить то, что они считают утечкой данных. Для решения данной проблемы, некоторые пользователи сразу же отключают передачу данных. Это проблема пока не имеет четкого решения, но и не мешает развитию системы дальше. Методы защиты телеметрических данных Большие утечки данных являются большой проблемой не только для нашей странны, но и для всего мира. Несмотря на это многие не заботятся о защите, например, из-за нехватки средств для киберзащиты. Для повышения безопасности данных, нужно сделать всё, чтобы хакеры не получили информацию. Рассмотрим основные методы защиты данных. Требования к паролю Надежная политика паролей это передовая линия защиты финансовых транзакций, личных сообщений и личной информации. Для конечных пользователей использование надежного пароля на работе так же важно, как и дома, это некий личный телохранитель, который защищает от всего, что у него есть, от серьезных угроз безопасности, мошенников и хакеров. Именно тогда системный администратор приходит, чтобы убедиться в наличии надлежащих правил и политик, которые помогут вам облегчить эту нагрузку. Большинство пользователей понимают природу рисков безопасности, связанных с легко угадываемыми паролями, но разочаровываются, сталкиваясь с незнакомыми критериями или пытаясь запомнить 30 разных паролей для своих учетных записей. Вот почему системные администраторы играют важную роль в обеспечении того, чтобы каждый пользователь хорошо знал о рисках безопасности, с которыми они сталкиваются каждый день. Для этого им нужны надежные политики паролей. Политики паролей это набор правил, которые были созданы для повышения безопасности компьютера, побуждая пользователей создавать надежные и безопасные пароли, а затем хранить и правильно их использовать. Основные аспекты политики паролей: Применение политики историй паролей; Политика минимального срока действия пароля; Политика максимального срока действия пароля; Политика минимальной длины пароля; Пароли должны соответствовать требованиям политики сложности; Политика аудита паролей. Несмотря на это надежного пароля недостаточно для сохранения данных в безопасности. Двухфакторная аутентификация Двухфакторная аутентификация это дополнительный уровень безопасности, используемый для того, чтобы люди, пытающиеся получить доступ к онлайн-аккаунту, подтверждали, что они действительно являются тем, за кого они себя выдают. Сначала пользователь вводит свое имя пользователя и пароль. Затем, вместо немедленного получения доступа, они должны будут предоставить другую часть информации. С двухфакторной аутентификацией надежнее так, как только один из факторов не разблокирует аккаунт. Таким образом, даже если пароль украден или телефон утерян, вероятность того, что кто-то другой получит второстепенные данные, крайне мала. Шифрование данных на устройствах Шифрование данных на устройства это не универсальное решение для защиты всех данных и информации от посторонних глаз, особенно когда данные отправляются через Интернет. Вместо этого устройство шифрования преобразует все данные, хранящиеся на телефоне, в форму, которую можно прочитать только с правильными учетными данными. Это выходит за рамки обычного пароля экрана блокировки, так как данные могут быть доступны из-за этого экрана с некоторыми специальными знаниями и использованием восстановления, загрузчиков. После шифрования музыка, фотографии, приложения и данные учетной записи не могут быть прочитаны без предварительного разделения информации с использованием уникального ключа. За кулисами происходит немало вещей, где пароль пользователя преобразуется в ключ, который хранится в "среде надежного выполнения", чтобы защитить его от программных атак. Затем этот ключ необходим для шифрования и дешифрования файлов, вроде тех алфавитных шифровальных головоломок, которые шифруют буквы. Например, с Android это очень просто. Вы просто вводите свой пароль при загрузке или разблокировке устройства, и все ваши файлы будут доступны. Это означает, что, если ваш телефон попадет в чужие руки, никто другой не сможет разобраться в каких-либо данных на вашем телефоне, не зная вашего пароля. Шифрование сетевого трафика внутри системы Шифрование сетевого трафика обеспечивает защиту данных от перехвата злоумышленником, который отслеживает сетевой трафик. Использование шифрования для защиты сетевого трафика, проходящего через Интернет, широко распространено, обычно в форме соединений SSL/TLS. Но внутри центров обработки данных связь между серверами часто не шифруется. Злоумышленник, который получает доступ к такой сети, даже не имея доступа к серверам, на которых хранятся данные, может перехватывать защищенные данные при передаче между серверами в кластере с несколькими машинами. Кроме того, организации все чаще регистрируют и анализируют собственный сетевой трафик для обнаружения сетевых вторжений. В результате полные копии сетевого трафика могут храниться в течение длительного периода времени в этих системах мониторинга. Для всех сетевых ссылок, которые перемещают защищенные данные, важно использовать шифрование. Это относится не только к соединениям, созданным авторизованными пользователями для доступа к системе извне центра обработки данных, но также и к сетевым соединениям между узлами во много серверной системе. На практике это почти всегда требует SSL/TLS или аналогичного уровня VPN между пользователями и системой. Внутри самой системы связь может быть защищена с использованием SSL/TLS, IPSec или какой-либо другой технологии VPN типа "точка-точка". Создание процессов для удаленного доступа Если сотрудник покидает компанию, необходимо удалить его как пользователя в учетных записях компании. Ограниченный доступ для администратора Нельзя попадаться в ловушку предоставления каждому сотруднику доступа администратора. Сотрудники с правами администратора могут заблокировать сайт, банковский счет, страницы в социальных сетях и многое другое. Кроме того, они могут удалять пользователей в приложениях, которые необходимы. Нужно присвоить статус редактора и участника нескольким людям, но сохранить статус администратора для себя и доверенного члена команды. Резервное копирование и обновление Необходимо сохранять резервную копию данных на случай кражи компьютера или телефона. Однако не всегда целью воровства является, в том числе и удаление данных. Вредоносные программы, вирусы и сбои системы могут стереть данные, поэтому обновления программного обеспечения так же важны. У обновленных систем есть шанс избежать угроз безопасности. Анализ защиты информации от несанкционированного доступа Ключевой процедурой во время разработки любой информационной системы является, прежде всего, регулирование разрешенного доступа к данным и их использования. Без контроля несанкционированного доступа построение режима защиты конфиденциальности для авторизованных пользователей является спорным, потому что любая защита, которую можно легко обойти, не является истинной защитой. Реализация конфиденциальности и безопасности связана с защитой от различных угроз, такие как: шифрование, аудит, ведение журнала, контроль доступа, разделение ролей, оповещение и активный мониторинг. Сама архитектура - это совокупность вещей, образующих единое целое с желаемыми свойствами, и желаемые свойства для защиты конфиденциальности и защиты от несанкционированного доступа не являются одинаковыми для всех информационных систем. Каждая система требует индивидуальный подход. Требования безопасности могут иметь огромное влияние на каждый аспект разработки системы. Архитектура данных, возможность совместного размещения служб на одной машине, производительность системы и даже бюджеты аппаратного обеспечения могут существенно зависеть от требований безопасности. Существуют различные методы обеспечения информационной безопасности высокого уровня, которые могли бы применяться на каждом предприятии, однако существует проблема дороговизны передовых методов защиты информации, при том что не каждое предприятие может это себе позволить, либо предлагаемые меры защиты избыточны. Для таких случаев, когда затраты должны быть минимальными (low cost projects), но при этом необходимо обеспечивать надежность хранимых данных, приходят на помощь другие технологии, например, технология Tangle. Она является открытой для использования и не требует вложений на реализацию, что позволяет организовать надежное, распределенное хранилище данных доступное большинству пользователей. Таким образом, должны быть четкие представление о некоторых основных технических и юридических аспектах в сфере конфиденциальности. В этом контексте рациональные методы сбора данных и обеспечения информационной безопасности являются необходимыми основаниями для создания конкретных механизмов контроля соблюдения конфиденциальности. Понимая свои данные, вы можете понять, какие силы работают над ними и как защитить их соответствующим образом. Не менее важным являются сертифицированные средства защиты информации. Выбор сертифицированного средства защиты информации зависит от вида информационной системы, а также от класса её защищенности и должен проводиться по результатам аудита информационной безопасности информационной системы предприятия. Таким образом, должны быть четкие представление о некоторых основных технических и юридических аспектах в сфере конфиденциальности. Рациональные методы сбора данных и обеспечения информационной безопасности являются необходимыми основаниями для создания конкретных механизмов контроля за соблюдением конфиденциальности. Понимая свои данные, вы можете понять, какие силы работают над ними и как защитить их соответствующим образом. Технология IOTA Одной из наиболее популярных технологий на сегодняшний день, является технология Blockchain. Это можно считать революцией в цифровом мире. Blockchain используется в качестве цифровой книги для записи финансовых транзакций или данных, которые имеют ценность по своей природе. Это очень неизменная и безопасная система. Blockchain доказал свои возможности в технологическом и финансовом отношении, но он обладает недостатками с точки зрения масштабируемости. Потребности отрасли растут очень быстро, но платформа Blockchain не готова к обработке большого количества транзакций одновременно. Таким образом, чтобы решить эту проблему масштабирования и облегчить решение проблем безопасности, нужна новая платформа, и вот тут-то и появляется IOTA. IOTA - криптовалюта, появившаяся в конце 2015 года, и она направлена на решение основных проблем Blockchain. Проще говоря, в технологии Blockchain не может расширяться дальше и не может обрабатывать больше транзакций, чем текущий предел в семь операций в секунду. Новая технология IOTA решает эти проблемы и предлагает совершенно новую технологию, которая все еще децентрализована, но может обрабатывать и бесконечное количество транзакций. IOTA это технология, которая представляет эволюционно новый уровень транзакционных расчётов и передачи данных. Распределенный цифровой регистр, или криптографический токен, специально созданный и разработанный для Интернета вещей. Работа IOTA основана на технологии путаницы. Tangle это другое название для описания направленного ациклического графа IOTA (DAG). Это уровень интеграции данных и расчета транзакций, разработанный для сосредоточения на Интернете вещей (IOT). Tangle действует как строка отдельных транзакций, которые связаны между собой и хранятся в децентрализованном сетевом узле участников. Основным мотивом технологии путаницы является разработка масштабируемых сред для выполнения транзакций, связанных с IoT. Как работает технология? Чтобы иметь четкое представление о том, как работает клубок, рассмотрим ориентированный граф. Направленный граф представляет собой совокупность квадратных прямоугольников, соединенных ребрами с помощью стрелок. Нижеприведенный рисунок 1 является примером ориентированного графа. Известно, что криптовалюта IOTA работает в системе Tangle, которая представляет собой подобный вид ориентированного графа, который содержит транзакции. Каждая транзакция отображается в виде вершины на графике. Всякий раз, когда новая транзакция присоединяется к путанице, она выбирает две предыдущие транзакции для утверждения и добавляет два ребра в сеть. Чтобы преодолеть проблему злонамеренных атак на сеть, фонд IOTA разработал процесс под названием "Координатор". Координатор действует как механизм добровольного и временного консенсуса для Tangle. Координатор выступает в роли эмитента этапа на каждые 2 минуты транзакции на путанице, и транзакции, одобренные координатором, рассматриваются на предмет подтверждения 100% уверенности. Если количество транзакций IoT уменьшится, они не будут уязвимы для атак. Следовательно, сеть продолжает расширяться, и тогда роль координатора будет уничтожена. Таким образом, Tangle становится полностью децентрализованной сетью и защищен с помощью полностью распределенного консенсусного механизма с использованием монеты памяти через DAG. Особенности технологии Tangle Это направленный ациклический граф (DAG); Это сеть с начальными блоками; Каждая сеть состоит из разных узлов, которые работают углубленно; Каждый узел имеет свой вес; Безграничная масштабируемость и рост данных; Менее подвержен атакам и взломам. Tangle против Blockchain Несмотря на то, что Blockchain и Tangle являются схожими технологиями, между этими двумя технологиями имеется немного технических вариаций. Техническое различие между Blockchain и Tangle или уникальными особенностями Tangle сделало его пригодным для IoT. Существенные различия между Blockchain и Tangle: Структура Структура Blockchain состоит из серии блоков или узлов информации, в которой каждый последующий блок связан с его предыдущим в постоянно растущей длинной цепочке. Когда речь идет о технологии Tangle, она состоит из группы узлов данных, которые движутся в одном направлении. Blockchain обладает возможностью циклического возврата транзакций назад, тогда как в Tangle он никогда не проверяет предшествующие узлы и позволяет Tangle поддерживать огромное количество транзакций. Визуализация вышеописанного представлена на рисунке 1. Безопасность Blockchain приобрел популярность с точки зрения безопасности из-за сложности формирования блоков. Формирование блока, связанного с математическим решением и процессом верификации, требует консенсуса. Tangle требует только проверки двух предыдущих узлов перед проверкой нового, и таким образом он создает новый узел. Вот как Tangle отстает безопаснее по сравнению с Blockchain. Децентрализация Blockchain и Tangle, обе технологии работают на децентрализованных системах, что означает отсутствие каких-либо других вещей, таких как интерфейс, сборы, препятствия и т.д. Технологию Tangle иногда называют "Blockchain следующего поколения". Несмотря на такие заблуждения, как его реализация, долгосрочная устойчивость и потенциальность, Tangle остается одной из лучших технологий в мире криптовалют. С годами применение IoT-устройств растет, и Tangle может справиться с увеличением количества транзакций. Известные уязвимости в системах Интернета вещей Некоторые уязвимости, с которыми сталкиваются системы Интернета вещей: Отсутствие безопасности транспортного уровня: в большинстве систем Интернета вещей данные хранятся на облачных серверах в интернете, мобильных телефонах или онлайн-базах данных. Эти данные можно легко взломать, так как они не шифруются при передаче. Что повышает риск безопасности данных в системе Интернета вещей. Неадекватные функции безопасности: в условиях растущей конкуренции и огромного спроса технологические гиганты хотят как можно скорее запустить свою программную систему IoT. Таким образом, важная часть жизненного цикла программного обеспечения, такая как тестирование, обеспечение качества и уязвимости безопасности, не выполняется должным образом. Плохая безопасность мобильных устройств: плохая безопасность мобильных устройств в системах Интернета вещей делает их более уязвимыми и рискованными. Данные хранятся в очень небезопасном виде в мобильных устройствах. Однако устройства iOS более безопасны, чем устройства на Android. Если пользователь потеряет свой смартфон и данные не будут сохранены, он будет в большой беде. Хранение данных на облачных серверах: хранение данных на облачных серверах также рассматривается как слабое звено в безопасности систем Интернета вещей. Облачные серверы имеют меньшую безопасность и открыты для злоумышленников из всех измерений. Разработчики должны убедиться, что данные, хранящиеся на облачных серверах, всегда должны быть в зашифрованном формате. Сетевые атаки: еще одной большой уязвимостью в системах Интернета вещей является беспроводное соединение, которое открыто для злоумышленников. Например, хакеры могут заблокировать функциональность шлюза в системах Интернета вещей. Это может разрушить всю систему IoT. IoT является одним из самых интересных и новейших технологий в наши дни. Интернет вещей используется для определения сети, которая состоит из ряда электронных устройств, соединенных между собой с помощью смарт-технологии. Умные города, умные автомобили, умные бытовые приборы будут следующей большой вещью, которая произведет революцию в том, как происходит жизнь, работа и взаимодействие людей. Как известно, каждая монета имеет две стороны. Аналогичным образом, IoT также имеет некоторые риски и уязвимости. Преодолевая эти угрозы, появится возможность пользоваться услугами систем Интернета вещей.
img
В этой статье мы расскажем как интегрировать Python c Excel и Word, чтобы без проблем создавать автоматические отчеты. Microsoft Excel и Microsoft Word – это, без доли сомнений, две наиболее широко используемые программы как в мире бизнеса, так и в некорпоративной сфере. Они практически являются синонимами слову «работа». Как правило, не проходит и недели, чтобы мы тем или иным способом не воспользовались их преимуществами. И хотя для обычных повседневных задач автоматизация не требуется, бывают случаи, когда она может стать необходимостью. А именно, когда у вас есть множество диаграмм, рисунков, таблиц и отчетов, которые необходимо сделать, это может стать очень утомительным занятием, если все это выполнять вручную. А это не должно быть так. На самом деле существует способ создать конвейер в Python, где можно будет легко интегрировать эти программы для создания электронных таблиц в Excel, а затем передавать результаты в Word для создания отчета практически мгновенно. Openpyxl Познакомьтесь с Openpyxl, возможно, одной из самых универсальных привязок в Python, которая превращает взаимодействие с Excel буквально в прогулку по парку. Используя этот пакет, вы сможете читать и записывать все новые и старые форматы Excel, то есть .xlsx и .xls. Openpyxl позволяет заполнять строки и столбцы, выполнять формулы, создавать 2D- и 3D-диаграммы, маркировать оси и заголовки, а также имеет множество других возможностей, которые могут пригодиться. Однако здесь наиболее важно то, что этот пакет позволяет вам перебирать бесконечное количество строк и столбцов Excel, тем самым избавляя вас от всех этих утомительных вычислений и построения графиков, которые вам приходилось делать ранее самим. Python-docx А затем появляется Python-docx – пакет для Word – то же, что Openpyxl для Excel. Если вы все еще не изучили их документацию, то вам все же стоит на нее взглянуть. Python-docx – без преувеличения один из самых простых и понятных наборов инструментов, с которыми я работал с тех пор, как начал работать с Python. Он позволяет автоматизировать создание документов, автоматически вставляя текст, заполняя таблицы и отображая изображения в отчете без каких-либо усилий. Без лишних церемоний давайте создадим наш собственный автоматизированный конвейер. Запустите IDE по вашему выбору и установите следующие пакеты: pip install openpyxlpip install python-docx Автоматизация Microsoft Excel Для начала загрузим уже созданную книгу Excel (как показано ниже): workbook = xl.load_workbook('Book1.xlsx') sheet_1 = workbook['Sheet1'] Затем мы пройдемся по всем строкам в нашей электронной таблице для того, чтобы вычислить и вставить значение мощности, которую мы получим, умножив ток на напряжение: for row in range(2, sheet_1.max_row + 1): current = sheet_1.cell(row, 2) voltage = sheet_1.cell(row, 3) power = float(current.value) * float(voltage.value) power_cell = sheet_1.cell(row, 1) power_cell.value = power Как только мы сделаем это, то мы сможем использовать рассчитанные значения мощности для построения линейной диаграммы, которая будет вставлена в указанную ячейку, как показано ниже: values = Reference(sheet_1, min_row = 2, max_row = sheet_1.max_row, min_col = 1, max_col = 1) chart = LineChart() chart.y_axis.title = 'Power' chart.x_axis.title = 'Index' chart.add_data(values) sheet_1.add_chart(chart, 'e2') workbook.save('Book1.xlsx') Извлечение диаграммы Теперь, когда мы построили нашу диаграмму, нам нужно ее извлечь в формате изображения для того, чтобы мы могли использовать ее в нашем отчете Word. Для начала объявим точное местоположения нашего файла Excel, а также место, куда мы хотим сохранить изображение получившейся диаграммы: input_file = "C:/Users/.../Book1.xlsx" output_image = "C:/Users/.../chart.png" Затем необходимо получить доступ к таблице, используя следующий метод: operation = win32com.client.Dispatch("Excel.Application") operation.Visible = 0 operation.DisplayAlerts = 0 workbook_2 = operation.Workbooks.Open(input_file) sheet_2 = operation.Sheets(1) И далее вы можете перебрать все диаграммы в таблице (если их больше одной) и сохранить их в указанном месте: for x, chart in enumerate(sheet_2.Shapes): chart.Copy() image = ImageGrab.grabclipboard() image.save(output_image, 'png') passworkbook_2.Close(True) operation.Quit() Автоматизация Microsoft Word Теперь, когда у нас есть изображение диаграммы, мы должны создать шаблон документа, который представляет собой обычный документ Microsoft Word (.docx), сформированный именно так, как нам необходимо, чтобы наш отчет имел определенный тип и размер шрифта, нужное форматирование и структуру страницы. Далее, все, что нам необходимо сделать, это создать заполнители для нашего автоматизированного содержимого, то есть значений таблиц и изображений, и объявить их с переменными, как показано ниже. Внутри двойных фигурных скобок {{variable_name}} может быть объявлен любое автоматизированное содержимое, включая текст и изображения. Для таблиц вам необходимо создать таблицу с шаблонной строкой, в которую включены все столбцы, а затем вам необходимо добавить еще одну строку выше и одну строку ниже со следующими обозначениями: Первая строка: {%tr for item in variable_name %} Последняя строка: {%tr endfor %} На рисунке выше указаны следующие имена переменных: table_contents для словаря Python, в котором будут храниться наши табличные данные. Index для ключей словаря (первый столбец). Power, Current и Voltage для значений словаря (второй, третий и четвертый столбцы). Затем мы импортируем наш документ-шаблон в Python и создаем словарь, в котором будут храниться значения нашей таблицы: template = DocxTemplate('template.docx') table_contents = []for i in range(2, sheet_1.max_row + 1): table_contents.append({ 'Index': i-1, 'Power': sheet_1.cell(i, 1).value, 'Current': sheet_1.cell(i, 2).value, 'Voltage': sheet_1.cell(i, 3).value }) Далее мы импортируем изображение диаграммы, которое ранее мы создали в Excel, и создаем еще один словарь для создания экземпляров всех переменных-заполнителей, объявленных в документе-шаблоне: image = InlineImage(template,'chart.png',Cm(10))context = { 'title': 'Automated Report', 'day': datetime.datetime.now().strftime('%d'), 'month': datetime.datetime.now().strftime('%b'), 'year': datetime.datetime.now().strftime('%Y'), 'table_contents': table_contents, 'image': image } И, наконец, мы отображаем отчет с нашей таблицей значений и изображением диаграммы: template.render(context) template.save('Automated_report.docx') Заключение И вот, мы получили автоматически созданный отчет Microsoft Word с числами и диаграммами, созданными в Microsoft Excel. При этом у вас есть полностью автоматизированный конвейер, который можно использовать для создания любого количества таблиц, диаграмм и документов. Исходный код программы import openpyxl as xl from openpyxl.chart import LineChart, Reference import win32com.client import PIL from PIL import ImageGrab, Image import os import sys from docx.shared import Cm from docxtpl import DocxTemplate, InlineImage from docx.shared import Cm, Inches, Mm, Emu import random import datetime import matplotlib.pyplot as plt ######## Generate automated excel workbook ######## workbook = xl.load_workbook('Book1.xlsx') sheet_1 = workbook['Sheet1'] for row in range(2, sheet_1.max_row + 1): current = sheet_1.cell(row, 2) voltage = sheet_1.cell(row, 3) power = float(current.value) * float(voltage.value) power_cell = sheet_1.cell(row, 1) power_cell.value = power values = Reference(sheet_1, min_row = 2, max_row = sheet_1.max_row, min_col = 1, max_col = 1) chart = LineChart() chart.y_axis.title = 'Power' chart.x_axis.title = 'Index' chart.add_data(values) sheet_1.add_chart(chart, 'e2') workbook.save('Book1.xlsx') ######## Extract chart image from Excel workbook ######## input_file = "C:/Users/.../Book1.xlsx" output_image = "C:/Users/.../chart.png" operation = win32com.client.Dispatch("Excel.Application") operation.Visible = 0 operation.DisplayAlerts = 0 workbook_2 = operation.Workbooks.Open(input_file) sheet_2 = operation.Sheets(1) for x, chart in enumerate(sheet_2.Shapes): chart.Copy() image = ImageGrab.grabclipboard() image.save(output_image, 'png') pass workbook_2.Close(True) operation.Quit() ######## Generating automated word document ######## template = DocxTemplate('template.docx') #Generate list of random values table_contents = [] for i in range(2, sheet_1.max_row + 1): table_contents.append({ 'Index': i-1, 'Power': sheet_1.cell(i, 1).value, 'Current': sheet_1.cell(i, 2).value, 'Voltage': sheet_1.cell(i, 3).value }) #Import saved figure image = InlineImage(template,'chart.png',Cm(10)) #Declare template variables context = { 'title': 'Automated Report', 'day': datetime.datetime.now().strftime('%d'), 'month': datetime.datetime.now().strftime('%b'), 'year': datetime.datetime.now().strftime('%Y'), 'table_contents': table_contents, 'image': image } #Render automated report template.render(context) template.save('Automated_report.docx')
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59