本文章總結了如何手動、自動修改本地使用者密碼及遠端機器的使用者密碼。對做自動化測試提供了自動修改使用者密碼的原理及方法。
修改本地使用者密碼:
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 ...