[转帖]远程执行Linux命令和使用for循环执行Linux命令

远程,执行,linux,命令,使用,for,循环 · 浏览次数 : 0

小编点评

## 使用for循环执行Linux命令 **1.手动逐条执行** ```bash for i in k8s-master02 k8s-master03 k8s-node01 k8s-node02; do scp -r /etc/yum.repos.d/* $i:/etc/yum.repos.d/; done ``` **解析:** * `for i in k8s-master02 k8s-master03 k8s-node01 k8s-node02; do`:遍历字符串中的每个主机名称。 * `scp -r /etc/yum.repos.d/* $i:/etc/yum.repos.d/;`:对于每个主机,将 `/etc/yum.repos.d` 下的所有文件复制到与其所在的节点的 `/etc/yum.repos.d` 下。 **2.远程执行Linux命令** ```bash ssh root@k8s-master02 \"hostnamectl\" ssh root@192.168.19.162 \"hostnamectl\" ssh -t root@192.168.19.162 'hostnamectl' ``` **解析:** * `ssh root@k8s-master02 \"hostnamectl\"`:连接 к `k8s-master02` 主机,执行 `hostnamectl` 命令。 * `ssh root@192.168.19.162 \"hostnamectl;df -h\""`:连接到 `k8s-master02` 主机,执行 `hostnamectl` 和 `df -h` 命令。 **3.使用for循环远程执行Linux命令** ```bash for i in k8s-master01 k8s-master02 k8s-master03 k8s-node01 k8s-node02; do ssh -t root@$i 'yum install -y kernel-lt-5.4.218 && yum install -y kernel-lt-devel-5.4.218;grub2-set-default 0' done ``` **解析:** * `for i in k8s-master01 k8s-master02 k8s-master03 k8s-node01 k8s-node02; do`:遍历字符串中的每个主机名称。 * `ssh -t root@$i '...'`:对每个主机执行 `yum install` 命令,并将命令输出到终端中。 **4.重启主机** ```bash for i in k8s-master02 k8s-master03 k8s-node01 k8s-node02 k8s-master01; do ssh -t root@$i 'reboot' done ``` **解析:** * `for i in`:循环执行 `reboot` 命令。 **总结:** 使用for循环可以自动化执行多个Linux命令,并实现对集群中所有节点的操作。

正文

记录:363

场景:在CentOS 7.9操作系统上,在主机A上远程执行主机B上的Linux命令。使用for循环执行Linux命令,比如把主机A的/etc/yum.repos.d目录下文件,分发到集群其它节点。

1.使用for循环执行Linux命令

场景:把k8s-master01主机文件分发(拷贝)到其它节点。

操作主机:k8s-master01。

(1)命令执行

