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 "$passwordr"
expect "assword:"
send "$passwordr"
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.
时间: 2024-09-15 18:04:11

Linux 交互式和非交互式两种修改用户密码方法实例的相关文章

Linux 修改用户密码方法介绍

如果是以root身份登录,修改root密码.只要输入  代码如下 复制代码 passwd 就会出现: New password:  Retype new password:    按提示输入密码确认即可. 如果想更改其他用户密码,只要输入passwd username即可. 如:passwd kook  代码如下 复制代码 New password:   Retype new password:  例,在终端下用useradd name新建的用户,系统默认是不允许登陆的,因此必须用passwd

Ubuntu 修改用户密码方法详解

修改个人密码: 方法1: 在终端运行 usrname@usrname-laptoppasswd:~$passwd usrname 改变口令为 usrname. (当前)UNIX 口令:<输入现在的密码>  输入新的 UNIX 口令: <输入新密码>  重新输入新的 UNIX 口令:<重新输入新密码> passwd:已成功更新密码 (说明:需要修改的用户名是usrname) 方法2: 使用菜单 系统->首选项->个人信息.启动"关于usrname&q

MySQL修改用户密码方法总结

一,mysqladmin -u用户名 -p旧密码 password 新密码 1.给root加个密码ab12.首先在DOS下进入目录mysql bin,然后键入以下命令 mysqladmin -u root -password ab12 注:因为开始时root没有密码,所以-p旧密码一项就可以省略了. 2.再将root的密码改为djg345. mysqladmin -u root -p ab12 password djg345 (注意:和上面不同,下面的因为是MYSQL环境中的命令,所以后面都带一

浅析mysql交互式连接&amp;非交互式连接_Mysql

交互式操作:通俗的说,就是你在你的本机上打开mysql的客户端,就是那个黑窗口,在黑窗口下进行各种sql操作,当然走的肯定是tcp协议. 非交互式操作:就是你在你的项目中进行程序调用.比如一边是tomcat web服务器,一边是数据库服务器,两者怎么通信?在java web里,我们通常会选择hibernate或者是jdbc来连接.那么这时候就是非交互式操作.  在之前,我基本上不关系这两个属性,都是用的是mysql服务商推荐的默认值,就是8小时. 但是,从昨天开始,由于在新网租用了一个空间,而他

区分交互式和非交互式shell、登录和非登录shell之间不同

交互式shell和非交互式shell.登录shell和非登录shell的区别. 首先,这是两个不同的维度来划分的,一个是是否交互式,另一个是是否登录. 交互式shell和非交互式shell(interactive shell and non-interactive shell) 交互式模式就是在终端上执行,shell等待你的输入,并且立即执行你提交的命令.这种模式被称作交互式是因为shell与用户进行交互.这种模式也是大多数用户非常熟悉的:登录.执行一些命令.退出.当你退出后,shell也终止了

IIS5中的两种服务器端网页重定向方法

iis|服务器|网页|iis|服务器 IIS5中的两种服务器端网页重定向方法      在IIS5中提供了两种服务器端网页重定向(或者说转向)的方法, 一个是Server.Transfer方法, 另外一个是Server.Execute方法. 说它们是服务器端重定向,是因为在不同页面之间的转向是直接在服务器端 完成的, 客户端只能看到结果,而不能看到转向的过程. 这同以往我们在IIS4使用的 Response.Redirect 方法是不同的.      以前, 当我们需要从一个页面转向到另外一个页

Win7系统死机常见的两种原因及解决方法

  Win7系统死机常见的两种原因及解决方法           一.开机自检时死机与解决方案 当用户在开启系统时,开机自检时发生死机的话,当主板能通电自检时死机. 解决方案:可尝试重启系统,如果重启后依旧死机,那就很有可能是内存.主板等硬件的问题了. 此时需要对板卡.内存条.cpu等进行拔插,看看是否接触不良的问题.如果还是不行的话,只能使用"替换法"一件一件地进行排除,直到找出问题为止. 二.系统定时死机与解决方案 系统运行一段时间后,有规律地死机的话.很可能是由于电源管理的问题,

为什么android会有两种启动Aactivity的方法,这样设计的初衷是什么

问题描述 为什么android会有两种启动Aactivity的方法,这样设计的初衷是什么 startActivity(Intent)/startActivityForResult(Intent):来启动一个Activity 这两种方法有和区别和联系 解决方案 参考这个, 解决方案二: 另一种可以反回信息的,两个activity可以交互 解决方案三: android:两种启动activity的方法Android Activity启动的两种方法android 启动 service 的两种方法

linux shell脚本问题,关于自动修改系统密码

问题描述 linux shell脚本问题,关于自动修改系统密码 操作系统 radhat 就是多个服务器每天就要进行一次密码修改,所以在想能不能用shell写一个命令脚本,然后放在一台服务器上面,等到需要修改密码的时候,就修改脚本里面的日期参数进行跑脚本修改,求大神帮助,新手,也可沾些代码我学习一下,不适合的地方,我自己改改. 解决方案 用crontabhttp://www.cnblogs.com/kaituorensheng/p/4494321.htmlhttp://os.51cto.com/a