日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux下执行shell修改用户密码,[转] 关于linux下通过shell命令(自动)修改用户密码...

發布時間:2025/3/15 linux 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux下执行shell修改用户密码,[转] 关于linux下通过shell命令(自动)修改用户密码... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

修改本地用戶密碼:

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 是否將交互權接過來,如果接過來,則用戶這時可進行交互

總結

以上是生活随笔為你收集整理的linux下执行shell修改用户密码,[转] 关于linux下通过shell命令(自动)修改用户密码...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。