linux多台服务器批量执行命令(linux的服务器批量互信)

linux 如何快速给500 台机器 执行同一条命令

要实现批量部署,前提是标准化,和自动化

1.自动化可以完成大量重复性工作

2.标准化是部署对象必须有一定的标准

比如:账号user1密码是usr1,user2密码是usr2.。。

如题:

假设那500台机子IP为 192.168.1.1-250,192.168.2.1-250

第一种情况(简单):

管理节点已经ssh公钥传所有主机

[root@master ~]# ssh-keygen

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa):

/root/.ssh/id_rsa already exists.

Overwrite (y/n)?

[root@master ~]# ssh-copy-id /root/.ssh/id_rsa.pub 192.168.1.1

我们只要执行两个循环就能完成需求

for i in {1..250}; do ssh 192.168.1.$i \"echo 1 /etc/a.txt \";done

for i in {1..250}; do ssh 192.168.2.$i \"echo 1 /etc/a.txt \";done

第二种情况只能用密码登陆

要求是IP,密码必须满足标准化

我这边只有一个ssh捕捉信号的脚本(完成非交互式输入密码),虽然没有针对需求,但楼主可以参考下。结合第一种方法完成需求。

vim /ssh.sh

#!/usr/bin/expect

# 设置超时时间为 60 秒

set timeout 60

# 设置要登录的主机 IP 地址

set host 192.168.0.4

# 设置以什么名字的用户登录

set name root

# 设置用户名的登录密码

set password 123456

#spawn 一个 ssh 登录进程

spawn ssh $host -l $name

# 等待响应,第一次登录往往会提示是否永久保存 RSA 到本机的 know hosts 列表中;等到回答后,在提示输出密码;之后就直接提示输入密码

expect {

\"(yes/no)?\" {

send \"yes\\n\"

expect \"assword:\"

send \"$pasword\\n\"

}

\"assword:\" {

send \"$password\\n\"

}

}

expect \"#\"

# 下面测试是否登录到 $host

send \"uname\\n\"

expect \"Linux\"

send_user \"Now you can do some operation on this terminal\\n\"

# 这里使用了 interact 命令,使执行完程序后,用户可以在 $host 终端进行交互操作。

Interact

linux一个脚本可以实现让多个linux服务器执行相同的命令吗?

可以,先把命令做成一个目标命令脚本,做一个批量脚本,把目标命令脚本传输到各个服务器上分别执行

如何批量同时控制5台linux主机

1、在本机安装SSH工具,(SSH工具有很多比如xShell、FianlShell)

2、在Linux中配置ssh服务,

3、本机打开SSH工具配置Linux的ip地址及端口号即可同时连接多台Linux主机进行操作。

望采纳。

Linux多台主机批量执行命令

指定一台主机作为信任主机,这样从这台主机登录其他机器就不需要密码了。

设置信任主机:

假设有四台机器:192.168.2.1~192.168.2.4,其中192.168.2.1为信任机,那么在192.168.2.1上运行如下命令:

$.sh-keygen -t rsa //此处一路回车,生成秘钥

$scp .ssh/id_rsa.pub 192.168.2.2:~/ //把秘钥拷贝到其他远程机器

$ssh 192.168.2.2 ‘cat id_rsa.pub .ssh/authorized_keys’ //(远程执行命令)在远程机器上生成认证文件

经过这几步,从192.168.2.1 ssh登陆192.168.2.2时,就不会再需要输入密码了。同样的步骤再执行3、4的极其。

文本文件hostlist可以如下

192.168.2.2

192.168.2.3

192.168.2.4

#!/bin/shdoCommand(){    

hosts=`sed -n\'/^[^#]/p\'hostlist`

for   host  in   $hosts

do

echo \"\"

echo  HOST$host

ssh  $host  \"$@\" 

done

return 0

}

if  [  $# -lt 1 ]

then

echo \"$0cmd\" exit 

fi

do  Command \"$@\"

echo \"return from doCommand\"

执行命令(记得先对doCommand.s

h增加执行权限 chmod u+x doCommand.sh)

./doCommand.sh “ls -al /root/”

这样该脚本就会在每台机器上执行”ls -al /root/”这个命令,并返回结果在信任主机上。

未经允许不得转载:便宜VPS网 » linux多台服务器批量执行命令(linux的服务器批量互信)