公司有上百台服务器,需要为每台服务器都执行一个脚本,因为所有服务器的账号密码都是一样的,所以可以不用搭建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

SSH非交互式密码授权远程执行脚本的更多相关文章

  1. ssh非交互式密码输入

    ssh登陆不能在命令行中指定密码.sshpass的出现,解决了这一问题.sshpass用于非交互SSH的密码验证,一般用在sh脚本中,无须再次输入密码. 它允许你用 -p 参数指定明文密码,然后直接登 ...

  2. SSH 无密码远程执行脚本

    ssh无密码登录及远程执行脚本要使用公钥与私钥.linux下可以用用ssh-keygen生成公钥/私钥对,下面我以CentOS7为例. 测试环境:机器A(10.0.224.80):机器B(192.16 ...

  3. JSch远程执行脚本

    JSch远程执行脚本 2017-02-24 在自动化测试的时候,需要远程操控服务器做一些操作,比如切日.起服务器.执行某些脚本.如何实现? 我们可以利用JSch,远程执行脚本.JSch是Java Se ...

  4. Linux远程无密码登陆并远程执行脚本

    假设 A (192.168.20.59)为客户机器,B(192.168.20.60)为目标机: 要达到的目的: A机器ssh登录B机器无需输入密码: 加密方式选 rsa|dsa均可以,默认dsa ss ...

  5. Linux centosVMware 自动化运维Ansible介绍、Ansible安装、远程执行命令、拷贝文件或者目录、远程执行脚本、管理任务计划、安装rpm包/管理服务、 playbook的使用、 playbook中的循环、 playbook中的条件判断、 playbook中的handlers、playbook实战-nginx安装、管理配置文件

    一.Ansible介绍 不需要安装客户端,通过sshd去通信 基于模块工作,模块可以由任何语言开发 不仅支持命令行使用模块,也支持编写yaml格式的playbook,易于编写和阅读 安装十分简单,ce ...

  6. jenkins远程执行脚本时报Bad version number in .class file

    这几天在学习jenkins的持续集成和部署,到了最后一步启动服务的时候,遇到了一个这个Bad version number in .class file的报错(如下图). 这个报错在最开始手工部署的时 ...

  7. Ansible 远程执行脚本

    1. 先在服务端创建一个 shell 脚本 [root@localhost ~]$ cat /tmp/test.sh #!/bin/bash echo "hello world" ...

  8. [问题排查]通过调度系统远程执行脚本,报mysql command not found异常

    今天在公司使用LS调度系统(百度内部的工具),执行远程脚本的时候,每次都失败. 脚本内容比较简单,其实就是将HDFS(AFS)中的数据插入到Palo(Doris)数据库中,脚本如下: mysql -h ...

  9. ssh 免交互登录 ,远程执行命令脚本。

    ##免交互SSH登录auto_login_ssh () {    expect -c "set timeout -1;                spawn -noecho ssh -o ...

随机推荐

  1. httpclient使用head添加cookie

    最近在使用接口时候,我使用get请求时,需要携带登录态,所以在get请求的时候我需要在head里面把cookie给加上,添加方式get和post完全不一样 Post方式添加cookie httpPos ...

  2. Uva 11582 巨大的斐波那契数 模运算

    题目链接:https://vjudge.net/contest/156903#problem/A 题意:计算 f(a^b)%n 分析: 1.斐波那契数列是 f(i+2) = f(i+1) + f(i) ...

  3. 裁剪插件jCrop

    为大家介绍个插件:jCrop.这个插件被我用在了多个项目中,如通过画热力图来查看某块地方用户的浏览数,放大缩小拖动选框来实时预览所选区域的图片病裁剪,设置头像是选框必须要是正方形,它有着丰富的配置参数 ...

  4. CNMeM is disabled

    See here: http://deeplearning.net/software/theano/library/config.html You can change this in the env ...

  5. B1954 The xor-longest Path

    爆炸入口 给定一颗带权值的,节点数为n的树,求树上路径最大异或和. solution: 先dfs将所有点到根的异或和算出来.然后放进tire树中贪心. #include<cstdio> # ...

  6. image retrieval数据集

    1. Oxford,vgg组,主要是building方面的数据.http://www.robots.ox.ac.uk/~vgg/data/oxbuildings/index.html 2. Calte ...

  7. NestedScrollView和RecyclerView使用,并设置间距

    NestedScrollView和RecyclerView使用,并设置间距: 效果图如下: 1.NestedScrollView 和RecyclerView嵌套问题(类似ScrollView 和lis ...

  8. wm_concat()函数

    工作中遇到这样一个问题,一张数据库表中有一个字段file_id,还有一个主键f_id(唯一),而file_id不唯一,我想把file_id=‘123456789’的记录中的f_id(主键)连接成一个字 ...

  9. MappingException:class com.zsn.crm.Model.user not found whie looking for property user id

    之前好好地运行 什么东西都没动过 再次运行突然报异常*****MappingException:class com.zsn.crm.Model.user not found whie looking ...

  10. linux基础目录

    第1章 linux目录结构 1.1 linux目录结构的特点 一切皆文件 1)倒挂的树状结构   一切从根开始 2)linux每个目录可以挂载在不同的设备(磁盘)上.windows不容易做到. /da ...