Linux下交互式与非交互式修改用户密码的例子

 更新时间:2014年11月28日 09:46:48   投稿:junjie  
这篇文章主要介绍了Linux下交互式与非交互式修改用户密码的例子,本文重点在是讲解了一个交互式修改用户密码的脚本,需要的朋友可以参考下

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

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

复制代码 代码如下:

[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

复制代码 代码如下:

# 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来处理交互式输入,从而实现非交互式的密码修改。

复制代码 代码如下:

#!/bin/sh
# \
exec expect -f "$0" "$@"
if { $argc != 2 } {
    puts "Usage: $argv0 <username> <passwd>"
    exit 1
}
set password [lindex $argv 1]
spawn passwd [lindex $argv 0]
sleep 1
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.

该脚本的执行结果为:

复制代码 代码如下:

[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.

相关文章

  • 利用Shell解析处理XML的方法汇总

    利用Shell解析处理XML的方法汇总

    这篇文章主要给大家总结介绍了关于利用Shell解析处理XML的方法,分别介绍了关于xmlint、xpath和xml2三种工具的使用,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
    2017-10-10
  • Shell脚本中判断变量为数字的3种方法

    Shell脚本中判断变量为数字的3种方法

    这篇文章主要介绍了Shell脚本中判断变量为数字的3种方法,本文分别介绍了expr、sed两种方法,并给出了一个判断脚本,需要的朋友可以参考下
    2014-12-12
  • shell中tail和head的用法小结

    shell中tail和head的用法小结

    本文主要介绍了shell中tail和head的用法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-09-09
  • awk命令、awk编程语言详细介绍和实例

    awk命令、awk编程语言详细介绍和实例

    这篇文章主要介绍了awk命令、awk编程语言详细介绍和实例,讲解了如awk中的记录、域、分割符,awk的内建变量和运算符等,需要的朋友可以参考下
    2014-07-07
  • Shell脚本实现查杀子进程、僵尸进程

    Shell脚本实现查杀子进程、僵尸进程

    这篇文章主要介绍了Shell脚本实现查杀子进程、僵尸进程,本文直接给出实现代码,实现递归找到导致进程僵死的最底层子进程并杀除,需要的朋友可以参考下
    2015-01-01
  • shell脚本学习指南[一](Arnold Robbins & Nelson H.F. Beebe著)

    shell脚本学习指南[一](Arnold Robbins & Nelson H.F. Beebe著)

    这篇文章主要介绍了shell脚本学习指南[一]Arnold Robbins & Nelson H.F. Beebe著,需要的朋友可以参考下
    2014-02-02
  • Shell文本处理三剑客之sed的使用

    Shell文本处理三剑客之sed的使用

    这篇文章主要介绍了Shell文本处理三剑客之sed的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • Linux 无法使用userdel 删除用户和组的解决方案

    Linux 无法使用userdel 删除用户和组的解决方案

    这篇文章主要介绍了Linux 无法使用userdel 删除用户和组的解决方案的相关资料,需要的朋友可以参考下
    2017-04-04
  • 实现android自动化测试部署与运行Shell脚本分享

    实现android自动化测试部署与运行Shell脚本分享

    这篇文章主要介绍了实现android自动化测试部署与运行Shell脚本分享,本文直接给出实现代码,需要的朋友可以参考下
    2015-03-03
  • Linux运维常用命令

    Linux运维常用命令

    这篇文章主要介绍了Linux在日常运维过程中需要经常用到的命令,非常的全面,有需要的小伙伴可以参考下
    2016-12-12

最新评论