首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

通过ssh在几个机器上并行执行命令(使用bash)

通过ssh在几个机器上并行执行命令是一种在分布式系统中实现批量命令执行的方法。使用ssh协议可以远程登录到其他机器,并在远程机器上执行命令。

在实现通过ssh在多个机器上并行执行命令时,可以使用以下步骤:

  1. 配置SSH密钥认证:在执行命令之前,需要确保本地机器与远程机器之间建立了SSH密钥认证,以免每次执行命令都需要输入密码。可以使用ssh-keygen生成密钥对,并将公钥复制到远程机器的authorized_keys文件中。
  2. 编写脚本:可以使用bash脚本编写命令执行的逻辑。脚本中可以使用ssh命令连接到远程机器,并执行相应的命令。可以使用循环结构或并行执行的方式来处理多个机器。
  3. 并行执行命令:为了实现在多个机器上并行执行命令,可以使用工具或命令来实现并行化。以下是一些常用的工具和命令:
    • GNU Parallel:GNU Parallel是一个命令行工具,可以将命令行参数分发到多个机器上并行执行。可以使用parallel命令来实现并行化,例如:
    • GNU Parallel:GNU Parallel是一个命令行工具,可以将命令行参数分发到多个机器上并行执行。可以使用parallel命令来实现并行化,例如:
    • 其中hosts.txt是包含远程机器列表的文件,command是要执行的命令。
    • pdsh:pdsh是一个并行远程Shell命令执行工具,可以在多个机器上并行执行命令。可以使用pdsh命令来实现并行化,例如:
    • pdsh:pdsh是一个并行远程Shell命令执行工具,可以在多个机器上并行执行命令。可以使用pdsh命令来实现并行化,例如:
    • 其中host1host2是远程机器的主机名或IP地址,command是要执行的命令。
    • ClusterSSH:ClusterSSH是一个用于管理和控制多个SSH会话的工具,可以在多个机器上同时执行命令。可以使用cssh命令启动ClusterSSH,然后在窗口中输入命令,即可在多个机器上并行执行。
  • 监控和输出:在命令执行完成后,可以根据需要对输出进行处理或监控。可以将命令输出保存到文件中,或者通过管道传递给其他命令进行进一步处理。

总结: 通过ssh在多个机器上并行执行命令是一种实现批量命令执行的方法。可以使用工具或命令来实现并行化,如GNU Parallel、pdsh或ClusterSSH。在实际应用中,可以根据具体需求选择适合的工具,并结合腾讯云提供的相关产品,如云服务器CVM、弹性伸缩等,来实现更高效的批量命令执行。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Linux环境变量加载顺序分析

