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.

相关文章

  • Linux 实现压缩保留源文件的方法

    Linux 实现压缩保留源文件的方法

    下面小编就为大家分享一篇Linux 实现压缩保留源文件的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • shell随机定时修改密码change_passwd.sh

    shell随机定时修改密码change_passwd.sh

    这篇文章主要介绍了shell随机定时修改密码change_passwd.sh,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12
  • shell(bash)下“time” 命令的输出详解

    shell(bash)下“time” 命令的输出详解

    这篇文章主要给大家介绍了关于shell(bash) “time” 命令的输出,文中给出了详细的示例代码,相信对大家的理解和学习具有一定的参考借鉴价值,有需要的朋友们下面来一起看看吧。
    2016-12-12
  • 找出Linux中所有真实用户的命令详解

    找出Linux中所有真实用户的命令详解

    接触过 Linux 的小伙伴们都知道在 Linux (或者说类 Unix)中,有三种类型的用户,超级用户,系统用户和普通用户,那么如何快速找出 Linux 中的真实用户呢,文中给大家介绍的非常详细,需要的朋友可以参考下
    2024-02-02
  • Shell脚本生成随机密码的若干种可能

    Shell脚本生成随机密码的若干种可能

    这篇文章主要介绍了Shell脚本生成随机密码的若干种可能,需要的朋友可以参考下
    2017-09-09
  • 浅谈shell脚本中的控制流结构

    浅谈shell脚本中的控制流结构

    今天小编就为大家分享一篇关于浅谈shell脚本中的控制流结构,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02
  • Linux命令之tail的使用及应用场景介绍

    Linux命令之tail的使用及应用场景介绍

    tail 是一条在 Linux 系统中常用的命令行工具,用来显示文件的末尾内容,tail 的功能强大且简洁,能够满足多种应用需求本文就给大家介绍一下Linux命令tail的使用及应用场景,需要的朋友可以参考下
    2023-09-09
  • Shell中的for循环总结

    Shell中的for循环总结

    这篇文章主要介绍了Shell中的for循环总结,本文讲解了shell中for循环用法、shell下for循环的几种方法等内容,需要的朋友可以参考下
    2015-05-05
  • shell脚本实现分日志级别输出的方法

    shell脚本实现分日志级别输出的方法

    下面小编就为大家带来一篇shell脚本实现分日志级别输出的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • linux whatis与whatis database 使用及查询方法(man使用实例)

    linux whatis与whatis database 使用及查询方法(man使用实例)

    在学习man命令时候,估计很多朋友都发现有man –f ,man –k 参数,可以查出很多数据。这些有的与man手册页相同,有些不是属于手册页的。它们数据怎么收集来的,并且whatis是怎么样工作的
    2015-10-10

最新评论