ログで実行されたコマンドを表示するには、スクリプトで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節。 「パスワードセキュリティに関するエンドユーザーガイド」。