С GNU xargs
вы можете сделать:
xargs -P4 -n 10 -r0a <(find. -name '*.gz' -type f -print0) sh -c '
for file do
zcat < "$file" | sort > "$file.txt"
done' sh {} +
Это вызовет до 4 sh
параллельных процессов, каждый из которых обрабатывает до 10 файлов один за другим в цикле.
Всегда немного страшно, когда все работает вот так.
Если вы хотите протестировать его, вы можете попробовать заставить его работать со сбоем. Если кто-то попытается подделать ваш сервер, он не сможет сделать это с помощью сертификата, подписанного вашим (собственным -подписанным )сертификатом ЦС. Таким образом, вы можете посмотреть, что произойдет, если сертификат ЦС, используемый клиентом, не совпадает с сертификатом, используемым для подписи сертификата сервера.
Таким образом, чтобы проверить, правильно ли ваши клиенты mosquitto_sub
и mosquitto_pub
проверяют сертификат, вы можете попробовать создать совершенно новый "фиктивный" сертификат ЦС. Не устанавливайте это на сервер. Но попробуйте использовать его с вашими командами mosquitto_sub
и mosquitto_pub
:
mosquitto_sub -h 192.168.1.8 -t sensor --cafile dummy_ca.crt -p 8883 -d
mosquitto_pub -h 192.168.1.8 -t sensor --cafile dummy_ca.crt -m "test" -p 8883 -d
Если ваш клиент безопасно обменивается данными с сервером, это должно привести к ошибке. Это связано с тем, что сертификат вашего сервера не будет подписан сертификатом ЦС, ожидаемым клиентом. Если он работает с фиктивным сертификатом, у вас есть проблема, и вам нужно выяснить, почему.
Шифрование с открытым ключом работает с использованием пар ключей (открытый и закрытый ключи ). Закрытый ключ хранится скрытым и никому никогда не передается . Все, что зашифровано с помощью открытого ключа, может быть расшифровано только с помощью закрытого ключа. Даже открытый ключ нельзя использовать для расшифровки чего-либо, зашифрованного с помощью открытого ключа... и вы не можете получить закрытый ключ из открытого ключа.
Таким образом, чтобы общаться по зашифрованному каналу, оба устройства (клиент и сервер )отправляют друг другу свои собственные открытые ключи, сохраняя в секрете свои собственные закрытые ключи. Неважно, сможет ли их получить хакер, потому что их нельзя использовать для расшифровки чего-либо. Затем, чтобы поговорить, клиент шифрует все с помощью открытого ключа сервера, а сервер шифрует все с помощью открытого ключа клиента.Только сервер может расшифровать получаемые им сообщения, потому что только у него есть закрытый ключ для их расшифровки. Точно так же только клиент может расшифровать отправленные ему сообщения.
Сертификаты используются только для того, чтобы гарантировать, что хакер не сможет выполнить атаку «человек посередине», выдавая себя за сервер. Сертификат содержит три важных элемента информации:
Таким образом, хакер не может притворяться вашим сервером, потому что он должен либо: