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

    题目链接:http://poj.org/problem?id=2121 差一点就WA哭了,主要是自己傻逼了. 思路: 遇到hundred,sum*100; 但是遇到thouthend,million, ...

  2. 广搜破解密码(HDU1195)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1195 解题报告: #include<iostream> #include<cstdi ...

  3. PHP防止SQL注入文件,引入即可

    公司之前做的一个学校网站被黑客攻击并将漏洞公布于网络,其实黑客用的仅仅是一个叫WebCruiserEnt的软件就搞定了,数据库一目了然的呈现在了游客面前,用的就是常用的sql漏洞攻击,这里准备了一个文 ...

  4. 2017.9.17 HTML学习总结---table标签

    接上: 2.1.3  HTML表单标签与表单设计 表单是用户与服务器交互的主要方法,用户在表单中输入数据,提交给服务器程序来处理. (1)表单的组成: 文本框(text),密码框(password), ...

  5. matlab所需插件

    1

  6. Shell编程学习之Shell编程基础(一)

    这篇随笔将要介绍关于Shell编程的基本知识,这些将会在假设你已经熟悉了Linux系统和命令行的基本知识. 构建基本脚本 你应该了解或熟悉使用Shell命令行了,但是只是使用Shell命令行的命令,有 ...

  7. C# do while语句

    一.C# do while语句 do while语句是先执行一次循环体,然后再判断是否需要重复执行循环体的循环控制语句. 语法格式如下: do{    embedded-statement}while ...

  8. pycharm中常用设置

    当安装时检查版本过低 首先 pip --help 进入帮助,找到 复制,然后 pip install --disable-pip-version-check 要安装的包 这样就会跳过版本检测. 在py ...

  9. 在Linux文件清空的几种方法

    在Linux文件清空的几种方法 1.使用重定向的方法 [root@centos7 ~]# du -h test.txt 4.0K test.txt [root@centos7 ~]# > tes ...

  10. NFS文件系统存储服务部署

    1 NFS介绍 1.1 什么是NFS? NFS是Network File System的缩写,中文名称是网络文件系统.它的主要功能是通过网络让不用的主机系统之间可以共享文件或者目录.NFS客户端通过挂 ...