环境变量是shell运行时的运行参数,比如执行命令时,就会从PATH指定的路径查找可执行文件。有的程序也会使用环境变量作为参数。...当你发现配置了环境变量,但实际使用时环境变量未生效时,希望这篇文章能对你有所帮助。 我们登录linux有很多种,bash来交互式执行,或者直接非交互式执行命令。...试验后,可以发现,原来这几个的环境变量加载都是不同的。 相关文件: 电脑和初始化相关的是这几个文件。...因此通常不管以何种方式登陆机器后用户获得的第一个shell就是login shell。不输入密码的ssh是公钥打通的,某种意义上说也是输入密码的。...) 图形化界面中打开terminal,Linux: 非登录+交互(non-login + interactive) 10.图形化界面中打开terminal,Mac OS X: 登录+交互(login

1.8K30

Shell 黑科技之匿名函数实现任务并行

最近用shell写了一个小函数,用来集群间批量执行命令并返回结果: for ip in ips do ssh work@$ip "echo 1; exit" 2>/dev/null done...执行下来功能没啥问题,但是性能却一塌糊涂,6台机器执行将近 5s,因为这个 for 循环 ssh 的过程是串行的。...首先想到的是不依赖任何三方工具或库(实际我们 RD 也没有权限安装),有没有比较方便的办法。当然有了,每个 ssh 起来放后台不就行了吗?  ...总结: 解决问题的关键在于 {} 和 () 的区别,外加 set +m: {} 是匿名函数,创建了子 shell 来执行命令 () 是在当前shell下创建了子进程来执行命令 set +m 关闭后台任务控制信息显示.../305933/preventing-bash-from-displaying-done-when-a-background-command-finishes-execut [3] Bash脚本实现批量作业并行

1.5K100

Linux下使用SSH远程执行命令方法收集

对于简单的命令: 如果是简单执行几个命令,则: ssh user@remoteNode "cd /home ; ls" 基本能完成常用的对于远程节点的管理了,几个注意的点: 双引号,必须有。...如果不加双引号,第二个ls命令本地执行 分号,两个命令之间用分号隔开 多行命令可以输入双引号后回车,结尾使用双引号包裹 对于脚本的方式: 有些远程执行的命令内容较多,单一命令无法完成,考虑脚本方式实现...远程执行的内容”<< eeooff“至”eeooff“之间,远程机器的操作就位于其中,注意的点: << eeooff,ssh后直到遇到eeooff这样的内容结束,eeooff可以随便修改成其他形式...@xxx.xxx.xxx.xxx < test.sh 带参数本地脚本 ssh root@xxx.xxx.xxx.xxx 'bash -s' < test.sh helloworld 执行远程服务器的脚本...helloworld 总结 以上所述是小编给大家介绍的Linux下使用SSH远程执行命令方法收集,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。

5K21

红蓝对抗之Linux内网渗透

image001.png 服务器方面,Linux由于开源、稳定、灵活、社区支持等因素,市场占有率远比Windows大,并且广大业务逐步使用docker容器等原因,所以Linux渗透攻击也是蓝军极为常见和必备的技能...这是因为高版本Linux(附录3)中,如果启动bash的的Effective UID与Real UID不相同,而且没有使用-p参数,则bash会将Effective UID还原成Real UID。...3.1 SSH Linux耳熟能详的就是SSH了,我们来看下SSH常用的开启隧道的命令。...场景a:控制A机器时,利用socks代理进入A机器所在内网 ssh -qTfnN -D 1111 root@AIP 输入A机器密码,本地利用proxychains等类似工具连接本地的1111端口的sock5...这里有几个思路和大家一起讨论: 滞空LD_PRELOAD来绕过用户态的hook,busybox同理 利用代码来执行命令 利用ptrace进行日志混淆 关闭或致盲agent通信 7.2 NIDS NIDS

1.8K20

安装ansible以及简单使用

] # 主机组的名称,可自定义,以下的ip为该组内机器的ip 192.168.77.128 ---- 24.17 ansible远程执行命令 完成了ssh密钥认证以及主机组的配置之后就可以通过ansible...可以通过安装libselinux-python来解决: yum install -y libselinux-python 除了使用command模块外,我们还可以使用shell模块来实现远程执行命令...这里的/tmp/passwd和源机器的/etc/passwd是一致的,但如果目标机器存在一个/tmp/passwd目录,则会在/tmp/passwd目录下面创建passwd文件。.../bin/bash echo `date` > /tmp/ansible_test.txt 2.然后把该脚本分发到远程机器: [root@server ~]# ansible testhost -m...3.最后是通过shell模块执行远程机器的shell脚本: [root@server ~]# ansible testhost -m shell -a "/tmp/test.sh" 192.168.77.128

3.3K20

技术|通过 ssh 会话执行 bash 别名

远程主机上设置过一个叫做file_repl的bash别名。当我使用ssh命令登录远程主机后,可以很正常的使用这个别名。...SSH客户端(ssh)是一个登录远程服务器并在远程系统执行shell命令的Linux/Unix命令。它被设计用来两个非信任的机器通过不安全的网络(比如互联网)提供安全的加密通讯。...如何用ssh客户端执行命令通过ssh运行free命令或date命令可以这样做: $sshvivek@server1.cyberciti.bizdate结果为: TueDec2609:02:50UTC2017...你不能直接执行像file_repl这样的别名: $sshuser@remotefile_replUnix系统无法直接通过ssh客户端执行bash别名要解决这个问题可以用下面方法运行ssh命令: $ssh-tuser...可以用来远程机器执行任意的基于屏幕的程序,有时这非常有用。

64830

深度学习分布式训练框架 horovod (3) --- Horovodrun背后做了什么

往往数据和程序是多个节点,所以需要保证执行命令时各节点之间信息的交换。 具体使用之中,就有两个问题: 这个多台机器Open-MPI是如何发现并建立连接的呢?... Open-MPI 启动的时候,可以指定--hostfile或者--host去指定运行要运行任务的 IP 或 Hostname,这样 Open-MPI 就会试图通过 ssh 免秘钥的方式试图去链接对方机器...当然用户也可以通过其他方式给远程机器下发命令,这个可以通过环境变量 OMPI_MCA_plm_rsh_agent指定。...注释说的很清楚:每一个 thread 将使用 ssh 命令远程host之上启动训练job。...然后结合 左面的 slot 信息 和 右面 的可以执行命令环境 之后,得到了可以多线程运行,从而在 多slot 运行的命令。

3.5K20

SSH集群登录、文件同步分发、同步执行脚本

