首页 > 系统相关 >Shell实战之SSH+Shell脚本实现远程控制多主机

Shell实战之SSH+Shell脚本实现远程控制多主机

时间:2024-07-10 20:02:22浏览次数:12  
标签:Shell 主机 cmd 主机名 host 免密 hosts SSH 步骤

问题引入

我在学习Hadoop,Spark等框架时,发现配置伪分布式环境时经常需要同时控制多台主机,Moba自带的MultiExec并不适合同时控制4台以上的主机。因此我自己设计了一段简单的shell脚本实现了这一功能。

准备

在使用这个脚本之前需要预先实现集群间的IP地址映射

vim /etc/hosts

按照 ip +主机名的格式进行配置

还需要配置好免密(具体可以参考其他csdn博主的文章)

具体实现代码

#!/bin/bash
cmd=$1
if [ ! "$cmd" ];then
        cmd="jps"
fi
#提取集群免密通信的虚拟机主机名
hosts=`sed -n '3,$p' /etc/hosts |awk '{print $2}'`

for host in $hosts;do
        echo "---------$host------------"
        ssh root@$host "$cmd"
done

代码分析

步骤一:控制台输入

定义一个cmd变量用于控制台传入shell命令

步骤二:非空判断

非空判断,如果空,则默认输入jps命令判断进程运行情况

步骤三:提取集群免密通信的虚拟机主机名

首先查看hosts下的主机名

然后发现需要跳过前两行

使用sed -n '3,$p'跳过前两行

最后使用|awk '{print $2}输出第二列元素即可

本步骤具体代码如下

hosts=`sed -n '3,$p' /etc/hosts |awk '{print $2}'`

步骤四:遍历主机执行命令

for host in $hosts;do
        echo "---------$host------------"
        ssh root@$host "$cmd"
done

结果测试

输出hello

创建文件夹

测试成功!!!

如果有更好的方法欢迎大家一起讨论。

标签:Shell,主机,cmd,主机名,host,免密,hosts,SSH,步骤
From: https://blog.csdn.net/zzy66666c/article/details/140331986

相关文章

  • sshd管理限制登录配置(centos7.9)
    背景情况:为了公网的主机,被无限的密码爆破,需要对主机的ssh进行安装加固1、首先要禁用root的远程登录和修改ssh的端口vi /etc/ssh/sshd_config#修改端口,不适用22端口作为ssh的登录端口Port10000#修改ssh的root远程登录禁用PermitRootLoginno2、新加一个管理用户,配置免密sudo......
  • python执行shell并获取结果
    在Python中执行Shell命令并获取其结果,通常可以使用subprocess模块。这个模块允许我们启动新的进程,连接到它们的输入/输出/错误管道,并获取它们的返回码。下面是一个详细的示例,展示了如何使用subprocess.run()函数来执行Shell命令并获取其输出。1.示例一:使用subprocess.run()执行......
  • 常见webshell管理工具流量分析
    1.蚁剑蚁剑设置代理后bp抓包,bp看流量方便一点默认编码器流量分析进入文件管理器的两个数据包:解码后的数据为:7=@ini_set("display_errors","0");@set_time_limit(0);functionasenc($out){return$out;};functionasoutput(){$output=ob_get_contents();ob_end_clean();e......
  • python执行shell并获取结果
    在Python中执行Shell命令并获取其结果,通常可以使用subprocess模块。这个模块允许我们启动新的进程,连接到它们的输入/输出/错误管道,并获取它们的返回码。下面是一个详细的示例,展示了如何使用subprocess.run()函数来执行Shell命令并获取其输出。1.示例一:使用subprocess.run()执行l......
  • XShell配置快捷键Ctrl+C和Ctrl+V
    XShell的校园版是一款免费的ssh连接工具,使用范围很广,特别是ShtermClient也把其作为一款默认连接工具。但是,平时工作中的一些习惯的快捷键,还是需要自己进行配置的。进入工具->选项->键盘和鼠标->编辑->新建,按Ctrl+C快捷键,类型选择菜单,菜单选择复制,点击确定,设置成功。Ctrl+V也按照......
  • 【运维自动化-配置平台】如何自动应用主机属性
    主要用于配置主机属性的自动应用。当主机发生模块转移或模块新加入主机时,会根据目标模块配置的策略自动触发修改主机属性,比如主机负责人、主机状态。主机属性自动应用顾名思义是应用到主机上,而主机是必须在模块下的,所以有两种方式配置自动应用。一、按业务拓扑(模块)配置实操演......
  • Shell - /dev/null是什么意思?
    /dev/null是什么意思在Unix和类Unix操作系统(包括Linux)中,/dev/null是一个特殊的文件,被称为“空设备”或“空设备文件”。这个文件会丢弃所有写入到它的数据,就好像一个黑洞一样。当你读取/dev/null时,它立即返回一个文件结束(EOF)标记。在命令行操作中,/dev/null常常被用来丢弃不需要......
  • 在 PowerShell 中,你可以使用一些命令来管理打印机驱动的导入和导出操作。通过这些 Pow
    更高级的PowerShell自动化打印机迁移,可以考虑以下步骤和技术:自动化打印机迁移流程批量导出和导入打印机配置使用PowerShell脚本批量导出和导入多个打印机的配置。可以结合循环和数组来处理多个打印机。powershellCopyCode#批量导出打印机配置$printers=Get-Printe......
  • 【VMware vSphere】没有共享存储的ESXi主机之间如何共享本地存储上的ISO文件。
    当位于vCenterServer中的ESXi主机之间无共享存储,仅具有本地存储时,假如我需要安装虚拟机操作系统,那可以将操作系统ISO镜像文件上传到主机的本地文件存储内,这时在这台主机上执行安装的虚拟机只需要在虚拟机的CD/DVD光驱设备上挂载并从本地存储文件内选择需要的ISO镜像文......
  • 04 安装SSH
    因为每一个老嵌入式都喜欢使用他的老windows进行开发,因此我决定使用SSH来开发rust,这样也不用在虚拟机里边再装一个vscode.参考博客如何在windows下使用vscode连接linux虚拟机进行代码开发_windowsvscode编辑linux文件-CSDN博客Windows环境使用VSCode调试Linux环境C/C++代......