tee
клонирует канал, а xargs
передает каждой команде аргументы:
find -name 'myawesomeapp.jar' -print0 | tee >(xargs -0 chown root:webapps) | xargs -0 chmod 640
Я обнаружил это!
PHP использует переменные iv
и key
как строки, а CLI openssl
требует шестнадцатеричной версии строк, без пробелов и новой строки, как I покажет.
Сначала мне нужно преобразовать строки iv и pass в шестнадцатеричные, используя:
Определить шестнадцатеричный эквивалент IV:
hexiv=$(echo $(echo -n '3571984260' | od -A n -t x1) | tr -d " ")
Определить шестнадцатеричный эквивалент mysecret
:
hexpass=$(echo $(echo -n 'mysecret' | od -A n -t x1) | tr -d " ")
И еще кое-что: pass для php - это не пропуск для openssl cli, а КЛЮЧ:
echo -n '12345' | openssl enc -aes-256-cbc -iv "$hexiv" -K "$hexpass" -a
И теперь он работает точно так же, как скрипт php!
Важно: мне нужно было использовать -K
в верхнем регистре, иначе сгенерированная строка не та.