免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4564 | 回复: 6
打印 上一主题 下一主题

在多台服务器上执行相同指令的脚本或者命令 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-03-04 15:13 |只看该作者 |倒序浏览
如题,经常碰到做集群时,要在多台相同系统环境下安装同一个软件的问题,请教一下有没有相关的脚本或者指令,小弟shell新手,每次一台一台ssh登陆,觉得效率太低了。

论坛徽章:
0
2 [报告]
发表于 2010-03-04 15:14 |只看该作者
expect 吧

论坛徽章:
0
3 [报告]
发表于 2010-03-04 15:21 |只看该作者
能给个脚本吗

论坛徽章:
1
巨蟹座
日期:2014-06-04 13:33:30
4 [报告]
发表于 2010-03-04 15:28 |只看该作者
expcet perl ruby ...

论坛徽章:
0
5 [报告]
发表于 2010-03-04 15:45 |只看该作者
for {set i 1} {$i<=30} {incr i} {
spawn ssh -l root 125.1.1.$i
expect "*password: "
sleep 5
send "QwErT\r"
send "sh /root/install.sh"
interact
}
借鉴了一个脚本,但是我觉得灵活性不够,对于上面的ip地址范围,我想确认一个比较准确的
用read,例如
echo "please type a start ip "
read start
echo "please type the end ip"
read end
for {set i $start} {$i<=$end} {incr i} {
spawn ssh -l root 125.1.1.$i
expect "*password: "
sleep 5
send "password"
send "sh /root/install.sh"
interact
}

请教啊~~~~

论坛徽章:
0
6 [报告]
发表于 2010-03-04 16:02 |只看该作者

论坛徽章:
0
7 [报告]
发表于 2010-03-04 22:14 |只看该作者
论坛上有很多类似的,发一个:
#modify_XXX.sh
#!/bin/bash

dir=/home/test

while read line
do
host=`echo $line| awk '{print $1}'`
passwd=`echo $line | awk '{print $2}'`
$dir/expect_ssh.sh $host $passwd &
done < $dir/host.txt


#expect_ssh.sh
#!/usr/bin/env expect

set HOST [lindex $argv 0]
set PASSWD [lindex $argv 1]
spawn ssh root@$HOST
expect  "(yes/no)?" { send "yes\n" }
expect "*password:" { send "$PASSWD\n" }
expect "*password:" { send "$PASSWD\n" }
expect "*#" { send "useradd -u 0 -g 0 username\n" } #执行相关操作,比如adduser
expect eof

#host.txt格式,可从数据库中导出

IP           passwd


我一般用这个来修改多台机器的密码,不过一同事用perl写的,速度要比我这快多
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP