Linux에서 사용자 비밀번호를 상호작용과 비 상호작용으로 수정하는 예

2087 단어
최근에 관리된 일부 기계들은 하나의 계정의 사용자 이름 비밀번호를 통일적으로 수정하는 것이 필요하다. 예를 들어qa계정의 비밀번호를 1234로 변경한 후에 스크립트화를 위해 편리하게 집행하고 비교환식으로 사용자의 비밀번호를 수정했다.간단하게 기록해 주세요.
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
[root@host_221-81 ~]# echo "qa:1234" | chpasswd
 
# passwd ,
[root@host_221-81 ~]# echo "1234" | passwd --stdin "qa"
Changing password for user qa.
passwd: all authentication tokens updated successfully.

3. expect를 사용하여 인터랙티브 입력을 처리하여 비 인터랙티브 암호 수정을 실현한다.
 
  
#!/bin/sh
# \
exec expect -f "$0" "$@"
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

참고: 스크립트의 두 번째 행은 생소할 수 있습니다. TCL 언어에서 사용하는 문법입니다. 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.
이 스크립트의 실행 결과는 다음과 같습니다.
 
  
[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.

좋은 웹페이지 즐겨찾기