Я пишу сценарий, который автоматически вводит вход пользователя для команды openssl, но я не могу найти способ ввести необходимый пароль автоматически сценарием. Что я попробовал:
spawn sudo openssl x509 -req -in client.csr -CA /etc/mosquitto/ca_certificates/ca.crt -CAkey /etc/mosquitto/ca_certificates/ca.key -CAcreateserial -out client.crt -days 15;
expect 'Enter pass phrase for /etc/mosquitto/ca_certificates/ca.key:'
send '1234\n'
Не работает (мечите икру и отправьте не найденный),
printf '1234\n' | sudo openssl x509 -req -in client.csr -CA /etc/mosquitto/ca_certificates/ca.crt -CAkey /etc/mosquitto/ca_certificates/ca.key -CAcreateserial -out client.crt -days 15;
Не работает, остается ожидающим пароля, и программы никогда не заканчивается, если я не вхожу '1234' вручную.
В других случаях это работает с printf:
printf 'ES\n\n\n\n\nclient'$n'\n\n\n\n' | sudo openssl req -out client.csr -key client.key -new;
Мое предположение - то, что printf не работает, если вход он скрыт. Какие-либо идеи?
Найденный способом сделать это без использования ожидает:
В основном необходимо включать --passin pass:'your_passphrase'
в команде
Например: sudo openssl x509 -req -in client.csr -CA /etc/mosquitto/ca_certificates/ca.crt -CAkey /etc/mosquitto/ca_certificates/ca.key -CAcreateserial -out client.crt --passin pass:1234 -days 15;
Существуют другие способы сделать его, такие как загрузка файла паролей, который более безопасен, как обсуждено здесь