關於linux下(自動)修改使用者密碼

2021-06-21 21:33:27 字數 2950 閱讀 8896

本文章總結了如何手動、自動修改本地使用者密碼及遠端機器的使用者密碼。對做自動化測試提供了自動修改使用者密碼的原理及方法。

修改本地使用者密碼:

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命令修改使用者密碼,格式為:***.sh

#!/bin/sh

# \exec expect -f "$0" $

if

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" $ 

根據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

[email protected]'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    

# check param

if

# get param

set host [lindex $argv 0]

set username [lindex $argv 1]

set newpasswd [lindex $argv 2]

set loginname "root"

if

set passwd [lindex $argv 4]

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

spawn ssh -l $loginname $host

expect

"*assword:*"

if sshkey == 1

}expect "*#"

if else

"passwd: authentication token manipulation error"

}expect "new*assword:"

send "$newpasswd\r"

expect "retype*assword:"

send "$newpasswd\r"

}expect "*#"

send "exit\r"

#interact 是否將互動權接過來,如果接過來,則使用者這時可進行互動操作

原文:

VisualSVN Server 修改使用者密碼

visualsvn server是非常方便好用的svn伺服器端軟體,但有個問題,你在伺服器端建立了使用者名稱密碼後,使用者無法自己修改密碼,據說visualsvn的客戶端可以修改使用者密碼,但客戶端是收費軟體。visualsvn server是基於apache的,所以密碼可以修改可以通過網頁來修改。...

shell chpasswd 命令 修改使用者密碼

使用useradd 命令增加乙個使用者後,它預設是沒有設定密碼的。如果需要給使用者設定或者修改密碼,一般會使用passwd命名。但是passwd命令有乙個缺陷,它需要人工互動操作。如果你是一名系統管理員,需要一次性新建大量的使用者,那麼,手工操作無疑是不可能的事情。這種情況有兩種方法可以解決。乙個是...

Linux建立檢視刪除修改使用者 設定使用者密碼

檢視所有使用者cat etc passwd新增使用者useradd zrt給使用者設定密碼passwd zrt新裝的 linux 系統預設 root 使用者是沒有設定密碼的,以下給 root 使用者設定密碼 sudo passwd root刪除使用者userdel zrtuserdel f zrt ...