Вы должны многого добиться, передав файл журнала только один раз через awk. Это означает объединение всех регулярных выражений в одно. Если вы не хотите делать это в файле scope.txt
, сделайте это перед вызовом awk. Например,
sed <scope.txt 's|^/\^|(|; s|\$/$|)|; $!s/$/|/' | tr -d '\n' >pattern
zcat $file | bro-cut -d |
awk '
BEGIN{ getline pat <"pattern"; pat = "^(" pat ")$" }
$3 ~ pat || $5 ~ pat
' >~/$file
sed заменяет / ^
и $
, окружающие каждую строку регулярного выражения, закрывающей парой ()
, добавляет |
в конце строки и помещает результат в одну строку в файл pattern
. Таким образом, в этом файле собраны все шаблоны вместе. Отсутствующий ^ (...) $
добавляется в оператор awk BEGIN
сценария, который считывает файл шаблона в переменную pat
.
Вышеупомянутый код заменяет ваш внутренний цикл for
и sort | uniq
.
Придерживаюсь вопроса ОП:
Is there a way to check, if I take a SD card randomly and insert it in a Rasperry Pi, that the SD card has been created the way I expected, with the good commands ?
Если вы вставите карту в Raspberry Pi, а затем загрузите ее, боюсь, вы не сможете проверить, что на ней установлено :цель любого руткита — скрыть свое существование.
Конечно, решением было бы вообще не загружаться на нем, а вместо этого читать/исследовать/сравнивать его с системой, которой вы владеете и которой доверяете.
Невозможно проверить, как кто-то настроил ОС от вашего имени. Всегда есть возможность что-то спрятать. Если существует риск злонамеренного поведения со стороны поставщика, вам остается только
Вы можете записать sha256sum (хэш )каждого раздела в образе, а затем сравнить это позже с SD-картой , прежде чем подключать ее и загружать . Хотя теоретически они могли бы добавить дополнительный раздел, это было бы очень просто обнаружить.
Причина, по которой вы не можете работать с хешем изображения, заключается в том, что если SD-карта хотя бы на один байт больше или меньше, чем вы ожидаете, хэш будет недействительным. Размеры SD-карт различаются даже между картами, которые претендуют на именованный размер.
Эти шаги можно выполнить на любой машине с Linux. Вы можете использовать Raspberry Pi с достаточно большой SD-картой (, рекомендуется не менее 16 ГБ )
.Загрузите и изображение, с которым вы хотите работать. Например, :последнее изображение raspbian:
wget --content-disposition https://downloads.raspberrypi.org/raspbian_full_latest
unzip *raspbian-stretch-full.zip
ls -lh *raspbian*
-rw-r--r-- 1 philip philip 5.1G Apr 8 19:43 2019-04-08-raspbian-stretch-full.img
-rw-r----- 1 philip philip 2.0G Apr 8 19:48 2019-04-08-raspbian-stretch-full.zip
Настройте изображение.
sudo losetup /dev/loop0 2019-04-08-raspbian-stretch-full.img
sudo partprobe /dev/loop0
ls -lh /dev/loop0*
brw-rw---- 1 root disk 7, 0 May 15 19:18 /dev/loop0
brw-rw---- 1 root disk 259, 0 May 15 19:18 /dev/loop0p1
brw-rw---- 1 root disk 259, 1 May 15 19:18 /dev/loop0p2
sudo sha256sum /dev/loop0p*
66aa77d8405ab585865d0e0378f06bd8baa5ab41bbb6e9cc23ac6b2be40974d4 /dev/loop0p1
1895a2c5d9e93eb3b644d8cacab9d928184290e30bba6d27b7eb9d486c30e5e8 /dev/loop0p2
sudo partx -d /dev/loop0
sudo losetup -d /dev/loop0
Подключите карту к любому работающему компьютеру с Linux. Если вы хотите использовать Raspberry Pi, вы можете использовать USB-устройство чтения SD-карт, чтобы подключить карту, которую хотите проверить, в качестве второй карты.
Карта появится как новый диск, например /dev/sda
или /dev/sdb
...
Предполагая, что он отображается как /dev/sda
, вы можете получить хэш для каждого раздела:
ls -lh /dev/sd*
brw-rw---- 1 root disk 8, 16 May 9 12:23 /dev/sda
brw-rw---- 1 root disk 8, 17 May 9 12:23 /dev/sda1
brw-rw---- 1 root disk 8, 18 May 9 12:23 /dev/sda2
sudo sha256sum /dev/sda1 /dev/sda2
66aa77d8405ab585865d0e0378f06bd8baa5ab41bbb6e9cc23ac6b2be40974d4 /dev/sda1
1895a2c5d9e93eb3b644d8cacab9d928184290e30bba6d27b7eb9d486c30e5e8 /dev/sda2
Эти шаги НЕЛЬЗЯ выполнять на любой машине с Linux, им нужен процессор ARM, такой как на raspberry pi.
Установите контур -задней перегородки (/dev/loop0p2
), созданной ранее. ОС установлена на p2
, загрузочная конфигурация — на p1
.
mkdir rpi-os
sudo mount /dev/loop0p2 rpi-os
df -h foo
Filesystem Size Used Avail Use% Mounted on
/dev/loop0p2 4.9G 4.4G 202M 96% /home/philip/rpi-os
sudo chroot rpi-os
apt-get update
apt-get install some-new-package
df -h rpi-os
Filesystem Size Used Avail Use% Mounted on
/dev/loop0p2 4.9G 4.5G 149M 97% /home/philip/rpi-os
exit
sudo umount rpi-os
есть ли способ проверить, линукс установлен определенным образом, да.
Игнорирование законных обновлений и изменений файла конфигурации...
соответствующие файлы initrd, initramfs, grub и efi в каталоге /boot
использовать AIDE в linux, в котором работает один из linux — это база данных контрольных сумм, которая поможет обнаружить вторжение
напишите скрипт, который будет проверять основные вещи, как и ожидалось :расположение файловой системы, смонтированные папки, службы (chkconfig или systemctl )которые включены/отключены
Если все в порядке, то можно быть в некоторой степени уверенным, что все так, как должно быть. Проблемы возникают с ложными срабатываниями, например, вы выполняете законное обновление ядра, теперь необходимо изменить контрольную сумму, чтобы она соответствовала новому ядру, иначе оно будет отмечено красным как измененное. И различать.conf и другие файлы, которые важны и действительно важны, от тех, которые можно изменить и которые вызывают последствия, которые вам не нужны или не должны быть нужны.
How can I ensure that a provider isn't malevolent and attempt to add any other software we do not want to see on our SD cards ?
это вопрос на миллион долларов... откуда вы знаете {в произвольном порядке}, что ubuntu, suse, redhat/centos, debian, кто бы ни был "поставщиком" Linux, ничего не подсунули? Ответ = выбрать хорошего провайдера. Паранойя -короче говоря, не получает «исходный код ядра Linux», а затем проверяет весь этот исходный код, чтобы убедиться, что «они» ничего не подсунули...затем проверьте все 1000+ об / мин, которые идут вместе с linux, которые заставляют его работать, такие как gnome и glibc, чтобы что-то не было вставлено... есть риск. В какой степени вы пойдете, чтобы минимизировать этот риск, зависит от вас. Существует около 100+ провайдеров Linux, выберите одного из проверенных и проверенных... например, ubuntu, debian, suse, rh...