文章目录

  • 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 ~]#

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

  1. Linux Shell脚本专栏_批量检测网站是否异常脚本_08

    文章目录 1. 脚本制作 2. 运行脚本 3. 脚本进化动态参数传递 4. 运行脚本 5. 脚本分解 1. 脚本制作 #!/bin/bash URL_LIST=$@ for URL in $URL_L ...

  2. Linux Shell脚本专栏_批量创建100用户并设置密码脚本_03

    文章目录 一.简单需求实现流程 1. 添加用户 2. 给用户设置密码 二.企业需求实现流程 2.1. 脚本准备工作 2.2. 企业级脚本 2.2. 需求说明 2.3. 企业级脚本说明 三.实战 3.1 ...

  3. 【shell】Linux Shell远程执行命令

    目录 shell远程执行 前提条件: 对于简单的命令: 对于脚本的方式: SSH命令格式 主要参数说明 ssh控制远程主机,远程执行命令步骤 准备工作 基于公私钥认证远程登录可能存在的不足 ssh 执 ...

  4. 执行远程linux命令,linux shell 远程执行命令

    经常要部署多台服务器上面的应用,如果一个个机器的登录太麻烦. 所有就想到编写一个脚本来部署不同的服务器 前提条件: 配置ssh免登陆 如果不会的请参加我的另外一篇文章 http://blog.csdn ...

  5. Linux 实操———— Shell 远程执行命令

    引言 目前,开发人员的部署方式是,将项目打包(Maven 打包) 然后将 生成的 jar 包等文件,通过Xshell 等终端工具手动传输到远程服务器上,然后再通过在终端执行远程服务器上的 shell ...

  6. linux远程执行shell命令行,linux shell 远程执行命令--ftp

    linux shell 远程执行命令--ftp 2018-12-07 ftp有很多命令,熟悉这些命令你能大大的提高工作效率: FTP命令行格式为: ftp -v -d -i -n -g [主机名] , ...

  7. shell打开wifi命令_远程执行命令的填坑记录

    前言 本文主要记录 bash 四种模式的细节,以便于遇到问题时查阅. 远程执行出错了 最近使用 ansible 比较多,在某次使用 shell 模块远程执行命令的时候老是报 'command not ...

  8. expect脚本同步文件,expect脚本指定host和要同步的文件,构建文件分发系统,批量远程执行命令...

    2019独角兽企业重金招聘Python工程师标准>>> expect脚本同步文件 更改权限 执行脚本 查看执行结果 expect eof需要加上,作用是等脚本命令执行完再进行退出 e ...

  9. expect脚本同步文件、 expect脚本指定host和要同步的文件 、 构建文件分发系统 、批量远程执行命令...

    为什么80%的码农都做不了架构师?>>>    20.31 expect脚本同步文件 使用expect脚本同步文件 说明:核心命令是rsync #! /usr/bin/expect ...

最新文章

  1. Java Web中的jsp技术
  2. HDU 5988 最小费用流
  3. 将C1Chart数据导出到Excel
  4. 日志分析logstash插件-grok详解
  5. Hbase 高级特性Bloom filter
  6. OPA 5 - CreateButtonTest creates CreateButtonSteps
  7. java传参数的方法_java中方法的参数传递机制
  8. 安卓应用安全指南 5.6.1 密码学 示例代码
  9. java 中文路径 读取_Java读取文件时中文路径处理
  10. 【openjudge】字符串排序
  11. 模板题——快排、归并、二分
  12. DedeCMS5.5 调用当前内容页TAG标记的办法
  13. Linux Sed简介
  14. 武汉ISO27001认证的完整步骤
  15. 关于redis HSCAN count参数不生效的问题
  16. Linux系统下载并安装Redis
  17. PRINCE2认证的优势是什么?
  18. python3抓取-双色球开奖的所有历史数据-2003年始
  19. 达内python第一次月考题目_月考来临!第一次月考远比你想象的重要!
  20. 手把手教你几种生成词云的方式

热门文章

  1. 过年,你肯定会用到这款小程序!
  2. java多线程笔记补充之 线程控制操作
  3. 赫夫曼编码长度计算问题?
  4. 如何在Spring生态中玩转RocketMQ?
  5. 浅谈MaxCompute资源规划管理及评估
  6. 分布式数据库选型——数据水平拆分方案
  7. Apache RocketMQ 正式开源分布式事务消息
  8. 张勇云栖大会谈科技担当与责任:做开放共享人人受益的好科技
  9. 为啥Underlay才是容器网络的最佳落地选择
  10. 亚马逊计划明年推出云游戏服务,紧追微软谷歌;华为GaussDB数据库推出双分布式架构;腾讯擎天5G智慧灯杆助智慧城市服务升级……...