根据以往运维工作中操作经验来说,当管理上百台上千台服务器时,选择一款批量操作工具是及其有必要的。
早期习惯于在ssh信任关系的前提下做for;do;done循环语句的批量操作,后来逐渐趋于使用批量工具操作:
1)pssh工具,它需要提前做好key关联的ssh信任关系,比起for循环语句,我之前还是比较喜欢用pssh。
    具体用法见于:http://www.cnblogs.com/kevingrace/p/6378719.html
2)expect 最大的有点就是交互,但是要成高性能的话,需要自己写多线程的。
    参考:http://www.cnblogs.com/kevingrace/p/5900303.html
3)python利器,用过一段时间,该有的都有的,很是强大。

from fabric import env
env.hosts = ['user1@host1:port1', 'user2@host2.port2']
env.passwords = {'user1@host1:port1': 'password1', 'user2@host2.port2': 'password2'}

4)最后,还是比较看好salt-ssh。
salt-ssh可以独立运行的,不需要minion端。salt-ssh可以代替expect之类的密码推送脚本,看起来功能不比expect差 。 salt-ssh 用的是sshpass进行密码交互的。

下面就对salt-ssh的使用做一简单梳理:
1)安装
[root@bastion-IDC ~]# wget http://ftp.linux.ncsu.edu/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
[root@bastion-IDC ~]# rpm -ivh epel-release-6-8.noarch.rpm --force
[root@bastion-IDC ~]# yum install -y salt-ssh

2)配置使用
可以把要执行的信息,比如ip,帐号,密码,端口等都放到一个文件里面。当然文件路径是可以随便定义的,官方是指定到了/etc/salt/roster。如下:
[root@linux-node1 ~]# cat /etc/salt/roster

web1:
host: 192.168.1.118 //前面留四个空格,冒号后空一格
user: root //前面留四个空格,冒号后空一格
password: PASSWORD //前面留四个空格,冒号后空一格
port: 22 //前面留四个空格,冒号后空一格
web2:
host: 192.168.1.105
user: root
password: PASSWORD
port: 22
web3:
host: 192.168.1.19
user: root
password: K46u@!kB9G
port: 25791

然后执行批量操作命令:
[第一次执行的时候,有的机器可能会提醒输入ssh初次登录询问yes/no,如果要去掉这个yes/no的询问环节,只需要修改本机的/etc/ssh/ssh_config文件中的"# StrictHostKeyChecking ask" 为 "StrictHostKeyChecking no",然后重启sshd服务即可]
[root@linux-node1 ~]# salt-ssh "*" -r 'free -m'

web3:
----------
retcode:
254
stderr: stdout:
The host key needs to be accepted, to auto accept run salt-ssh with the -i flag:
The authenticity of host '192.168.1.109 (192.168.1.109)' can't be established.
RSA key fingerprint is 7d:83:12:5d:85:c4:36:c9:21:41:c2:90:89:5b:0a:f5.
Are you sure you want to continue connecting (yes/no)?
web2:
----------
retcode:
0
stderr: stdout:
total used free shared buff/cache available
Mem: 3951 52 2524 20 1374 3610
Swap: 534 0 534 web1:
----------
retcode:
0
stderr: stdout:
total used free shared buffers cached
Mem: 3832 3617 215 0 174 1930
-/+ buffers/cache: 1511 2320
Swap: 1535 36 1499

特别注意:
salt-ssh第一次执行是根据roster文件里配置的账号密码推送密码,来实现自动交互的。
执行完了后会在目标服务器里面,追加master端(即源机器)的key。
然后就可以删除roster里面的passwd密码条目了,删除roster文件里的密码条目后,不影响后批量操作的执行。
如下:
把roster文件里的password条目删除后,还是可以运行,这里就不是用sshpass推送密码了,而是直接通过key了 !!!
[root@linux-node1 ~]# cat /etc/salt/roster

web1:
host: 192.168.1.118
user: root
port: 22
web2:
host: 192.168.1.105
user: root
port: 22
web3:
host: 192.168.1.19
user: root
port: 25791

[root@linux-node1 ~]# salt-ssh "*" -r 'df -h'

web3:
----------
retcode:
0
stderr: stdout:
Filesystem Size Used Avail Use% Mounted on
udev 2.0G 0 2.0G 0% /dev
tmpfs 396M 21M 375M 6% /run
/dev/vda1 3.9G 2.3G 1.5G 61% /
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/vda6 11G 26M 9.6G 1% /home
cgmfs 100K 0 100K 0% /run/cgmanager/fs
tmpfs 396M 0 396M 0% /run/user/0 web1:
----------
retcode:
0
stderr: stdout:
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
8.1G 4.8G 2.9G 63% /
tmpfs 1.9G 0 1.9G 0% /dev/shm
/dev/vda1 190M 37M 143M 21% /boot web2:
----------
retcode:
0
stderr: stdout:
Filesystem Size Used Avail Use% Mounted on
udev 2.0G 0 2.0G 0% /dev
tmpfs 396M 21M 375M 6% /run
/dev/vda1 3.9G 2.1G 1.7G 56% /
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/vda6 11G 26M 9.6G 1% /home
cgmfs 100K 0 100K 0% /run/cgmanager/fs
tmpfs 396M 0 396M 0% /run/user/0

如下:--roster-file参数后面跟的是配置文件,如果是官方指定的配置文件/etc/salt/roster,则可以省略。
如果是自己自定义的文件,则需要用这个参数指定
[root@linux-node1 ~]# salt-ssh "*" --roster-file /etc/salt/roster -r 'uptime'

