set -xがオンのときに変数値を隠す方法

set -xがオンのときに変数値を隠す方法

ログで実行されたコマンドを表示するには、スクリプトでset -xを使用する必要があります。

ただし、変数の1つがパスワードなので、パスワードが計画テキストに表示されます。

変数を1つだけ隠す方法はありますか?

つまり:

スクリプト:

pas=test123

set -x
mysql -uroot -p$pas

出力:

[root@server1]# ./teste.sh
++ mysql -uroot -ptest123

test123出力から削除したいです。

答え1

作る~/.my.cnf

[client]
user=DB_user
password="xxx"

これで、スクリプトで-uフラグを使用せずにログインできます。-p

set -x問題は、スクリプトの出力だけでなく、ほとんどのシステムで実行されているすべてのプロセスのコマンドライン引数がすべてのpsユーザーに表示されるため、パスワードを渡すことは完全に安全ではないことに注意してください。これはMySQLのマニュアルにも言及されています。オプションから--password

コマンドラインでパスワードを指定することは安全ではないと見なされるべきです。コマンドラインにパスワードを入力したくない場合は、オプションファイルを使用してください。バラより8.1.2.1節。 「パスワードセキュリティに関するエンドユーザーガイド」

関連情報