IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

Linux修改用户密码-交互式与非交互式

笑遍世界 2015-01-27 22:36:36 累计浏览 2,799 次
本机暂存

最近管理的一批机器,有个需求是要统一修改一个帐号的用户名密码,比如将qa帐号的密码改为1234,后来还为了脚本化,很方便的执行,还使用了非交互式地修改用户的密码。简单记录一下吧。

1. 交互式配置本地用户的密码:passwd 命令

1
2
3
4
5
6
7
[root@host_221-81 ~]# passwd qa
Changing password for user qa.
New password: 
BAD PASSWORD: it is too short
BAD PASSWORD: is too simple
Retype new password: 
passwd: all authentication tokens updated successfully.

2. 非交互式修改本地用户的密码:chpasswd

1
2
3
4
5
6
7
# chpasswd命令使用起来很简洁[root@host_221-81 ~]# echo "qa:1234" | chpasswd
 
# 使用passwd命令,也可以实现非交互式修改密码[root@host_221-81 ~]# echo "1234" | passwd --stdin "qa"
Changing password for user qa.
passwd: all authentication tokens updated successfully.

3. 使用expect来处理交互式输入,从而实现非交互式的密码修改。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/sh# \exec expect -f"$0""$@"if{$argc!= 2}{puts "Usage: $argv0 <username> <passwd>"exit1}set password [lindex $argv1]
spawn passwd[lindex $argv0]sleep1
expect "assword:"
send "$password\r"
expect "assword:"
send "$password\r"
expect eof

注意:脚本的第二行,这种写法可能比较陌生,这是在TCL语言中的语法,The backslash is recognized as part of a comment to sh, but in Tcl the backslash continues the comment into the next line which keeps the exec command from executing again.

该脚本的执行结果为:

1
2
3
4
5
6
7
8
[root@smilejay ~]# ./change-pwd-expect.sh qa 1234
spawn passwd qa
Changing password for user qa.
New password: 
BAD PASSWORD: it is too short
BAD PASSWORD: is too simple
Retype new password: 
passwd: all authentication tokens updated successfully.

参考资料:http://wiki.tcl.tk/708#pagetoc593413fa

同分类推荐文章

  1. 从零重建 macOS 开发机:可复现的环境初始化流程 (2026-06-14 20:36:00)
  2. 百度物理网络监控工具开源第二弹:毫秒级监控工具 baize,让你的网络问题无处遁形 (2026-06-11 08:10:28)
  3. How to Set Up Homebrew Tap for Private CLI Tools: A Complete Guide (2026-05-27 02:13:03)

查看更多 DevOps 文章 →

建议继续学习

  1. Linux如何统计进程的CPU利用率 (累计阅读 16,307)
  2. 我的 RHCA 之路 (累计阅读 14,013)
  3. Linux内存点滴 用户进程内存空间 (累计阅读 13,229)
  4. 给程序员新手的一些建议 (累计阅读 13,089)
  5. Linux 性能监控、测试、优化工具 (累计阅读 13,011)
  6. 关于linux内存free的一些事情 (累计阅读 12,867)
  7. ps - 按进程消耗内存多少排序 (累计阅读 12,687)
  8. Google怎么用linux (累计阅读 12,581)
  9. Linux Used内存到底哪里去了? (累计阅读 11,867)
  10. find命令的一点注意事项 (累计阅读 11,865)