web2:
----------
retcode:
0
stderr: stdout:
04:41:49 up 79 days, 15:22, 1 user, load average: 0.00, 0.00, 0.00 web1:
----------
retcode:
0
stderr: stdout:
04:41:57 up 75 days, 17:05, 3 users, load average: 0.02, 0.16, 0.20 web3:
----------
retcode:
0
stderr: stdout:
04:41:42 up 79 days, 6:42, 1 user, load average: 0.00, 0.00, 0.00

自动化批量管理工具salt-ssh - 运维小结的更多相关文章

  1. 自动化批量管理工具pssh - 运维小结

    pssh提供OpenSSH和相关工具的并行版本.包括pssh,pscp,prsync,pnuke和pslurp.该项目包括psshlib,可以在自定义应用程序中使用.pssh是python写的可以并发 ...

  2. MySQL 5.7 新备份工具mysqlpump 使用说明 - 运维小结

    之前详细介绍了Mysqldump备份工具使用,下面说下MySQL5.7之后新添加的备份工具mysqlpump.mysqlpump是mysqldump的一个衍生,mysqldump备份功能这里就不多说了 ...

  3. 用自动化运维工具解放IT运维

    何谓自动化运维,即在最少的人工干预下,结合运用脚本与第三方工具,保证业务系统7*24小时高效稳定运行.这应该是所有业务系统运维终极目标. 我们对运维的要求通常是: 1.事前预警 在故障出现之前,管理人 ...

  4. 集群管理工具Salt

    集群管理工具Salt 简介 系统管理员(SA)通常需要管理和维护数以百计的服务器,如果没有自动化的配置管理和命令执行工具,那么SA的工作将会变得很繁重.例如,要给集群中的每个服务器添加一个系统用户,那 ...

  5. 【Python之旅】第六篇(七):开发简易主机批量管理工具

    [Python之旅]第六篇(七):开发简易主机批量管理工具 python 软件开发 Paramiko模块 批量主机管理 摘要: 通过前面对Paramiko模块的学习与使用,以及Python中多线程与多 ...

  6. windows下运行的linux服务器批量管理工具(带UI界面)

    产生背景: 由于做服务器运维方面的工作,需要一人对近千台LINUX服务器进行统一集中的管理,如同时批量对LINUX服务器执行相关的指令.同时批量对LINUX服务器upload程序包.同时批量对LINU ...

  7. Linux系统——Ansible批量管理工具

    批量管理工具: (1)ansible 操作简单(适用于500台以下服务器) (2)saltstack 比较复杂(一般适用于1000-4w台服务器) (3)puppet超级复杂 systemctl(统一 ...

  8. SuperEdge 云边隧道新特性:从云端SSH运维边缘节点

    背景 在边缘集群的场景下边缘节点分布在不同的区域,且边缘节点和云端之间是单向网络,边缘节点可以访问云端节点,云端节点无法直接访问边缘节点,给边缘节点的运维带来很大不便,如果可以从云端SSH登录到边缘节 ...

  9. Python开发程序:简单主机批量管理工具

    题目:简单主机批量管理工具 需求: 主机分组 登录后显示主机分组,选择分组后查看主机列表 可批量执行命令.发送文件,结果实时返回 主机用户名密码可以不同 流程图: 说明: ### 作者介绍: * au ...

随机推荐

  1. 纯CSS选项卡

    html: <!doctype html> <html> <head> <meta charset="utf-8"> <tit ...

  2. Linux 内存文件系统

    Linux内存文件系统:可满足高IO的要求 ramdisk: 基于虚拟在内存中的其他文件系统(ex2fs). 挂载方式:mount /dev/ram /mnt/ramdisk ramfs: 物理内存文 ...

  3. 开发测试技巧|辅助开发调试:goolge浏览器利用F12在控制台输入脚本实现表单自动填充

    一个开发测试技巧的指引和截图,利用google浏览器的F12调试和Console执行,注入JavaScript脚本实现表单的自动填充和测试. 原文链接: http://www.lookdaima.co ...

  4. JMeter乱码常见的解决方案

    方法一.直接将JMeter中http请求中Content encoding改为utf-8 方法二.编辑JMeter安装目录:apache-jmeter-3.2\bin中的jmeter.properti ...

  5. sql server 无法sa登录解决办法

    大概流程:在SQL软件里面设置解决 大概流程: 打开 控制面板 -> 管理工具 -> 服务..... 详细参考地址: https://blog.csdn.net/github_351606 ...

  6. 【PAT】B1078 字符串压缩与解压(20 分)

    主函数接收下第一个字符,接着一个分支就转到两个函数中的一个 1.压缩简单,只要与下一个一样就只计数,如果不同了就直接输出 2.至于解压不知道数字是几位数,所以我直接用了sscanf,然后判断是几位数字 ...

  7. nginx ssl 自签证书实验

    两台服务器 11.11.11.3     (生成证书然后到CA服务上注册) 11.11.11.4    (nginx服务.CA证书签发) 1.建立CA服务器(11.3) .在CA上生成私钥文件 在/e ...

  8. SSRS奇怪报错Could not update a list of fields for the quer.

    今天遇到一个奇怪的问题,SSRS我觉得是个半成品,很多东西都搞不了.写了一段SQL,本来SQL写法都有点怪了,如下 WITH TMP_A AS (SELECT *,ROW_NUMBER() OVER( ...

  9. January 03rd, 2018 Week 01st Wednesday

    My existence is not without reason. I know that I could be a quite a different person. 我的存在必定有意义,我知道 ...

  10. WPFの操作文件浏览框几种方式

    方式1: 使用win32控件OpenFileDialog Microsoft.Win32.OpenFileDialog ofd = new Microsoft.Win32.OpenFileDialog ...