程序设置linux用户名密码,在linux下修改用户密码

修改本地用户密码:

1、交互配置本地用户:

以root用户:

passwd

Changing password for user dewang.

New UNIX password:

BAD PASSWORD: it is too short

Retype new UNIX password:

passwd: all authentication tokens updated successfully.

以非root用户修改自己的密码(注后面不能跟用户名,只有root用户才允许):

passwd

Changing 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.tmp

3、自动脚本处理:

根据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 1

expect "assword:"

send "$password\r"

expect "assword:"

send "$password\r"

expect eof

说明:如果要通过shell直接调用expect相关命令,则开头中必须是如下格式,然后后面即可按照expect、TCL格式书写了。

#!/bin/sh

# \

exec expect -f "$0" ${1+"$@"}

根据echo | passwd --stdin 及 echo : | chpasswd来修改用户密码:

#!/bin/sh

if [ $# -ne 2 ] ; then

echo "Usage: `basename $0` "

exit 1

fi

#echo "$2" | passwd --stdin "$1"

echo "$1:$2" | chpasswd

if [ $? -eq 0 ] ; then

echo "change password for $1 success"

else

echo "change password for $1 failed"

fi

修改远程主机上用户密码:

1、交互配置远程用户:

echo | ssh -l root passwd --stdin

如:

echo "newpass" | ssh -l root 10.11.103.151 passwd --stdin dewang

root@10.11.103.151's password:

Changing password for user dewang.

passwd: all authentication tokens updated successfully.

echo : | ssh -l root chpasswd 2>&1

将:对先写到一文件passwd.tmp中,然后执行

chpasswd < passwd.tmp [作者未测试]

ssh -l root

.... 交互输入root密码

然后执行以上的所有可用方式均可

2、非交互配置远程用户:

则需要用到expect来进行处理,通过ssh登录到远程机器,然后结合上述配置方式,以完成自动修改用户密码。

#!/usr/bin/expect

#@brief to change user password by ssh remote machine

proc usage {funcname} {

puts "Usage: "

puts "    $funcname -user "

puts "    $funcname -root "

}

# check param

if { $argc != 5 } {

usage $argv0

exit 1

}

# get param

set host [lindex $argv 0]

set username [lindex $argv 1]

set newpasswd [lindex $argv 2]

set loginname "root"

if { [string compare [lindex $argv 3] "-user"] == 0 } {

set loginname $username

}

set passwd [lindex $argv 4]

puts "$host $username $newpasswd $loginname $passwd"

spawn ssh -l $loginname $host

expect {

"*(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\r"     send "echo \"$newpasswd\" | passwd --stdin \"$username\"\r" } else {     send "passwd\r"     expect {     "*current*assword:" {send "$passwd\r"}     "passwd: Authentication token manipulation error" {exit}     }     expect "New*assword:"     send "$newpasswd\r"     expect "Retype*assword:"     send "$newpasswd\r" } expect "*#" send "exit\r" #interact 是否将交互权接过来,如果接过来,则用户这时可进行交互操作

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值