Chinaunix

标题: 一台服务器给多个刀片同时安装rpm包,求脚本 [打印本页]

作者: zhangcarva    时间: 2013-06-29 17:56
标题: 一台服务器给多个刀片同时安装rpm包,求脚本
各位大侠,我想求助下:
我之前用一台服务器给40个HP刀片kickstrt安装的系统,完成后还需要给40个刀片,每台安装三个系统自带的rpm包,这三个包有很多依赖关系,即使重新K系统也不行,需要用yum源安装
请问谁能给我一个简答的脚本执行下,我刚毕业不是很会写脚本,请帮助我下,谢谢了,
作者: Shell_HAT    时间: 2013-06-29 18:33
检查一下你的服务器上没有没有expect
作者: rdcwayx    时间: 2013-06-29 19:04
你说的是 kickstart 吧。
作者: rdcwayx    时间: 2013-06-29 19:04
你说的是 kickstart 吧。
作者: zhangcarva    时间: 2013-06-29 22:18
是这样的,我已经kickstart 完了多台服务,但是发现kickstart完的系统,没有驱动软件。现在想通过shell脚本,把驱动软件分发到这几台服务器上并且实现自动安装。由于小弟,刚刚接触脚本,没有思路,能力有限。请各位大侠帮帮忙,谢谢了。
作者: Juice12    时间: 2013-07-01 09:30
用expect比较麻烦啊,你可以建立ssh信任,然后从一台服务器用一个循环登录到其它服务器上执行yum -y package_name来安装
作者: nathanielwen    时间: 2013-07-01 10:41
用expect也不算麻烦吧?我丢人现眼一下,贴个代码好了。
  1. #!/bin/bash

  2. #from nathanielwen!
  3. #2013-5-18!
  4. #version 1.0

  5. autologin(){
  6. expect -c "
  7. set timeout -1;
  8. spawn ssh -o \"StrictHostKeyChecking no\" root@$1
  9. #不需要检验指纹信息,否则会出现(yes|no)的选项
  10. expect *assword*;
  11. #要求输入Password,Linux系统上是password,Unix上是Password
  12. send $2\r;
  13. expect *#*;
  14. #因为是root用户,所以提示符默认是#
  15. send \"yum install -y tree\r\";
  16. send \"exit\r\";
  17. interact;"
  18. }

  19. Passwd=nat;
  20. #密码是nat
  21. cnt=`cat iplist | wc -l`;
  22. #所有需要登录的ip,记录在iplist里面
  23. for((i=1;i<=cnt;i++)){
  24. DesIP=`sed -n "$i p" iplist`;
  25. #取出iplist的第i行,赋给DesIP
  26. autologin $DesIP $Passwd;
  27. #DesIP是需要ssh的地址,Passwd是登录密码
  28. }
复制代码
我在自己机器上试过了,应该能跑,系统是redhat 6,要登录的ip我记录在iplist里面,这次是那127.0.0.1做了个实验,密码是"nat",如果每台主机的密码不一样,就也像iplist一样记录到文件里面吧。我用yum装了个"tree",改成你自己的应该就好了吧?之前用类似的脚本登录过hp主机,理论上是没问题,欢迎批评指正~
作者: 一粒星尘    时间: 2013-07-02 11:34
Juice12 发表于 2013-07-01 09:30
用expect比较麻烦啊,你可以建立ssh信任,然后从一台服务器用一个循环登录到其它服务器上执行yum -y packag ...


按照五楼的方法,搞成ssh,然后建立个服务器ip表,然后pssh安装。
作者: dn833    时间: 2013-07-02 11:59
LZ可能需要的是
  1. for ip in `cat ip.list`;do ssh -p port user@${ip} "yum -y install ooxx";done
复制代码

作者: 永夜之魂    时间: 2013-07-03 20:01
回复 9# dn833


同时安装的话我觉得
  1. for ip in `cat ip.list`;do ssh -p port user@${ip} "yum -y install ooxx" & done
复制代码
这样效率会高点
作者: dn833    时间: 2013-07-04 03:21
回复 10# 永夜之魂


    是的。
作者: kooleon    时间: 2013-07-04 16:56
回复 10# 永夜之魂
如果打通了通道,还是楼主说的pssh会比你这个快一点。pssh是同时执行的,这个是循环,会慢一点。


   




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2