手动逐条执行:scp -r /etc/yum.repos.d/* root@k8s-master02:/etc/yum.repos.d/

for循环命令:for i in k8s-master02 k8s-master03 k8s-node01 k8s-node02; do scp -r /etc/yum.repos.d/* $i:/etc/yum.repos.d/; done 

(2)命令解析

解析:此命令直接在客户端控制台执行;

for i in,是从字符串k8s-master02 k8s-master03 k8s-node01 k8s-node02中取值,以空格分割,此字符串是主机名称。

do done,是执行命令操作。

scp -r /etc/yum.repos.d/* $i:/etc/yum.repos.d/,是执行拷贝命令。

$i,是从for循环中取的变量值,也就是主机名称。

2.远程执行Linux命令

场景:在主机k8s-master01操作,把主机k8s-master02上需要执行的命令,不手动切换或者登录到主机k8s-master02,也能执行命令。

以下操作均在k8s-master01主机操作。

(1)执行一条命令

案例:查看主机k8s-master02的内核等信息。

命令:ssh root@k8s-master02 "hostnamectl"

命令:ssh root@192.168.19.162 "hostnamectl"

命令:ssh -t root@192.168.19.162 'hostnamectl'

解析:使用ssh命令执行远程命令,ssh root@k8s-master02,用户@主机名称;root@192.168.19.162,是主机@IP;-t,ssh会保持登录状态,直到交互命令结束。双引号或者单引号中是,需要远程机器执行的命令。

(2)执行多条命令

案例:查看主机信息和文件系统信息

命令:ssh root@k8s-master02 "hostnamectl;df -h"

命令:ssh -t root@k8s-master02 "hostnamectl;df -h"

解析:执行多条命令,使用分号分割。

3.使用for循环远程执行Linux命令

(1)安装软件

场景:在主机k8s-master01执行命令,对集群内全部节点升级内核版本。

命令:for i in k8s-master01 k8s-master02 k8s-master03 k8s-node01 k8s-node02; do ssh -t root@$i 'yum install -y kernel-lt-5.4.218 && yum install -y kernel-lt-devel-5.4.218;grub2-set-default 0'; done

解析:for i in,取主机名称;ssh -t root@$i,执行远程命令;yum install -y kernel-lt-5.4.218 && yum install -y kernel-lt-devel-5.4.218;grub2-set-default 0,安装和设置命令。

(2)重启主机

场景:在主机k8s-master01执行命令,重启集群全部节点,把主机k8s-master01放到最后面执行。

命令:for i in k8s-master02 k8s-master03 k8s-node01 k8s-node02 k8s-master01; do ssh -t root@$i 'reboot'; done

解析:for i in,循环执行reboot重启命令。

以上,感谢。

2022年12月13日

文章知识点与官方知识档案匹配,可进一步学习相关知识
云原生入门技能树首页概览8445 人正在系统学习中

与[转帖]远程执行Linux命令和使用for循环执行Linux命令相似的内容:

[转帖]远程执行Linux命令和使用for循环执行Linux命令

记录:363 场景:在CentOS 7.9操作系统上,在主机A上远程执行主机B上的Linux命令。使用for循环执行Linux命令,比如把主机A的/etc/yum.repos.d目录下文件,分发到集群其它节点。 1.使用for循环执行Linux命令 场景:把k8s-master01主机文件分发(拷贝

[转帖]关于winrm远程ps登录执行出现中文乱码和?乱码问题及其解决办法

https://segmentfault.com/a/1190000040566946?utm_source=sf-similar-article python的winrm库提供了命令行远程连接的功能,可以实现远程登录并进行执行指令的功能:1.远端登录 import winrm auth = (us

[转帖]备份VCSA内置Postgresql数据库

首先命令行远程登录到VCSA服务器,然后执行如下命令停掉VCSA的核心服务vmware-vpxd: vCenterServerAppliance:~ # service vmware-vpxd stop Stopping VMware vSphere Profile-Driven Storage S

[转帖]JVM metaspace outofmemory

https://www.jianshu.com/p/1ca44f94e42f 解决服务器进程退出问题(metaspace溢出) 现象 策划反应服务器进不去,远程看了一下进程消失了(crash) 有时候也会出现能登录,但是无法执行操作(进程还在),无法被正常shutdown 进程根目录下出现了java

[转帖]jconsole远程监控认证,java远程监控,jmx监控应用,jmx ssl配置,jconsole ssl连接远程应用

知识普及 jmx JMX(java Management Extensions)是一个Java平台的管理和监控接口。任何程序,只要按JMX规范访问这个接口,就可以获取所有管理与监控信息,jconsole与Java VisualVM等常见监测工具都是基于jmx,JMX不但可以用于管理JVM,还可以管理

[转帖]ssh 远程执行命令

https://www.cnblogs.com/youngerger/p/9104144.html SSH 是 Linux 下进行远程连接的基本工具,但是如果仅仅用它来登录那可是太浪费啦!SSH 命令可是完成远程操作的神器啊,借助它我们可以把很多的远程操作自动化掉!下面就对 SSH 的远程操作功能进

[转帖]Linux ssh远程执行命令

[root@slave1 docker]# vi remoteShellExec.sh [root@slave1 docker]# #!/bin/bash passwd='root@123' /usr/bin/expect<

[转帖]通过 SSH 在远程 Linux 系统上执行命令

https://linux.cn/article-15263-1.html 通过安全的网络连接在远程计算机上调用命令或程序。 有一天,我正在测试如何在 将文件或目录复制到多个位置和系统时保持完整的文件权限。当我想检查远程系统上的文件权限时,我必须通过 SSH 登录它并检查属性。从远程系统多次登录和注

[转帖]CVE-2020-5902:F5 BIG-IP 远程代码执行漏洞复现

漏洞复现 Timeline Sec 2020-09-29 9,863 关注我们,一起学安全!本文作者:TeddyGrey@Timeline Sec本文字数:1197阅读时长:3~4min声明:请勿用作违法用途,否则后果自负0x01 简介 F5 BIGIP 链路控制器用于最大限度提升链路性能与可用性的

[转帖]03-rsync传输模式(本地传输、远程方式传输、守护进程模式传输)

https://developer.aliyun.com/article/885801?spm=a2c6h.24874632.expert-profile.282.7c46cfe9h5DxWK 简介: 1.Rsync传输模式 rsync大致使用三种主要的数据传输方式 本地方式 远程方式 守护进程 1