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命令去做,还是使用管道传递参数。

总结

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

相关推荐
荣合技术服务5 小时前
Codex 实战:用 AI 写运维脚本
运维·codex
会周易的程序员5 小时前
5Draft(五帝)测试报告
服务器·c++·分布式·raft·共识算法·共识·算力服务器
李昊哲小课5 小时前
Deepin 25 上安装 Docker CE 实战记录
运维·docker·容器·deepin
pingglala5 小时前
ubuntu-nat模式不能上网解决方法
linux·运维·ubuntu
一技安身6 小时前
【信创】外网aarch64终端安装deepseek Ragflow 迁移至内网银河麒麟服务器
运维·服务器
Zixhy6 小时前
多点巡检机器人项目技术总结
linux·c++·机器人·自动驾驶
M哥支付6 小时前
快捷支付 VS 网关支付 安全对比
服务器·网络·其他·微信·金融
考虑考虑6 小时前
ElasticSearch索引命令
运维·后端·elasticsearch
2501_928996226 小时前
Agent 开发的 API 选型:从 Function Calling 到多模型协作的中科热备底层逻辑
服务器·重构·gitlab
雯宝7 小时前
7. USB 网络适配器驱动
linux