値をエクスポートする前にユーザー名とパスワードを設定するこのファイルがあります。
#!/bin/bash
echo -n "User:";
read user
echo -n "Password:";
read -s password
export http_proxy=http://$user:$password@$domain:$portnum
if curl -silent http://www.google.com | grep authentication_failed;
then
echo NO CONNECT
unset http_proxy
else
echo OK
fi
history
、、、私printenv
はexport -p
設定した値を見ることができます。
また、私のパスワードをそのまま含む値ではなく、$passwordで暗号化された形式のパスワードを使用したいと思います。
私はopensshを使ってパスワードをソルトしたり、Perlのcrypt()を使ってハッシュを印刷したりするのに慣れていますが、私の目的には使用できません。どんな提案がありますか?
ベストアンサー1
言及した問題を再現できません。history
コマンド出力にパスワードが表示されます。
パスワードは出力に表示され、printenv
期待export -p
どおりに機能します。このコマンドは、文字列を入力する環境変数を表示しますhttp_proxy
。
環境変数は子プロセスによって自動的に継承されますが、他のプロセスでは継承されません。同じセキュリティドメイン内のプロセスにのみ表示されるので、これがなぜ大きな問題だと思うのか理解できません。
ただし、環境変数に入れるのをやめ、代わりに通常のシェル変数を使用することができます。これは子プロセスから継承されません。おそらく、カールが環境変数にアクセスしたいので、他のすべてのコマンドではなく、そのコマンドにのみ環境変数を渡すことができます。
#!/bin/bash
echo -n "User:";
read user
echo -n "Password:";
read -s password
proxy="http://$user:$password@$domain:$portnum"
if http_proxy="$proxy" curl -silent http://www.google.com | grep authentication_failed;
then
echo NO CONNECT
else
echo OK
fi