天天看點

shell自動化部署批量建立使用者和批量SSH配置

腳本如下: 

批量建立使用者的腳本cuser.sh: 

Shell代碼  

shell自動化部署批量建立使用者和批量SSH配置
  1. if [  !  $# -eq 2  ] ; then  
  2. echo "請輸入使用者名和密碼以空格分開!"  
  3. exit  
  4. else  
  5. name="$1"  
  6. passwd="$2"  
  7. fi  
  8. cat hosts | while read hosts  
  9. do  
  10. echo "正在$hosts上使用者$name"  
  11. expect <<EOF  
  12. spawn   ssh $hosts "useradd $name; echo $name:$passwd | chpasswd"   
  13. expect {  
  14. "*yes/no" {send "yes\r" ;exp_continue}  
  15. "*password:" {send "dongliang\r" ;exp_continue  }  
  16. }  
  17. EOF  
  18. echo  "成功建立"  
  19. done  

root使用者初始化腳本,initroot.sh 

Shell代碼  

shell自動化部署批量建立使用者和批量SSH配置
  1. if [  ! $# -eq 2  ] ;then  
  2. echo "請輸入使用者密碼以空格分開"  
  3. exit  
  4. else  
  5. #使用者名  
  6. uname="$1"  
  7. #密碼  
  8. passwd="$2"  
  9. fi  
  10. #執行檢測并安裝expect子產品  
  11. ep=`rpm -qa | grep expect`   
  12. if [ -z $ep   ] ; then  
  13.  echo "檢測到你的系統,沒有安裝expect子產品,準備執行安裝"  
  14.  sleep 2  
  15.  yum install -y expect  
  16. else  
  17.  echo "已經安裝expect子產品,3秒後,開始執行ssh檔案同步"  
  18.  sleep 3  
  19. fi  
  20. #公鑰無ssh認證子產品  
  21. cat hosts | while read host  
  22. do  
  23. echo "目前正在向$host上傳輸ssh檔案"  
  24. expect <<EOF  
  25. spawn  scp -r .ssh/  $host:/$uname   
  26. expect {  
  27. "*yes/no" {send "yes\r" ;exp_continue}  
  28. "*password:" {send "$passwd\r" ;exp_continue  }  
  29. }  
  30. EOF  
  31. echo "目前正在$host上進行公鑰認證....."  
  32. sleep 2  
  33. expect <<EOF  
  34. spawn  ssh-copy-id  -i .ssh/id_rsa.pub $host   
  35. expect {  
  36. "*yes/no" {send "yes\r" ;exp_continue}  
  37. "*password:" {send "$passwd\r" ;exp_continue  }  
  38. }  
  39. EOF  
  40. echo "認證成功...."  
  41. done  
  42. #切換root權限進行hosts檔案分發  
  43. echo "同步本機的hosts檔案到各個機器上"  
  44. sleep 1  
  45. #同步本機的hosts檔案到其他各個機器上  
  46. cat hosts | while read host  
  47. do  
  48. scp -r /etc/hosts $host:/etc/  
  49. done  
  50. echo "同步hosts檔案完畢"  

普通使用者的安裝腳本,noroot.sh 

Shell代碼  

shell自動化部署批量建立使用者和批量SSH配置
  1. if [ ! $# -eq 2  ] ; then  
  2. echo "請輸入使用者名密碼以空格分開"  
  3. exit  
  4. else  
  5. #使用者的名字  
  6. uname="$1"  
  7. #使用者的統一密碼  
  8. pd="$2"  
  9. fi  
  10. #公鑰無ssh認證子產品  
  11. cat hosts | while read host  
  12. do  
  13. echo "目前正在向$host上傳輸ssh檔案"  
  14. expect <<EOF  
  15. spawn  scp -r .ssh/  $host:/home/$uname   
  16. expect {  
  17. "*yes/no" {send "yes\r" ;exp_continue}  
  18. "*password:" {send "$pd\r" ;exp_continue  }  
  19. }  
  20. EOF  
  21. echo "目前正在$host上進行公鑰認證....."  
  22. sleep 2  
  23. expect <<EOF  
  24. spawn  ssh-copy-id  -i .ssh/id_rsa.pub $host   
  25. expect {  
  26. "*yes/no" {send "yes\r" ;exp_continue}  
  27. "*password:" {send "$pd\r" ;exp_continue  }  
  28. }  
  29. EOF  
  30. echo "認證成功...."  
  31. done  

hosts檔案示例: 

Java代碼  

shell自動化部署批量建立使用者和批量SSH配置
  1. 192.168.46.28  
  2. 192.168.46.29  
  3. 192.168.46.33  

使用說明書: 

Java代碼  

shell自動化部署批量建立使用者和批量SSH配置
  1. 腳本主要完成的功能:  
  2. 1,自動化批量建立使用者  
  3. 2,自動化批量雙向配置SSH認證  
  4. 3,測試通過Centos6.5,其他系統大同小異,如報錯,可改部分代碼  
  5. 使用步驟:  
  6. 1,配置叢集的host檔案,把所有機器的IP都寫在hosts檔案裡,注意預設這幾個檔案解壓在root根目錄即可。  
  7. 2,先在第一台root使用者上執行 ssh-keygen -t rsa -P ''一路回車生成ssh檔案  
  8. 3,然後執行initroot.sh腳本,并傳入root賬号的使用者名,密碼,此腳本會首先檢測系統是否安裝過expect,如果沒有  
  9. 安裝,則yum下載下傳,如果安裝過,則直接進行ssh檔案拷貝,并執行公鑰認證  
  10. 4,執行cuser.sh腳本,并傳入要建立使用者的賬号密碼,就可以批量的在多個機器上建立使用者了  
  11. 5,然後拷貝root跟目下下的hosts檔案和noroot.sh檔案到上面建的用  
  12. 戶根目錄下,并把權限改成使用者權限  
  13. 6,然後切入剛才建立的賬戶,同樣執行第2個步驟生成ssh檔案  
  14. 7,最後執行noroot.sh檔案,給剛才建的批量使用者之間建立ssh雙向無密碼認證  
  15. 8,至此完成,批量使用者建立和SSH認證。  

    轉自:http://qindongliang.iteye.com/blog/2117973