但是,如果通过SSH登录远程主机,然后再执行相同的命令或脚本,那么此时执行又是成功的。两种相似的方法,得到的结果却不同,根本原因在于这两种方式使用bash模式不同。...(1)通过SSH登录后再执行命令和脚本 这种方式会使用Bash的interactive + login shell模式,这里面有两个概念需要解释:interactive和login。...login故名思义,即登陆,login shell是指用户以非图形化界面或者以ssh登陆到机器时获得的第一个shell,简单些说就是需要输入用户名和密码的shell。...~/.bash_login ~/.profile (2)通过SSH直接执行远程命令和脚本 这种方式会使用Bash的non-interactive + non-login shell模式,它会创建一个...no-login shell,顾名思义就是不是登录Linux系统时启动的(比如你命令行提示符输入bash启动)。

1.1K10

理解Linux 终端、终端模拟器和伪终端

用户可以并行的执行几个进程,但每次只与一个进程交互,其他进程在后台工作。...你可以通过 Ctrl+Alt+F3 到 Ctrl+Alt+F6 几个虚拟终端之间切换。按 Ctrl+Alt+F2 回到桌面环境。...X 系统也是运行在一个终端模拟器 Ubuntu 20 它对应的设备是 /dev/tty2,这也是为什么使用 Ctrl+Alt+F2 可以切换到 X 系统的原因。...远程终端 我们经常通过 ssh 连接到一个远程主机,这时候远程主机上的 ssh server 就是一个伪终端 PTY,它同样持有 PTY master,但 ssh server 不再监听键盘事件,以及屏幕绘制输出结果...服务器端 TTY 驱动将字符序列传送给 PTY slave,bash 从 PTY slave读取字符,解释并执行命令 ls -l。

36910

Ansible 自动化运维笔记(总结)

,但是如果修改ansible使用openssh进行ssh连接时将会使用: 1.Client客户端上ssh开启2个端口连接,下面一段话随意加入到指定配置文件里即可....Shell shell 模块可以帮助我们远程主机上执行命令,它与 command 模块不同之处是 shell 模块远程主机中执行命令时,会运行远程主机上的 /bin/sh 程序处理,也就是说它不是直接执行命令...下面来看它的几个常用参数: 命 令 参 数 参 数 解 释 free_form 必要参数,默认会使用,无需手动添加 chdir 指定一个目录,执行命令前首先会切换到指定目录中去 creates 当指定的文件存在时...下面来看它的几个常用参数: 命 令 参 数 参 数 解 释 free_form 必要参数,默认会使用,无需手动添加 chdir 指定一个目录,执行命令前首先会切换到指定目录中去 creates 当指定的文件存在时...all -m file -a "src=/bin/bash path=/tmp/lyshark.hard state=hard force=yes" 6.通过state=absent关键字,删除远程机器的指定文件或目录

2K20

Web Terminal 预备知识

用户可以并行的执行几个进程,但每次只与一个进程交互,其他进程在后台工作。...远程终端 我们经常通过 ssh 连接到一个远程主机,这时候远程主机上的 ssh server 就是一个伪终端 PTY,它同样持有 PTY master,但 ssh server 不再监听键盘事件,以及屏幕绘制输出结果...我们简单梳理一下远程终端是如何执行命令的。 用户客户端的 terminal 中输入 ssh 命令,经过 PTY master、TTY 驱动,到达 PTY slave。...服务器端 TTY 驱动将字符序列传送给 PTY slave,bash 从 PTY slave读取字符,解释并执行命令 ls -l。...服务端使用 node-pty 做 PTY 的操作工具。而通讯方面,SSH 用的是 TCP,Web 能用的也就是 WebSocket 了。

1.4K20

ssh技巧之远程命令

我们平时用ssh命令的大部分情况都是先登录到目标机器,然后再执行各种命令,但有时我们登录目标机器只是为了执行一条命令,比如top查看下当前服务器状态,然后就退出了,在这种情况下,要登录目标机器执行命令这种模式就显得有些麻烦了...先看下ssh命令的具体格式: ssh [options] destination [command] 方括号代表可选,由可见,options和command都是可选的,也就是说,我们使用ssh命令时可以不指定这些部分...下面我们来实验看下: $ ssh u3@h3 pwd /home/u3 $ 由可见,ssh直接帮我们目标机器执行了该命令,并把其输出打印到了我们当前的终端,好方便。...简单总结下: 如果我们没有提供command参数,ssh默认的command其实就是shell(bash或zsh等),ssh会执行对应的shell命令,为我们提供一个shell环境,这样我们就可以目标机器执行各种命令了...查看目标机器home目录硬盘使用情况: $ ssh u3@h3 du -sh '$HOME' 3.0G /home/u3 2.

