Я пытаюсь установить пароль пользователя из сценария оболочки, передавая аргумент сценарию оболочки, чтобы сам пароль не был встроен в файл, и его можно было обновлять и обменивать между системами.
Вот пример пароля, который имеет всевозможные проблемы и является лишь одним из многих примеров того, на что надрывается Bash: 'my@secret\npasword123!
Способ выполнения и сценариев. Я буду называть «полуавтоматикой», поскольку за клавиатурой будет пользователь, которому нужно будет указать аргумент, содержащий пароль.
Вот пример того, как это выглядит из командной строки для визуализации
./password.sh administrator 'my@secret\npasword123!
Вот то, к чему я сейчас обращаюсь за советами, но вкратце, я чувствую, что размещение их здесь для справки может быть полезным, поскольку возможно, что я что-то упустил, но и чтобы получить лучшее представление о других пользователях с похожими проблемами .
Вот несколько различных методов, которые я в настоящее время пробовал для своего password.sh
файла, но у каждого из них не хватает
echo -e '$2\n$2' | (passwd --stdin $1)
echo $1:$2 | sudo chpasswd
yes $2 | passwd $1
sudo passwd $1 <<EOF
$2
$2
EOF
То, что я надеюсь найти здесь, это простое «универсальное решение для всех», которое позволяет мне инкапсулировать любой случайный пароль, который не может быть экранирован каким-либо образом, и все крайние случаи покрыты , обратная косая черта, знаки доллара, одинарные и двойные кавычки, что бы Bash ни рвал. О необходимости вручную экранировать каждый экземпляр специального символа, как упомянуто, не может быть и речи.
Я также хотел бы быстро программно превратить пароль, содержащий специальные символы, в измененную экранированную последовательность только для Bash. Я искал такие вещи, как «Конвертер последовательностей Bash Escape», но я не смог найти какой-либо инструмент, который мог бы дать ввод, и выложил бы последовательность, которая бы сделала необходимым, чтобы убедиться, что Bash вел себя так, как ожидалось, после того, как я его кормил, что , Это добавит дополнительный шаг к процессу, но будет приемлемым.
Наконец, если есть какие-то другие альтернативные методы для выполнения и выполнения этого, мне также было бы интересно услышать их, если они способны правильно избегать / игнорировать интерпретацию специальных символов, которые ожидаются для пароль.
Поскольку это то, что я называю «полуавтоматикой», я бы сказал, что желаемый ответ - это то, что я мог бы запустить из оболочки Bash в виде одной строки, как я описал выше (./password.sh administrator 'my@secret\npasword123!
), но я понимаю, что это может невозможно из-за ограничений с Bash. В качестве последнего шага я бы также рассмотрел способ запроса пользователя из командной консоли для ввода после запуска сценария как действительного, но я не совсем уверен, как некоторые средства автоматизации примут это в будущем, так что это может не произойти. быть полностью будущим решением.
Спасибо!