如何将密码作为变量传递到 bash 命令行而不显示它并将其显示为 *****

如何将密码作为变量传递到 bash 命令行而不显示它并将其显示为 *****

我们有一些通过命令行执行的 bash 命令

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

在命令行中,我们需要传递密码,但在执行时会显示密码。有什么方法可以修改 bash 命令并将“密码显示为 **** ”。

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隐藏其秘密。

相关内容