免费注册 查看新帖 |

Chinaunix

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

请教一个for循环的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-09-11 16:45 |只看该作者 |倒序浏览
大家好,我现在有100台机器,每台机器的ip是按照192.168.0.1-192.168.0.100的顺序配置,现在每台机器上需要装一驱动程序,我已经写成了脚本(就是拷贝几个文件到lib目录)放在每台机器的root目录下,请问我如何用for循环来在每台机器上执行那个脚本。注:机器之间的rsh和ssh都没配通。

论坛徽章:
0
2 [报告]
发表于 2010-09-11 17:25 |只看该作者
自己想到的方法是在192.168.0.1上执行
for i in`seq 2 100`
do
ssh 192.168.0. $i sh xxxx.sh
done

这样的话就是每台机器都要输入密码,不知道有没有更简单的办法,欢迎大家讨论。

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
3 [报告]
发表于 2010-09-11 20:20 |只看该作者
回复 2# 芬达7402


ssh key

论坛徽章:
2
IT运维版块每日发帖之星
日期:2016-02-10 06:20:01IT运维版块每日发帖之星
日期:2016-02-11 06:20:00
4 [报告]
发表于 2010-09-12 16:56 |只看该作者
他说SSH没配通

论坛徽章:
0
5 [报告]
发表于 2010-09-13 09:54 |只看该作者
expect

论坛徽章:
0
6 [报告]
发表于 2010-09-13 17:33 |只看该作者
rsh和ssh都没配通   具体指什么?

论坛徽章:
0
7 [报告]
发表于 2010-09-13 17:34 |只看该作者
回复 1# 芬达7402


    肯定要配ssh啊,不然搞不了把。

论坛徽章:
0
8 [报告]
发表于 2010-09-13 18:12 |只看该作者
我觉像这样100 台机器 用 expect 完全可以解决....
shell:
#! /usr/bin/expect -f
for {set i 2} {$i< 101} {incr i} {
set ip 192.168.0.$i
set pwd xxxx
spawn ssh $ip
expect {
"*continue connecting (yes/no)?*"
{
  send  "yes\r"
  exp_continue
}

"*assword*"
{
send "$pwd\r"
exp_continue
}
"*permisson*"
{
send_user "ip error!\n"
}
"*Last login*"
{
send "./xxx.sh\r"
exp_continue
}
}
}
输出不怎么好看..... 而且是串行的.....
下面写了个很挫的python脚本(因为是多线程的 个人认为比较好):
#! /usr/bin/python
import paramiko
import pexpect
import threading

def myssh(user,ip,password):
        cmd=“./xxx.sh”
        ssh=paramiko.SSHClient()
        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        try:
            ssh.connect(ip,username=user,password=password)
        except:
            print "connect to %s failed!!" %ip
        else:
                i,o,e=ssh.exec_command(cmd)
                print o.read()
for i in range(2,101):
    ip ="192.168.0." + str(i)
    th=threading.Thread(target=myssh,args=("root",ip,"password"))  
    th.start()

仅供参考(新手初写,高手包涵)........

论坛徽章:
0
9 [报告]
发表于 2010-09-19 13:38 |只看该作者
我觉像这样100 台机器 用 expect 完全可以解决....
shell:
#! /usr/bin/expect -f
for {set i 2} {$i< ...
fllintel 发表于 2010-09-13 18:12


感谢这位兄弟的热心回复,多谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP