天天看點

shell expect自動化建立使用者,修改密碼,多台機器一鍵免秘鑰登入

1.建立使用者–50台機器上建立使用者,不可能手動去幹的。

  • useradd.sh中的代碼:
#!/bin/bash  
user=cow
password=cow
useradd -d /home/$user $user
expect << EOF  
spawn passwd $user  
expect "New password:"  
send "${password}\r"  
expect "Retype new password:"  
send "${password}\r"  
expect eof;  
EOF
           
  • 執行該代碼:

shell expect自動化建立使用者,修改密碼,多台機器一鍵免秘鑰登入

shell expect自動化建立使用者,修改密碼,多台機器一鍵免秘鑰登入

- 單台機器上執行該腳本那麼多台機器呢?

- 還記得之前我們用過salt的這個工具麼?

1.将該腳本傳到其他機器上。隻是一條指令就可以了。

shell expect自動化建立使用者,修改密碼,多台機器一鍵免秘鑰登入

這樣就将該腳本傳到所有的機器上了,*代表所有。

2.執行該腳本。我們以s2這個機器為例,如果所有那麼也要用*表示

shell expect自動化建立使用者,修改密碼,多台機器一鍵免秘鑰登入

這裡就是所有機器上執行建立使用者并設定密碼,當然所有的機器上都要安裝expect否則就出現下面的錯誤:

shell expect自動化建立使用者,修改密碼,多台機器一鍵免秘鑰登入

2.修改建立使用者後的密碼:

  • repasswd.sh中的 内容:
#!/bin/bash  
USER=wyl2
NPASS=wylwyl2
expect << EOF  
spawn passwd  $USER
expect "New password:"  
send "${NPASS}\r"  
expect "Retype new password:"  
send "${NPASS}\r"  
expect eof;  
EOF
           

執行該腳本後的效果圖:

shell expect自動化建立使用者,修改密碼,多台機器一鍵免秘鑰登入

3.建立好使用者,則可能需要各個機器之間的免秘鑰登入:

  • 該腳本中的内容
#!/usr/bin/expect 
set timeout -
#修改配置内容,需要免密碼登入的使用者
set user ooo
set password ooo
#需要免密碼登入的機器
set ipmaster bgs-p173-wangwenting
set ipslave2 bgs-p174-wangwenting
set ipslave3 bgs-p175-wangwenting
set path /home/$user
#建立秘鑰
spawn ssh-keygen -t rsa
expect {
        #第一次需要輸入的enter鍵,exp_continue如果沒有捕獲到該資訊的時候就跳過這個行為,執行下一次的行為。
        ".ssh/id_rsa" {send "\r";exp_continue}
        "Overwrite" {send "y\r";exp_continue}
        "(empty for no passphrase):" {send "\r";exp_continue}
        "Enter same passphrase again" {send "\r";exp_continue}
}
spawn ssh-copy-id -i $path/.ssh/id_rsa.pub $user@$ipmaster
expect {
 "*yes/no*" { send "yes\r"; exp_continue}
 "*password:" { send "$password\r" }
 }
spawn ssh-copy-id -i $path/.ssh/id_rsa.pub $user@$ipslave2
expect {
 "*yes/no*" { send "yes\r"; exp_continue}
 "*password:" { send "$password\r" }
}
spawn ssh-copy-id -i $path/.ssh/id_rsa.pub $user@$ipslave3
expect {
 "*yes/no*" { send "yes\r"; exp_continue}
 "*password:" { send "$password\r" }
}
expect eof
           

4.至于expect的内容,自行百度。

expect的材料

expect的教程

繼續閱讀