Linux技能篇-非交互式修改密码

今天的文章没有格式,简单分享一个小技能,就是标题所说--非交互式修改密码。

一、普通方式修改用户密码

最普通的修改密码的命令就是passwd命令

bash 复制代码
[root@localhost ~]# passwd root
Changing password for user root.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
[root@localhost ~]#

在这种方式下,修改密码就需要重复输入两次密码,这在初学的时候没有问题,但是如果密码复杂一点,输入两次,就会出现输错或者输入效率很低的情况。假如有50台机器需要修改密码,这时候passwd命令就是灾难!你要输50次passwd命令,100遍密码!!!这时候就非常需要一个非交互命令来帮助你减轻工作负担,当然,如果你会使用ssh非交互做一个脚本出来,那更好,当然,这就比较考验的Linux脚本功底了。

二、非交互修改密码

1. passed命令+printf命令实现

先看演示,我要改的密码是:5201314my@

bash 复制代码
[root@localhost ~]# printf "5201314my@\n5201314my@\n" | passwd root
Changing password for user root.
New password: Retype new password: passwd: all authentication tokens updated successfully.

这种方式就是把你要修改的密码通过printf打印参数,将参数通过管道传递到passwd命令中,很容易理解,但是这方法不常用,命令相对还是很繁琐,但是易于理解。

2. usermod命令实现

先看演示,我要改的密码是:5201314my@

bash 复制代码
[root@localhost ~]# usermod --password $(echo '5201314my@' | openssl passwd -1 -stdin) root
[root@localhost ~]# 

这个用法不常见,这个几乎没有人去这么用,这个会比你直接去修改输入还多,只是在这里展示可以这么去做,不做解释。

3.paasswd命令+EOF(自定义终止符)实现

先看演示,我要改的密码是:5201314my@

bash 复制代码
[root@localhost ~]# passwd root << EOF
> 5201314my@
> 5201314my@
> EOF
Changing password for user root.
New password: Retype new password: passwd: all authentication tokens updated successfully.
[root@localhost ~]# 

这种方法和printf有点类似,将密码通过重定向的方式传输到passwd命令中,去自动做交互,但是依然不够简洁。

4.passwd命令+管道+echo命令实现

先看演示,我要改的密码是:5201314my@

bash 复制代码
[root@localhost ~]# echo '5201314my@' | passwd --stdin root
Changing password for user root.
passwd: all authentication tokens updated successfully.

stdin是接受echo后面的字符串做为密码,说白了是还是通过变量赋值和管道传参来实现,这个相比上面三种,就只需要写一次密码,用熟练了相当好使。
注意:echo后面不要忘了加引号把用户名和新密码引起来

5.chpasswd命令实现

先看演示,我要改的密码是:5201314my@

bash 复制代码
[root@localhost ~]# echo "root:5201314my@" | chpasswd
[root@localhost ~]# 

这里使用的是chpasswd命令去做,还是使用管道传递参数。

总结

推荐使用第四种和第五种,他们的区别就是第四种有回显,第五种没有。其他的凭爱好研究吧,看起来貌似并没有减轻干活的负担。

相关推荐
软件技术员19 分钟前
Let‘s Encrypt SSL证书:acmessl.cn申请免费3个月证书
服务器·网络协议·ssl
哎呦喂-ll30 分钟前
Linux进阶:环境变量
linux
耗同学一米八32 分钟前
2024 年河北省职业院校技能大赛网络建设与运维赛项样题四
运维·网络
Rverdoser32 分钟前
Linux环境开启MongoDB的安全认证
linux·安全·mongodb
PigeonGuan43 分钟前
【jupyter】linux服务器怎么使用jupyter
linux·ide·jupyter
一条晒干的咸魚1 小时前
【Web前端】创建我的第一个 Web 表单
服务器·前端·javascript·json·对象·表单
东华果汁哥1 小时前
【linux 免密登录】快速设置kafka01、kafka02、kafka03 三台机器免密登录
linux·运维·服务器
咖喱鱼蛋2 小时前
Ubuntu安装Electron环境
linux·ubuntu·electron
ac.char2 小时前
在 Ubuntu 系统上安装 npm 环境以及 nvm(Node Version Manager)
linux·ubuntu·npm