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

如题echo1>/etc/a.txt如何快速实现给500台机器执行这条命令?... 如题 echo 1 > /etc/a.txt
如何快速实现给500 台机器执行这条命令?
展开
 我来答
傲慢的王子啊
推荐于2016-11-29 · TA获得超过162个赞
知道小有建树答主
回答量:154
采纳率:0%
帮助的人:159万
展开全部
要实现批量部署,前提是标准化,和自动化
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
The_viola
2012-04-17 · TA获得超过865个赞
知道小有建树答主
回答量:464
采纳率:0%
帮助的人:383万
展开全部
Unix expect 工具,其实很多工具都可以实现的,看你自己如何做了,希望能帮到你!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zxc570157491
2012-04-17 · TA获得超过100个赞
知道答主
回答量:99
采纳率:0%
帮助的人:93.2万
展开全部
最好的方法就是使用组播了,可以编程实现
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式