zoukankan      html  css  js  c++  java
  • 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
    "; exp_continue}   
                        "*password*" {send "$password
    "; exp_continue}   
                        "*Password*" {send "$password
    ";}   
                }   
        "   
        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 
  • 相关阅读:
    前缀和-长度最小的子数组
    找到字符串中所有的字母异位词
    区间列表的交集
    比较含退格的字符串
    [转] ios数组基本用法和排序
    [转] 【iOS基础知识】之判断NSString是否为整数、浮点数
    解决resignFirstResponder或者endEditing无效的办法
    iOS 根据文字字数动态确定Label宽高
    [转] iOS开发-搜索栏UISearchBar和UISearchController
    UIActionSheet的最后一项点击失效
  • 原文地址:https://www.cnblogs.com/likai198981/p/3700184.html
Copyright © 2011-2022 走看看