引用符を正しくエスケープしてください。

引用符を正しくエスケープしてください。

次のコマンドがあります。

python -c 'import crypt; print(crypt.crypt("$Password", crypt.mksalt(crypt.METHOD_SHA512)))'

$Passwordシェル変数はどこにありますか?これをリテラルとして扱うのではなく、変数に正しく拡張するにはどうすればよいですか?

答え1

これはコード注入の脆弱性なので、実行しないでください。また、パスワードが出力に表示されて公開psされ、時には一部の監査ログに記録されるため、コマンドの引数としてパスワードを渡さないでください。

通常、環境変数を使用する方が良いです。

PASSWORD="$Password" python3 -c 'import os, crypt
print(crypt.crypt(os.getenv("PASSWORD"), crypt.mksalt(crypt.METHOD_SHA512)))'

VAR=value cmd(ここでは環境変数のリバース構文が使用されるため、export VAR環境変数はそのコマンド呼び出しにのみ渡されます。)

答え2

いいえ。

python -c 'import sys; import crypt; print(crypt.crypt(sys.argv[1], crypt.mksalt(crypt.METHOD_SHA512)))' "$Password"

関連情報