zoukankan      html  css  js  c++  java
  • SSH非交互式密码授权远程执行脚本---转载

    公司有上百台服务器,需要为每台服务器都执行一个脚本,因为所有服务器的账号密码都是一样的,所以可以不用搭建ansible等自动化运维工具,我们直接通过SSH远程执行即可完成。

    本文以三台服务器为例,系统版本:CentOS7.3
    1、安装sshpass
    cd /etc/yum.repos.d/
    wget http://download.openSUSE.org/repositories/home:Strahlex/CentOS_CentOS-6/home:Strahlex.repo
    yum install -y sshpass

    2、新建IP地址列表文件
    cd /usr/local/sbin
    vim iplist.txt
    192.168.19.142
    192.168.19.143

    3、编写脚本

    脚本思路:先拷贝需要远程执行的脚本文件到各远程服务器上,然后通过ssh远程执行脚本。
    vim command.sh
    #! /bin/bash

    pw=`pwd`
    dest_user=root
    dest_pwd=Admin123
    dest_path=/usr/local/sbin
    script_name=cmd.sh


    chmod +x $pw/$script_name
    [ ! -f $pw/scpssh.log ] && touch $pw/scpssh.log
    echo begin > $pw/scpssh.log


    for ip in `cat $pw/iplist.txt`
    do
        sshpass -p $dest_pwd scp -P22 -o StrictHostKeyChecking=no $pw/$script_name $dest_user@$ip:$dest_path
        if [ $? = 0 ]
        then
            echo $ip scp success |tee -a $pw/scpssh.log
        else
            echo $ip scp failed |tee -a $pw/scpssh.log
            echo  >> $pw/scpssh.log
        fi


        sshpass -p $dest_pwd ssh -P22 -o StrictHostKeyChecking=no $dest_user@$ip $dest_path/$script_name
        if [ $? = 0 ]
        then
            echo $ip ssh success |tee -a $pw/scpssh.log
        else
            echo $ip ssh failed |tee -a $pw/scpssh.log
            echo  >> $pw/scpssh.log
        fi
    done
    echo End! >> $pw/scpssh.log 
     
    说明:dest_path为远程机器的路径,script_name为需要远程执行的脚本名称。

    赋予执行权限
    chmod +x command.sh

    4、执行脚本
    把需要远程执行的脚本cmd.sh放在/usr/local/sbin/目录中,该远程脚本只是在远程服务器/usr/local/sbin/目录下创建一个文件夹。
    cat cmd.sh
    #! /bin/bash
    cd /usr/local/sbin
    pw=`pwd`
    mkdir $pw/test


    目录结构

    执行脚本
    sh command.sh

    注意:第一次执行会提示如下警告,是因为让ssh自动添加到已知主机文件中的提示,可忽略
    Warning: Permanently added '192.168.19.142' (ECDSA) to the list of known hosts.

    5、查看结果
    在当前目录下会产生日志文件 scpssh.log
    并在远程服务器上可查看到生成了test文档

    注意:提示 Host key verification failed ,避免该问题可以在ssh或scp的时候通过-o选择加参数数 StrictHostKeyChecking=no,让ssh自动添加到已知主机文件中,来避免该问题。

    本文永久更新链接地址http://www.linuxidc.com/Linux/2017-04/143180.htm

  • 相关阅读:
    vue中插槽的理解
    父子组件的通信
    vue3.0怎么禁用eslint校验代码和修改端口号
    三大排序
    让机器人实现自主行走 没你想的那么难
    国内外知名激光雷达公司盘点
    激光雷达寿命短,思岚通过什么技术来解决?
    浅谈SLAM的回环检测技术
    除了ROS, 机器人定位导航还有其他方案吗?
    思岚科技即将登陆“2018日本机器人周”精彩抢先看
  • 原文地址:https://www.cnblogs.com/xiaoyaojinzhazhadehangcheng/p/13809184.html
Copyright © 2011-2022 走看看