Linux Shell脚本专栏_批量主机远程执行命令脚本_08

文章目录

    • 1. 安装expect
    • 2. 脚本制作
    • 3. 赋予权限
    • 4. 运行脚本
    • 5. 直接运行脚本
    • 6. vmstat测试

1. 安装expect

[root@localhost ~]# yum install expect
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile* base: mirrors.aliyun.com* extras: mirrors.aliyun.com* updates: mirrors.aliyun.com
base                                               | 3.6 kB     00:00     
extras                                             | 2.9 kB     00:00     
updates                                            | 2.9 kB     00:00     
Resolving Dependencies
--> Running transaction check
---> Package expect.x86_64 0:5.45-14.el7_1 will be installed
--> Finished Dependency ResolutionDependencies Resolved==========================================================================Package        Arch           Version                 Repository    Size
==========================================================================
Installing:expect         x86_64         5.45-14.el7_1           base         262 kTransaction Summary
==========================================================================
Install  1 PackageTotal download size: 262 k
Installed size: 566 k
Is this ok [y/d/N]: y
Downloading packages:
expect-5.45-14.el7_1.x86_64.rpm                      | 262 kB   00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transactionInstalling : expect-5.45-14.el7_1.x86_64                            1/1 Verifying  : expect-5.45-14.el7_1.x86_64                            1/1 Installed:expect.x86_64 0:5.45-14.el7_1                                           Complete!
[root@localhost ~]# 

2. 脚本制作

host.info

#格式: ip地址 用户 端口 密码
192.168.43.242 root 22 root
192.168.43.134 root 22 root
192.168.43.228 root 22 root

脚本内容:

#!/bin/bash
COMMAND=$*
HOST_INFO=host.info
for IP in $(awk '/^[^#]/{print $1}' $HOST_INFO); doUSER=$(awk -v ip=$IP 'ip==$1{print $2}' $HOST_INFO)PORT=$(awk -v ip=$IP 'ip==$1{print $3}' $HOST_INFO)PASS=$(awk -v ip=$IP 'ip==$1{print $4}' $HOST_INFO)expect -c "spawn ssh -p $PORT $USER@$IPexpect {\"(yes/no)\" {send \"yes\r\"; exp_continue}\"password:\" {send \"$PASS\r\"; exp_continue}\"$USER@*\" {send \"$COMMAND\r exit\r\"; exp_continue}}"echo "---------Execute Successful! ----------"
don

3. 赋予权限

chmod +x 8.sh

4. 运行脚本

