私はwatch
これをMySQLレプリケーションスレーブの進行状況を監視するために使用しています。今設定したように、パスワードが出力watch
ヘッダーに表示されます。誰かが私のパスワードを盗んでいくかとは心配しませんが、原則として私の肩越しに近づいて垣間見る人に私のパスワードを知らせたくありません。
現在使用しているコマンドラインはwatch
次のとおりです。
watch -n1 -d mysql -pmypass -e "'show slave status\G'"
mysql
小さなシェルスクリプトからコマンドを隠す必要がありますか?
答え1
コマンドラインでパスワードを提供するよりも優れたオプションは、~/.my.cnf
資格情報を含むファイルを作成することです。
[client]
password=something
これにより、誰も出力ps
やシェルの履歴を見ることができなくなります。
つまり、次のようにwatch
ヘッダーを完全にドラッグできます。-t
または--no-title
オプション、こうなります:
間隔、コマンド、および現在時刻のタイトルと、その後に空白行が表示されるディスプレイの上部を閉じます。
あなたが望むよりも多くの情報を失うことになりますが、これはそれほど重要ではありません。それ以外の場合は、提案されているようにシェルスクリプトも機能します。
答え2
画面にのみ表示されるのではなく、ps
出力、~/.bash_history
(出力はユーザーと管理者のみが読むことができる必要があります)、一部の監査またはパフォーマンスログにも表示されます。
コマンドの引数としてパスワードを渡さないでください。コマンドのパラメータは公開された知識と見なされるべきです。
mysqlの場合は、~/.my.cnf
次のように使用します。マイケルが見せたまたは、他のファイル(それ自体でのみ読み取ることができます)から次のように渡します。--defaults-extra-file=the-file
答え3
実行時にパスワードを入力できますか?端末に表示したり、履歴に保存することなく、bashスクリプトから読み取ることができます。
#!/bin/bash
if ! IFS= read -rs -p "Enter password: " password < /dev/tty 2> /dev/tty
then
echo "Password entry failed"
exit 1
fi
somecommand -user me -password $password
他の答えを読んだ。はいps
ただし、この問題はプロセスがあるため影響を受けやすいです。somecommand