パスワードを表示せずにbashコマンドラインに変数として渡し、*****で表示する方法

パスワードを表示せずにbashコマンドラインに変数として渡し、*****で表示する方法

コマンドラインを介して実行されるいくつかのbashコマンドがあります。

Sample Bash Command: ksh Script.ksh Filename filepath userid host password 

コマンドラインからパスワードを渡す必要がありますが、実行時にパスワードが表示されます。 bashコマンドを修正して「password as ****」を表示する方法はありますか?

Sample: ksh Script.ksh Employee.txt /home/opt/ empuser 10.20.30.99 abc@123 

上記のbashコマンドは次のように変更できます。

Sample: ksh Script.ksh Employee.txt /home/opt/ empuser 10.20.30.99 ********

スクリプト内の値を読みますか?

Script Content: 

var1 = $1 
var2 = $2 
var3 = $3 
varpassword = $4 

..... reading password and running sftp command

答え1

コマンドを入力すると、入力した内容は画面に残ります。tputを使用して上記の行を削除してみることができます。

#!/bin/bash
  
sleep 5
tput cuu 1
echo "Running: $0 $1 $2 $3 *********                                        "
sleep 5

端末が十分に広くプロンプトが十分に短い場合は、この方法が有効になる可能性があります。

または単に画面を消去してくださいclear

ただし、パスワードはまだに表示されますps -ef。コマンドラインでパスワードを設定するのは一般的に悪い考えです。たとえば、ssh秘密を隠す方法を知りたい場合があります。

関連情報