[root@localhost ~]# ./8.sh df -h
spawn ssh -p 22 root@192.168.43.228
root@192.168.43.228's password: 
Last login: Tue Feb 25 10:32:22 2020 from desktop-0shdb7s
[root@localhost ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   50G  2.1G   48G   5% /
devtmpfs                 898M     0  898M   0% /dev
tmpfs                    910M     0  910M   0% /dev/shm
tmpfs                    910M  9.7M  901M   2% /run
tmpfs                    910M     0  910M   0% /sys/fs/cgroup
/dev/sda1               1014M  146M  869M  15% /boot
/dev/mapper/centos-home   47G   33M   47G   1% /home
tmpfs                    182M     0  182M   0% /run/user/0
[root@localhost ~]#  exit
logout
Connection to 192.168.43.228 closed.
-------------------
[root@localhost ~]# 

5. 直接运行脚本

[root@localhost ~]# bash 8.sh df -h
spawn ssh -p 22 root@192.168.43.228
root@192.168.43.228's password: 
Last login: Tue Feb 25 10:36:06 2020 from 192.168.43.134
[root@localhost ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   50G  2.1G   48G   5% /
devtmpfs                 898M     0  898M   0% /dev
tmpfs                    910M     0  910M   0% /dev/shm
tmpfs                    910M  9.7M  901M   2% /run
tmpfs                    910M     0  910M   0% /sys/fs/cgroup
/dev/sda1               1014M  146M  869M  15% /boot
/dev/mapper/centos-home   47G   33M   47G   1% /home
tmpfs                    182M     0  182M   0% /run/user/0
[root@localhost ~]#  exit
logout
Connection to 192.168.43.228 closed.
df -hexit
-------------------
[root@localhost ~]# 

6. vmstat测试

[root@localhost ~]# bash 8.sh vmstat
spawn ssh -p 22 root@192.168.43.228
root@192.168.43.228's password: 
Last login: Tue Feb 25 10:39:57 2020 from 192.168.43.134
[root@localhost ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st1  0      0 1511112   2108 196804    0    0     4     1   15   20  0  0 100  0  0
[root@localhost ~]#  exit
logout
Connection to 192.168.43.228 closed.
vmstatexit
-------------------
[root@localhost ~]# 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/521150.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

打破行业壁垒!阿里云OpenSearch开启个性化搜索里程碑

随着业务的高速发展,越来越多的客户对于搜索带来的实际转化和分发效率有了越来越高的要求。尤其在电商、资讯等行业,这一目标极其重要。 阿里云OpenSearch是面向全行业的搜索引擎解决方案,然而不同领域和业务场景的搜索需求复杂性导致当前单…

java collections_扫盲java.util.Collections工具包,学习排序、二分、洗牌、旋转算法

作者:小傅哥 博客:https://bugstack.cn沉淀、分享、成长,让自己和他人都能有所收获! 一、前言算法是数据结构的灵魂!好的算法搭配上合适的数据结构,可以让代码功能大大的提升效率。当然,算法学习…

php获取mysql所有表_PHP获取MySQL数据库里所有表的实现代码

代码如下:function list_tables($database){$rs mysql_list_tables($database);$tables array();while ($row mysql_fetch_row($rs)) {$tables[] $row[0];}mysql_free_result($rs);return $tables;}但由于mysql_list_tables方…

如何进行MaxCompute 用户认证?

您可以通过以下两种方式进行用户认证。 检查请求Request发送者的真实身份 即请求发送后,参数包括用户名和密码,服务端会验证用户名和密码是否正确,以此判断Request发送者的身份是否可信。 使用此方法有可能在请求时间较长的情况下&#xf…

Linux Shell脚本专栏_MySQL数据库备份_09

文章目录一、MySQL数据库备份单循环1. 安装mysql2. 配置mysql环境变量3. 刷新环境变量4. 创建数据库和表lue5. 脚本制作6. 运行脚本7. 查看备份的sql文件7. 脚本升级动态传参8. 运行脚本9. 查看备份的sql文件二、MySQL数据库表备份多循环2.1. 脚本制作2.2. 运行脚本2.3. 指定目…

【当头棒喝】你是真的了解云计算吗?

戳蓝字“CSDN云计算”关注我们哦!作者 | 全球物联网观察责编 | 阿秃对于“云计算”这个名词,大家早已耳熟能详,而且出场率越来越高!但对于很多新入行的“小白”来说,其中涉及的各种概念可能令人毫无头绪,这…

专注数据,打造阿里云Elasticsearch“一站式”数据服务体系

众所周知,Elasticsearch的问世使得各种结构、非结构数据得以实现实时搜索、分析的可能,越来越多的用户使用ES集群(即Elasticseach集群,下文均简称ES集群)实现数据的升值与挖掘。而用户在开发的过程中总是面临数据导入、…

java8 lambda maplist排序_「java8系列」流式编程Stream

前言「Java8系列」神秘的Lambda「Java8系列」神奇的函数式接口继上两篇之后,本文已经java8系列的第三篇了。本篇文章比较长,但我希望大家都能认真读完。读不完可以先收藏,在找时间读。没看过前两篇的可以点上边的链接看看,前两篇文…

Centos7 下载、安装、配置、启动部署

文章目录1. 下载tomcat2. 解压tomcat3. 重命名tomcat4. 配置tomcat环境变量5. 刷新配置文件6. 启动tomcat1. 下载tomcat wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-9/v9.0.31/bin/apache-tomcat-9.0.31.tar.gz2. 解压tomcat [rootly-01 ~]# tar -zxf apache-tomca…

java构造方法 this_Java中的构造方法this、super的用法详解

1、构造方法定义:与类同名没有返回值的方法称为构造方法;public class test1 {private String name;private int age;public test1(){}}上面的test1()是默认构造方法,即使没有定义java虚拟机在运行的时候也会自动生成,当然如果定义…

世界杯千万级直播高稳定的挑战和实践

今年夏天,俄罗斯世界杯召开。在刚刚落幕的重庆云栖飞天技术汇专场中,阿里视频云技术专家裘良科,就世界杯这个话题,跟参会嘉宾一起探讨了千万级直播高稳定的挑战和相关实践,本文为演讲全文。 2018年俄罗斯世界杯从6月14…

会议邀请 | 10月25日北京,首期D2iQ云原生主题论坛正式启动

在开始今天的内容之前,先问大家一个问题:云原生究竟是什么? 一般来说,“云原生”是一种构建和运行应用程序的方法,它利用了云计算交付模型的优势。CNCF(云原生计算基金会)将“云原生”定义为使…

Flutter快速上车之Widget

Flutter作为一种全新的响应式,跨平台,高性能的移动开发框架。从开源以来,已经得到越来越多开发者的喜爱。闲鱼是最早一批与谷歌展开合作,并在重要的商品详情页中使用上线的公司。一路走来,积累了大量的开发经验。虽然越…

Linux Shell脚本专栏_自动发布Java项目(tomcat)_10

文章目录一、需求背景及实现流程1. 需求背景2. 实现流程二、软件准备2.1. 公共工具包yum下载2.2. tomcat安装及配置2.3. maven安装及配置2.4. 安装mysql2.5. order项目配置2.6. 脚本制作2.7. 运行脚本一、需求背景及实现流程 1. 需求背景 order项目代码已经到版本仓库中&…

python合并多个excel的某些字段_python合并多个excel文件的示例

工作中经常遇到要将十几个Excel(不管是xls、或者是CSV)合并到同一个文件中去,手工一个一个复制是不可能的,此时就轮到Python出马了 主要是利用for循环,读取每一个文件,作为df,然后再通过list的a…

java 异常 日志_java中的异常、断言、日志(一)

1.Java异常处理i.异常的概念和Java里面的异常体系结构1)基本概念:程序中的异常,一般成为例外情况,可以理解为是非正常情况,其他编程语言里面也有这样的情况,Java里面同样存在这样一个体系结构,这里需要分清…

[Phoenix] 十、全局索引设计实践

概述 全局索引是Phoenix的重要特性,合理的使用二级索引能降低查询延时,让集群资源得以充分利用。 本文将讲述如何高效的设计和使用索引。 全局索引说明 全局索引的根本是通过单独的HBase表来存储数据表的索引数据。我们通过如下示例看索引数据和主表数…

云原生数据库崛起,阿里云POLARDB当选世界互联网领先科技成果

戳蓝字“CSDN云计算”关注我们哦!作者 | 晶少责编 | 阿秃10月20日,在第六届世界互联网大会上,阿里云自研数据库POLARDB当选世界互联网领先科技成果,POLARDB解决了企业在云时代的数据库难题,帮助企业在数小时内完成上云…

【基于XML方式】Spring整合Kafka

文章目录1.引入Maven依赖2. kafka.properties文件中配置内容3. 发送端 producer-kafka.xml 配置4. 接收端 consumer-kafka.xml 配置5. kafka消息监听类6. Controller的实现7. 测试8. 项目链接&#xff1a;1.引入Maven依赖 <!-- 添加spring-kafka支持 --> <dependency…

使用CLI进行高速跨域日志复制、历史数据重新索引与数仓投递

背景 使用日志服务是不是常常遇到如下烦恼&#xff1f; 开启了字段索引却无法对历史日志起作用&#xff0c;而手动重建索引又很困难怎么办&#xff1f;需要迁移数据&#xff0c;复制数据到其他区域logstore&#xff0c;写代码实现大并发复制又很复杂怎么办&#xff1f;投递日…