shell腳本批量部署ssh


日常運維工作中,需要給幾十上百台服務器批量部署軟件或者是重啟服務器等操作, 這樣大量重復性的工作一定很苦惱,本文給大家提供了最基本的批量操作的方法,雖然效率不高,對於初學者來說還是好理解。由於剛開始學習寫腳本,什么 puppt這樣的高級工具還不會使用,就簡單的利用shell腳本、ssh-keygen、expect來實現。希望能給各位帶來幫助,不足之處還請留言 指出,大家共同進步。

    首先,需要檢查expect是否安裝:rpm -qa|grep expect

    然后,在操作機上創建公鑰:ssh-keygen 一路回車即可

    創建好之后到/root/.ssh/下就可以看到id開頭的2個文件,其中id_rsa.pub就是公鑰文件,需要做的就是將這個文件傳送給其他機器:ssh-copy-id -i /root/.ssh/id_rsa.pub root@ip

    最后ssh root@ip就實現無密碼登錄了。

以下是腳本,根據自己實際情況做修改

    #!/bin/bash  
    #2013-04-08   
    #author myhoop  
    #blog http://myhoop.blog.51cto.com   
     
    #批量ssh認證建立  
     
    for p in $(cat /usr2/script/ip.txt)  #注意ip.txt文件的絕對路徑  
    do   
    ip=$(echo "$p"|cut -f1 -d":")       #取ip.txt文件中的ip地址  
    password=$(echo "$p"|cut -f2 -d":") #取ip.txt文件中的密碼  
     
    #expect自動交互開始  
    expect -c "   
    spawn ssh-copy-id -i /root/.ssh/id_rsa.pub root@$ip  
            expect {   
                    \"*yes/no*\" {send \"yes\r\"; exp_continue}   
                    \"*password*\" {send \"$password\r\"; exp_continue}   
                    \"*Password*\" {send \"$password\r\";}   
            }   
    "   
    done   
     
    #通過ssh批量執行命令  
     
    for h in $(cat /usr2/script/ip.txt|cut -f1 -d":")  
    do  
    ssh root@$h '此處寫要執行的命令'    
    #如果命令是多行的,請參照下面  
    #ssh root@$h '此處寫要執行的命令1' 
    #ssh root@$h '此處寫要執行的命令2' 
    #ssh root@$h '此處寫要執行的命令3' 
    done  
     
     
    #ip.txt文件里面ip和密碼寫法  
    192.168.0.2:admin2  
    192.168.0.3:admin3 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM