当前位置: 代码网 > 服务器>服务器>Linux > linux shell实现批量主机远程执行命令脚本

linux shell实现批量主机远程执行命令脚本

2024年11月03日 Linux 我要评论
基于expect命令实现1.安装expect[root@logstash ~]# yum install -y expectloaded plugins: fastestmirrorloading m

基于expect命令实现

1.安装expect

[root@logstash ~]# yum install -y expect
loaded plugins: fastestmirror
loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
package expect-5.45-14.el7_1.x86_64 already installed and latest version
nothing to do
[root@logstash ~]# 

2.撰写脚本

expect_command.sh

#!/bin/bash
 
command=$*
host_info=/root/host.info
for ip in $(awk '/^[^#]/{print $1}' $host_info)
do
  user=$(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@$ip
    expect {
     \"(yes/no)\" {send \"yes\r\";exp_continue}
     \"password:\" {send \"$pass\";exp_continue}
     \"$user@*\" {send \"$command\r exit\r\";exp_continue}
    }
  "
  echo "------execute successful!------"
done

linux exp_continue是一个在 linux 系统中经常用到的命令。在 linux 系统中,exp_continue 命令用来控制 expect 脚本的循环执行,以及在不同条件下执行不同的操作。通过使用 exp_continue 命令,用户可以让 expect 脚本在满足特定条件时继续执行下一个步骤,而不是中断脚本的执行。

exp_continue 命令的用法非常简单,只需在 expect 脚本中使用该命令即可。例如,当用户在 expect 脚本中需要等待用户输入密码时,可以使用 exp_continue 命令让脚本继续执行下一个步骤,而不是等待超时或中断脚本。这种方式可以提高脚本的效率和可靠性。

另外,exp_continue 命令还可以用来处理不同情况下的逻辑分支。例如,当用户在 expect 脚本中需要对不同的返回结果做出不同的处理时,可以使用 exp_continue 命令实现逻辑的分支跳转。这种方式可以让 expect 脚本更加灵活和智能。

[root@logstash ~]# chmod +x expect_command.sh 
[root@logstash ~]# ls -l expect_command.sh 
-rwxr-xr-x 1 root root 535 jul 18 10:20 expect_command.sh
[root@logstash ~]# 

host.info

#格式:ip地址 用户名 端口号 密码
192.168.10.245 root 22 root

3.验证

sh expect_command.sh df -h

[root@logstash ~]# sh expect_command.sh df -h
spawn ssh -p 22 root@192.168.10.245
last login: thu jul 18 11:34:50 2024 from 192.168.10.131
[root@kibana ~]# df -h
filesystem               size  used avail use% mounted on
devtmpfs                 2.0g     0  2.0g   0% /dev
tmpfs                    2.0g     0  2.0g   0% /dev/shm
tmpfs                    2.0g   13m  2.0g   1% /run
tmpfs                    2.0g     0  2.0g   0% /sys/fs/cgroup
/dev/mapper/centos-root   38g  7.7g   30g  21% /
/dev/sr0                 4.4g  4.4g     0 100% /mnt
/dev/sda1               1014m  172m  843m  17% /boot
/dev/mapper/centos-home   19g   37m   19g   1% /home
tmpfs                    394m   12k  394m   1% /run/user/42
tmpfs                    394m     0  394m   0% /run/user/0
[root@kibana ~]#  exit
logout
connection to 192.168.10.245 closed.
df -h
 exit
------execute successful!------
[root@logstash ~]# 

sh expect_command.sh vmstat

[root@logstash ~]# sh expect_command.sh vmstat
spawn ssh -p 22 root@192.168.10.245
last login: thu jul 18 11:36:21 2024 from 192.168.10.131
[root@kibana ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 2939704   1096 471976    0    0   391     8  170  358  0  1 99  0  0
[root@kibana ~]#  exit
logout
connection to 192.168.10.245 closed.
vmstat
 exit
------execute successful!------
[root@logstash ~]# 

以上就是linux shell实现批量主机远程执行命令脚本的详细内容,更多关于linux shell主机远程执行命令的资料请关注代码网其它相关文章!

(0)

相关文章:

  • Linux系统中的软连接管理详解

    Linux系统中的软连接管理详解

    软连接的基本概念软连接是一种特殊类型的文件,它包含指向另一个文件或目录的路径。与硬链接不同,软连接可以跨文件系统,也可以指向不存在的目标文件。软连接的优势在于其... [阅读全文]
  • 在Linux上搭建Minecraft服务器的方法步骤

    在Linux上搭建Minecraft服务器的方法步骤

    在选择服务器时,请确保它至少有 1gb 的 ram,最好至少有 2gb。首先,您需要通过ssh 连接到服务器。如果您使用的是 mac,可以打开终端;如果您使用的... [阅读全文]
  • 一文带你搞懂Nginx如何处理请求

    一文带你搞懂Nginx如何处理请求

    nginx(engine x)是一个高性能的http和反向代理服务器,它以其高并发、高性能和低资源消耗著称。这篇文章,我们将从原理、代码以及示例来深入分析 ng... [阅读全文]
  • Linux切换root用户的几种实现方式

    Linux切换root用户的几种实现方式

    概述在linux操作系统中,root用户是系统的超级用户,拥有的权限。无论是系统配置还是文件操作,都需要root权限才能进行。一般情况下,我们使用普通用户账号进... [阅读全文]
  • Linux如何使用HTTP进行远程系统监控

    简介http协议概述http协议是 超文本传输协议 ,基于tcp/ip通信协议,用于从万维网服务器传输数据到本地浏览器。它的工作原理基于 客户端-服务器架构 ,浏览器作为客户端通过…

    2024年11月04日 服务器
  • Linux下如何安装与设置Vim编辑器

    本文以centos7.4为例,讲解安装与设置vim编辑器我们安装完centos7.4后,它默认是安装了vi编辑器的,但vim编辑器是没安装或者未完全安装的。第一步:安装vim编辑器…

    2024年11月04日 服务器

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com