[转帖]Linux平台shell脚本输入密码,不显示明文
需求:shell脚本中输入密码,要求不显示明文,需要将其转换为“*”星号,或者不显示
实现方案:有两种实现方案,一是通过stty命令来实现,二是直接使用read来实现
方案一:使用stty来实现
使用stty -echo可以实现不显示密码,就像登录Linux系统输入密码时一样,stty的代码如下:
-
#!/bin/bash
-
-
stty -echo # 不显示用户输入
-
read -p "请输入密码:" pwdstr
-
stty echo # 恢复显示用户输入
-
echo
-
-
echo "pwdstr:$pwdstr"
结果如下:
方案二:read实现方案
使用read -n 1 -s -p "" str可实现单字符输入,这样便于将输入字符转为“*”星号,代码如下
-
echo -e "请输入密码: \c"
-
pwdstr=''
-
while : ;
-
do
-
read -n 1 -s -p "" pw
-
if [ $pw ]; then
-
pwdstr=${pwdstr}$pw
-
echo -e "*\c" # 如果不需要显示,把这条命令删掉即可
-
else
-
echo
-
break
-
fi
-
done
-
-
echo "password is :$pwdstr"
结果如下:
总结:如果不显示密码,推荐使用方案一(stty),更方便,如果需要将密码转成“*”星号,则推荐使用方案二(read)
例子:下边是一个使用方案二(read)获取密码的完整例子,可参考
-
#!/bin/bash
-
-
# 输入的密码,每次用完该变量需要将其置为空
-
INPUTEDPWD=''
-
-
function getPwd() {
-
-
pwdPrompt="请输入${1}密码: "
-
confirmPwdPrompt="请再次输入${1}密码: "
-
-
# 输入密码的函数
-
function inputPwd() {
-
pwdstr=''
-
while : ;
-
do
-
read -n 1 -s -p "" pw
-
if [ $pw ]; then
-
pwdstr=${pwdstr}$pw
-
echo -e "*\c"
-
else
-
echo
-
break
-
fi
-
done
-
}
-
-
# 第一次输入密码
-
echo -e "${pwdPrompt}\c"
-
inputPwd
-
if [ ! $pwdstr ]; then
-
echo "密码不能为空"
-
return
-
fi
-
password1=$pwdstr
-
-
# 第二次输入密码
-
echo -e "${confirmPwdPrompt}\c"
-
inputPwd
-
password2=$pwdstr
-
-
# 两次密码进行比较
-
if [ "$password1" != "$password2" ]; then
-
echo "密码不一致"
-
return
-
fi
-
-
# 将正确的密码赋值给INPUTEDPWD
-
INPUTEDPWD=$password2
-
-
}
-
-
# 调用获取密码的函数
-
getPwd "管理员admin的"
-
-
# 从INPUTEDPWD中取密码
-
validpwd=$INPUTEDPWD
-
INPUTEDPWD=''
-
-
# 若密码不为空,说明密码获取成功,否则为失败
-
if [ $validpwd ]; then
-
echo "validpwd: $validpwd"
-
else
-
exit 1
-
fi
[转帖]Linux平台shell脚本输入密码,不显示明文的更多相关文章
- Linux常用Shell脚本珍藏【转载】
我们在运维中,尤其是linux运维,都知道脚本的重要性,脚本会让我们的 运维事半功倍,所以学会写脚本是我们每个linux运维必须学会的一门功课,这里收藏linux运维常用的脚本.如何学好脚本,最关键的 ...
- 详解Linux交互式shell脚本中创建对话框实例教程_linux服务器
本教程我们通过实现来讲讲Linux交互式shell脚本中创建各种各样对话框,对话框在Linux中可以友好的提示操作者,感兴趣的朋友可以参考学习一下. 当你在终端环境下安装新的软件时,你可以经常看到信息 ...
- 使用C#给Linux写Shell脚本(下篇)
在上篇的<使用C#给Linux写Shell脚本>结尾中,我们留下了一个关于C#如何调用BashShell的问题.在文章发布之后,我留意到有读者留言推荐使用“Pash”(一款类PowerSh ...
- Linux/Unix shell 脚本中调用SQL,RMAN脚本
Linux/Unix shell脚本中调用或执行SQL,RMAN 等为自动化作业以及多次反复执行提供了极大的便利,因此通过Linux/Unix shell来完成Oracle的相关工作,也是DBA必不可 ...
- 从windows到linux的shell脚本编码和格式问题
从windows到linux的shell脚本编码和格式问题 从windows到Linux的shell脚本编码和格式问题 1.异常问题 :set ff=unix 启动脚本在启动时报错比如执行sh s ...
- Linux执行shell脚本方式及区别&命令后台运行
Linux执行shell脚本方式及区别&命令后台运行 http://blog.csdn.net/heqiyu34/article/details/19089951/
- Linux简单Shell脚本监控MySQL、Apache Web和磁盘空间
Linux简单Shell脚本监控MySQL.Apache Web和磁盘空间 1. 目的或任务 当MySQL数据库.Apache Web服务器停止运行时,重新启动运行,并发送邮件通知: 当服务器磁盘的空 ...
- Linux:从windows到linux的shell脚本编码和格式
从windows到linux的shell脚本编码和格式问题 异常问题 :set ff=unix 启动脚本在启动时报错比如执行sh start.sh,时会报Command not found等等的错误, ...
- 【转】shell脚本中echo显示内容带颜色
shell脚本中echo显示内容带颜色显示,echo显示带颜色,需要使用参数-e.格式如下: echo -e "\033[41;36m something here \033[0m&qu ...
- shell脚本中echo显示内容带颜色
转自:http://www.cnblogs.com/lr-ting/archive/2013/02/28/2936792.html shell脚本中echo显示内容带颜色显示,echo显示带颜色,需要 ...
随机推荐
- Java PDF文档转换 — PDF转Excel、SVG转PDF
概述 Spire.PDF for Java支持将PDF文档高质量地转换为XPS.图片.SVG.Word.HTML和PDF/A格式,以及支持将XPS.HTML文档转换为PDF格式.本文将通过代码演示来介 ...
- 实战案例丨代码优化:如何去除context中的warning?
在一个java语言群里面,有人抛了这么一段代码出来,问题是出现了下下图中的warning,问有什么好的方法消除 这种强转都是因为类型链条断掉了,写入的时候擦除了类型,读出来的时候也就只能强转了,那个i ...
- “pip不是内部或外部命令,也不是可运行的程序或批处理文件” 到底有多么神秘
摘要:pip不是内部或外部命令,也不是可运行的程序或批处理文件到底有多么神秘? 本文分享自华为云社区<揭开「pip不是内部或外部命令,也不是可运行的程序或批处理文件」的神秘面纱>,作者:A ...
- .Net Core NLog 配置
using NLog; private static Logger logger = LogManager.GetCurrentClassLogger(); //初始化日志类 NLog.config ...
- Xml Entity 实体互转(XStream)
http://x-stream.github.io/tutorial.html 项目中用了 JAXB 方式 Xml Entity 实体互转(JAXB) 实体: import com.thoughtwo ...
- 重磅 | Hugging Face 第一本中文图书正式出版!
Hugging Face 为机器学习从业者们提供了一个协作和交流的平台,你可以在 Hugging Face Hub 上开源自己的机器学习模型.数据集或者创建机器学习应用等,Hugging Face 还 ...
- Modern C++ Starter Kits Share
初入 C++ 搬砖,在团队中开发实际上很少亲自从零开始搭建C++的完整项目,99%时候都是使用基础架构团队或者CI/CD团队搭建好的框架.这里分享几个配置C++项目的模版,它们一般会涉及三方库管理.格 ...
- AtCoder Beginner Contest 242(C~E)
AB 水题 C - 1111gal password 题意:给出 N(\(2\le N\le 1e6\))求满足以下条件的 \(X\) 的数量,需除以模 (\(998244353\)) $X $ 是 ...
- # 0x56 动态规划-状态压缩DP
0x56 动态规划-状态压缩DP Mondriaan's Dream Description Squares and rectangles fascinated the famous Dutch pa ...
- 详解异步任务 | 看 Serverless Task 如何解决任务调度&可观测性中的问题
在上篇文章<解密函数计算异步任务能力之「任务的状态及生命周期管理」>中,我们介绍了任务系统的状态管理,并介绍了用户应如何根据需求,对任务状态信息进行实时的查询等操作.在本篇中我们将会进一步 ...