乐昌市建设网站,做58网站每天可以发几条,网站建设搜索优,网页设计的发展前景如何本文章总结了如何手动、自动修改本地用户密码及远程机器的用户密码。对做自动化测试提供了自动修改用户密码的原理及方法。修改本地用户密码#xff1a;1、交互配置本地用户#xff1a;以root用户#xff1a;passwd Changing password for user dewang.New UNIX password:BA…本文章总结了如何手动、自动修改本地用户密码及远程机器的用户密码。对做自动化测试提供了自动修改用户密码的原理及方法。修改本地用户密码1、交互配置本地用户以root用户passwd Changing password for user dewang.New UNIX password:BAD PASSWORD: it is too shortRetype new UNIX password:passwd: all authentication tokens updated successfully.以非root用户修改自己的密码(注后面不能跟用户名只有root用户才允许)passwdChanging password for user dewang.Changing password for dewang(current) UNIX password:New UNIX password:Retype new UNIX password:passwd: all authentication tokens updated successfully.2、非交互配置本地用户echo | passwd --stdin 或echo : | chpasswd或将:对先写到一文件passwd.tmp中然后执行chpasswd passwd.tmp3、自动脚本处理根据passwd命令修改用户密码格式为xxx.sh #!/bin/sh# \exec expect -f $0 ${1$}if { $argc ! 2 } {puts Usage: $argv0 exit 1}set password [lindex $argv 1]spawn passwd [lindex $argv 0]sleep 1expect assword:send $password\rexpect assword:send $password\rexpect eof说明如果要通过shell直接调用expect相关命令则开头中必须是如下格式然后后面即可按照expect、TCL格式书写了。#!/bin/sh# \exec expect -f $0 ${1$}根据echo | passwd --stdin 及 echo : | chpasswd来修改用户密码#!/bin/shif [ $# -ne 2 ] ; thenecho Usage: basename $0 exit 1fi#echo $2 | passwd --stdin $1echo $1:$2 | chpasswdif [ $? -eq 0 ] ; thenecho change password for $1 successelseecho change password for $1 failedfi修改远程主机上用户密码1、交互配置远程用户echo | ssh -l root passwd --stdin 如echo newpass | ssh -l root 10.11.103.151 passwd --stdin dewangroot10.11.103.151s password:Changing password for user dewang.passwd: all authentication tokens updated successfully.或echo : | ssh -l root chpasswd 21或将:对先写到一文件passwd.tmp中然后执行chpasswd passwd.tmp 作者未测试或ssh -l root .... 交互输入root密码然后执行以上的所有可用方式均可2、非交互配置远程用户则需要用到expect来进行处理通过ssh登录到远程机器然后结合上述配置方式以完成自动修改用户密码。#!/usr/bin/expect#brief to change user password by ssh remote machineproc usage {funcname} {puts Usage: puts $funcname -user puts $funcname -root }# check paramif { $argc ! 5 } {usage $argv0exit 1}# get paramset host [lindex $argv 0]set username [lindex $argv 1]set newpasswd [lindex $argv 2]set loginname rootif { [string compare [lindex $argv 3] -user] 0 } {set loginname $username}set passwd [lindex $argv 4]puts $host $username $newpasswd $loginname $passwdspawn ssh -l $loginname $hostexpect {*(yes/no)* { send yes\r; set sshkey 1 }*assword:* { send $passwd\r; set sshkey 0 }if sshkey 1 {expect *password:*send $passwd\r}}expect *#if { [string compare $loginname root] 0 } {#send echo \$username:$newpasswd\ | chpasswd\rsend echo \$newpasswd\ | passwd --stdin \$username\\r} else {send passwd\rexpect {*current*assword: {send $passwd\r}passwd: Authentication token manipulation error {exit}}expect New*assword:send $newpasswd\rexpect Retype*assword:send $newpasswd\r}expect *#send exit\r#interact 是否将交互权接过来如果接过来则用户这时可进行交互