1.2K10

【小项目】使用shell和expect实现简易的文件分发系统

分发系统介绍 ---- 所谓分发系统就是一个主要用来上线代码或同步文件的脚本,先来看一下需求背景: 我们的一个网站在很多台服务器跑着,假设这个网站的后端是使用PHP编写的,那么当这个后端的PHP代码需要更新或扩展的时候... 构建文件分发系统 ---- 需求背景: 对于大公司而言,肯定时不时会有网站或者配置文件更新,而且使用机器肯定也是好多台,少则几台,多则几十甚至上百台。所以,自动同步文件是至关重要的。...实现思路: 首先要有一台模板机器,把要分发的文件准备好,然后只要使用expect脚本批量把需要同步的文件分发到目标机器即可。...3.还需要编辑一个ip.list,用于存放需要同步的目标机器的IP地址,例如我需要将文件都同步这几个IP的机器: [root@localhost ~/expectFiles]# vim /tmp/ip.list...192.168.77.128 192.168.77.130 需要同步的目标机器的密码最好是一致的,因为只是做实验为了简单化就不使用密钥验证了。

58920

python之fabric模块

simple/ # fab deploy 以上定义了pack和deploy两个任务,如果我们用Fabric部署,只需简单地输入两条命令: $ fab pack $ fab deploy Fabric提供几个简单的...有时,我们允许忽略失败的命令继续执行,比如run(‘rm /tmp/abc’)文件不存在的时候有可能失败,这时可以用with settings(warn_only=True):执行命令,这样Fabric...Fabric是如何在远程执行命令的呢?其实Fabric所有操作都是基于SSH执行的,必要时它会提示输入口令,所以非常安全。更好的办法是指定的部署服务器用证书配置无密码的ssh连接。...-H 指定目标主机,多台主机用‘,’号分隔 -p 远程账号的密码,fab执行时默认使用root账户 -P 以异步并行方式运行多主机任务,默认为串行运行 -R 指定role(角色),以角色名区分不同业务组设备.../bin/bash -l -c' --show=LEVELS 以逗号分隔的输出 --ssh-config-path=PATH SSH配置文件路径 -T N 设置远程命令超时时间

97950

rsync error: protocol incompatibility mismatch

1、问题 今日维护集群环境的时候,遇到了一个小问题,rsync 向集群中的机器传输文件的时候报错: protocol version mismatch -- is your shell clean?...按照提示,ssh remotehost /bin/true > out.dat 执行过后输出的正是远程机器 .bashrc 设置里的一条 echo 提示语句。...需要说明的是: 远端 sshd 进程是通过bash –c”的方式来执行命令(即"非交互式的非登录shell") 但在执行命令之前,ssh的那一次登录本身是“非交互式的登录shell”,非交互式的登录shell...也可以通过bash后面加-i参数打开一个交互式的Shell,具体可以看man bash。...也可以通过bash后面加--login参数打开一个登录Shell。

2.8K60

详解SSH 远程执行任务的方法

下面就对 SSH 的远程操作功能进行一个小小的总结。 远程执行命令 如果我们要查看一下某台主机的磁盘使用情况,是不是必须要登录到目标主机上才能执行 df 命令呢?...当然不是的,我们可以使用 ssh 命令远程的主机上执行 df 命令,然后直接把结果显示出来。...但是当你通过 ssh 远程主机上执行命令时,并不会为这个远程会话分配 TTY。此时 ssh 会立即退出远程主机,所以需要交互的命令也随之结束。...对于引用变量的写法,可以通过下面的方式保证变量被正确解释: ? 注意,我们在上图的命令中为 bash 指定了 -c 参数。...通过重定向 stdin,本地的脚本 test.sh 远程服务器被执行。

2.5K21

快速学习Git-远程仓库

如果使用ssh方式就需要客户端先生成一个密钥对,即一个公钥一个私钥。然后还需要把公钥放到githib的服务器。这两种方式实际开发中都用应用,所以我们都需要掌握。接下来我们先看ssh方式。...ssh密钥生成 windows下我们可以使用 Git Bash.exe来生成密钥,可以通过开始菜单或者右键菜单打开Git Bash ? ?...git bash 执行命令,生命公钥和私钥 命令: ssh-keygen -t rsa ?...执行命令完成后,window本地用户.ssh目录C:\Users\用户名.ssh下面生成如下名称的公钥和私钥: ? ssh密钥配置 密钥生成后需要在github配置密钥本地才可以顺利访问。...搭建Git服务器需要准备一台运行Linux的机器,在此我们使用CentOS。

1.3K20
领券