Linux下交互式與非交互式修改用戶密碼的例子
最近管理的一批機(jī)器,有個(gè)需求是要統(tǒng)一修改一個(gè)帳號(hào)的用戶名密碼,比如將qa帳號(hào)的密碼改為1234,后來(lái)還為了腳本化,很方便的執(zhí)行,還使用了非交互式地修改用戶的密碼。簡(jiǎn)單記錄一下吧。
1. 交互式配置本地用戶的密碼:passwd 命令
[root@host_221-81 ~]# passwd qa
Changing password for user qa.
New password:
BAD PASSWORD: it is too short
BAD PASSWORD: is too simple
Retype new password:
passwd: all authentication tokens updated successfully.
2. 非交互式修改本地用戶的密碼:chpasswd
# chpasswd命令使用起來(lái)很簡(jiǎn)潔
[root@host_221-81 ~]# echo "qa:1234" | chpasswd
# 使用passwd命令,也可以實(shí)現(xiàn)非交互式修改密碼
[root@host_221-81 ~]# echo "1234" | passwd --stdin "qa"
Changing password for user qa.
passwd: all authentication tokens updated successfully.
3. 使用expect來(lái)處理交互式輸入,從而實(shí)現(xiàn)非交互式的密碼修改。
#!/bin/sh
# \
exec expect -f "$0" "$@"
if { $argc != 2 } {
puts "Usage: $argv0 <username> <passwd>"
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
注意:腳本的第二行,這種寫法可能比較陌生,這是在TCL語(yǔ)言中的語(yǔ)法,The backslash is recognized as part of a comment to sh, but in Tcl the backslash continues the comment into the next line which keeps the exec command from executing again.
該腳本的執(zhí)行結(jié)果為:
[root@smilejay ~]# ./change-pwd-expect.sh qa 1234
spawn passwd qa
Changing password for user qa.
New password:
BAD PASSWORD: it is too short
BAD PASSWORD: is too simple
Retype new password:
passwd: all authentication tokens updated successfully.
相關(guān)文章
linux shell實(shí)現(xiàn)批量主機(jī)遠(yuǎn)程執(zhí)行命令腳本
這篇文章主要介紹了linux shell實(shí)現(xiàn)批量主機(jī)遠(yuǎn)程執(zhí)行命令腳本,文章通過代碼示例講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-09-09shell腳本實(shí)現(xiàn)公司項(xiàng)目部署交付環(huán)境預(yù)檢查的思路
這篇文章主要介紹了shell腳本實(shí)現(xiàn)公司項(xiàng)目部署交付環(huán)境預(yù)檢查的思路,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09linux下安裝配置Memcache和PHP環(huán)境的實(shí)現(xiàn)
下面小編就為大家?guī)?lái)一篇linux下安裝配置Memcache和PHP環(huán)境的實(shí)現(xiàn)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2017-02-02linux數(shù)據(jù)庫(kù)備份并通過ftp上傳腳本分享
這篇文章主要介紹了linux數(shù)據(jù)庫(kù)備份并通過ftp上傳腳本,腳本還可以備份網(wǎng)站,需要的朋友可以參考下2014-03-03linux多線程編程詳解教程(線程通過信號(hào)量實(shí)現(xiàn)通信代碼)
這篇文章主要介紹了linux多線程編程詳解教程,提供線程通過信號(hào)量實(shí)現(xiàn)通信的代碼,大家參考使用吧2013-12-12如何使用 Shell 腳本執(zhí)行 .NET Core 應(yīng)用
這篇文章主要介紹了如何使用 Shell 腳本執(zhí)行 .NET Core 應(yīng)用,幫助大家更好的理解和使用shell 腳本,感興趣的朋友可以了解下2020-09-09linux shell之控制臺(tái)打印各種顏色字體和背景的實(shí)現(xiàn)方法
今天小編就為大家分享一篇關(guān)于linux shell之控制臺(tái)打印各種顏色字體和背景的實(shí)現(xiàn)方法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-04-04