关于并行SSH运行命令和文件复制的一些总结

 由于工作中要操作几十台机器,因此研究了一下如何同时对一组机器进行操作

我个人平时喜欢用xshell,因为可以开多个窗口同时发送命令,但是这也仅限于2-5台的时候,再多就不行了。另外前人留下了一些脚本,如果直接运行,需要敲很多次密码。为了减轻负担:

1,由于现在的工作方式是先登录跳板机,再登陆生产机,而跳板机的系统配置我没有权限修改的,所以在个人目录创建配置文件,.ssh/config 加入StrictHostKeyChecking no,这样就会自动把新机器加入到known_hosts.

2,利用ssh-agent和ssh-add。先eval `ssh-agent`,然后ssh-add,网上说eval `ssh-agent`可以加到.bashrc中,但是这么做以前的脚本就有问题,原因不明。最后在xshell中加logon scripts,在登陆成功的时候让它自动输入这两条命令

把公钥复制到生产机也可以免除输入密码,不过我觉得能在管理机上解决的问题,最好不要通过去改生产机解决。

3,并行ssh的工具很多,google了一下,试验了几种,最后选定了pssh,这是一个工具集:pssh可以并行运行命令,pscp可以把本地文件复制到多个目标机,pslurp可以把多个目标机上的相同文件复制到本地各自的文件夹。其他的还有prsync等,暂时用不到。

其他的工具:

clusterssh,可以开多个SSH窗口,适合交互式场景

tentakel和dsh,只有发送命令,tentakel有一种类似shell的交互界面

4,先ssh再sudo的问题,一般sudo是要人交互输入密码的,这些并行工具运行sudo时会报错。sudo -S可以从标准输入读密码,所以可以把密码写一个环境变量比如 read -s pass,echo $pass | sudo -S 即可,这还取决于ssh的伪终端的配置。还有一些工具软件可以解决这个问题,比如sshsudo+sshpass,可以并行。

5,pssh安装,需要先安装python的setuptools,跳板机上有gcc和python,但是系统路径和系统配置我都没有权限,所以统统装到自己的个人目录,我一般在编译的时候指定--prefix=$HOME,对python来说,还要在.bashrc中添加export PYTHONPATH=~/lib/python2.4/site-packages:$PYTHONPATH

bash本身有brace expansion,集团内广泛使用的类似server[1..9].taobao.com的扩展方法可以通过这一特性实现。例如

pssh -H '`echo server{1,2}a{1..9}.tanx.cm{3,4,6}`'  pwd

通过以上手段,现在已经可以不输入密码运行以前的脚本

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嘉诩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值