通过dsh批量管理Linux服务器

目前在企业网络中越来越多的出现Linux服务器,而如何方便高效的管理大量的Linux服务器是系统管理员非常关心的一个问题。现在有大量的开源管理工具,可以实现这样的管理工具,现在给大家介绍一个通过命令行有效地管理大量Linux的工具---dsh。

【51CTO独家特稿】目前在企业网络中越来越多的出现Linux服务器,而如何方便高效的管理大量的Linux服务器是系统管理员非常关心的一个问题。现在有大量的开源管理工具,可以实现这样的管理工具,现在给大家介绍一个通过命令行有效地管理大量Linux的工具---dsh。

dsh是专为在远程系统上运行Shell命令设计的,通过dsh可以简化对大量计算机的操作。dsh命令语法如下:dsh [-m machinename | -a | -g groupname] [-f machinefile] [-M] [-q] [--wait-shell]--

commandline

常用选项:

-M:在显示远程命令执行的输出时,在前面加上主机名。

-a:如果经常操作同一组计算机,可以创建一个全局集合的组。$HOME/.dsh/machines.list文件是全局集合的定义。在该文件中每行一个计算机的IP地址,在指定-a后,dsh就会在machines.list中列出的所有计算机上执行指定的命令。

-q:指定使用安静模式输出。

-m machinename:指定需要执行指定命令的计算机。

-g groupname:指定需要执行指定命令的计算机组,主机名组在$HOME/.dsh/group/目录是定义,每个计算机组一个文件,文件名即是组外,在文件中每行一个计算机IP地址。

-f machinefile:指定计算机列表文件。

-wait-shell:在默认情况下,dsh是并行地在计算机上运行命令。如果希望顺序地运行命令则指定--wait-shell。

下面在我们一起来看看在如下图的网络中如何通过dsh有效的管理Linux服务器。

1、 dsh是通过SSH方式连接到服务器,所以需要在所有服务器上安装SSH。

2、 在srv.example.zqin上通过如下命令安装dsh。(wget安装方法见另一篇文章)srv:~# apt-get -y install libdshconfig1 libdshconfig1-dev dsh

3、 在使用dsh进行管理时,需要输入被管理服务器的用户名及密码,为了使用起来更加方便可使用如下命令将SSH的公钥复制到被管理服务器。srv:~# ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa):

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /root/.ssh/id_rsa.

Your public key has been saved in /root/.ssh/id_rsa.pub.

The key fingerprint is:

dd:e9:d3:84:fc:4c:ff:b4:b0:fa:12:fa:fd:49:3d:4d root@testsrvThe key's randomart p_w_picpath is:

+--[ RSA 2048]----+

| |

| |

| |

| . o o |

| S . = o E|

| o * oo|

| . +.+o=|

| . ...+.=|

| .o++.+.|

+-----------------+

srv:~# scp ~/.ssh/id_rsa.pub 192.168.159.21:/root/.ssh/authorized_keys

srv:~# scp ~/.ssh/id_rsa.pub 192.168.159.22:/root/.ssh/authorized_keys

srv:~# scp ~/.ssh/id_rsa.pub 192.168.159.31:/root/.ssh/authorized_keys

srv:~# scp ~/.ssh/id_rsa.pub 192.168.159.32:/root/.ssh/authorized_keys

如果被管理的服务器比较多也可以编写个脚本来复制公钥。下面是一个复制公钥到多个服务器上的脚本。for i in $(seq 200 253)

do

ssh 192.168.159.$i -C mkdir /root/.ssh

scp ~/.ssh/id_rsa.pub 192.168.1.$i:/root/.ssh/authorized_keys

done

4、 为了方便使用dsh,可以将所有被管理服务器分类并存放到对应文件中。

将所有被管理服务器的IP地址(或FQDN)加入$HOME/.dsh/machines.list文件中(每行一个)。

在$HOME/.dsh/group/目录下建立名为web的文件,并将web1、web2的IP地址(或FQDN)加入其中(每行一个)。

在$HOME/.dsh/group/目录下建立名为db的文件,并将db1、db2的IP地址(或FQDN)加入其中(每行一个)。

在上述配置完成后就可以在srv上通过dsh进行批量操作了,下面我们一起来看几个例子。

1、 在db1.example.zqin上执行reboot命令。srv:~# dsh -M -m db1.example.zqin -- reboot

2、 在$HOME/.dsh/machines.list文件中定义的所有服务器上同时执行updatedb命令。srv:~# dsh -M -a -- updatedb

3、 在$HOME/.dsh/group/web文件中定义的所有服务上面上同时执行命令。srv:~# dsh -M -g -- /etc/init.d/apache2 restart

dsh linux,通过dsh批量管理Linux服务器(一)【感谢作者的无私分享】相关推荐

  1. linux批量管理服务,通过PSSH批量管理Linux服务器

    pssh是一个可以在多台服务器上执行命令的工具,同时支持拷贝文件,是同类工具中很出色的.使用是必须在各个服务器上配置好密钥认证访问. pssh 包安装 5 个实用程序: pssh 在多个主机上并行地运 ...

  2. 用Python写脚本:通过ssh在Windows下批量管理Linux

    对于超过10台以上的linux服务器,就需要考虑如何进行批量管理了. 我了解的通常的方法有以下几种: 一:在linux系统下,编写except脚本,通过ssh远程执行命令.上传下载文件等. 二:使用S ...

  3. Ansible批量管理Windows服务器,winrm配置

    (一)Ansible简介 Ansible 是一款轻量级的开源的自动化运维工具,支持 linux 和 windows(只支持 client,并且部分模块),利用 Ansible 可以简单批量的配置系统, ...

  4. 远程管理linux系统工具,远程管理Linux系统工具的设计与实现Linux013

    一种远程管理Linux系统工具的设计与实现 摘  要 现在,Linux已经是应用比较广泛的操作系统之一,在其系统中有很多的服务.为了实现远程配置和管理Linux中的各种服务,需要有一种远程管理Linu ...

  5. linux 下mysql的管理,Linux下 MySQL安装和基本管理

    •安装linux一些必须的包: 1.yum install gcc gcc-c++ gcc-g77 autoconf automake zlib* fiex* libxml* ncurses-deve ...

  6. 【Linux 内核】进程管理 ( Linux 内核中的进程状态 | TASK_RUNNING | TASK_INTERRUPTIBLE | __TASK_STOPPED | EXIT_ZOMBIE )

    文章目录 一.Linux 内核中的进程状态 二.TASK_RUNNING 状态 三.TASK_RUNNING 状态 四.TASK_UNINTERRUPTIBLE 状态 五.__TASK_STOPPED ...

  7. linux版_巧用linux版powershell,管理linux下的docker

    owershell,docker,cli,命令,docker ps,docker image 第一章 在linux中搭建docker环境 目的: 在任意版本的linux(物理机,虚拟机,节点机)中,安 ...

  8. linux系统下卷组管理,Linux LVM卷组管理

    Linux LVM卷组管理 由于传统的磁盘管理不能对磁盘进行磁盘管理,因此诞生了LVM技术,LVM技术最大的特点就是对磁盘进行动态管理. 由于LVM的逻辑卷的大小更改可以进行动态调整,且不会出现丢失数 ...

  9. 【linux】监控和管理linux进程

    ps:获取瞬间所有进程信息 PID为进程的ID编号,唯一. TTY为进程运行的位置,包括了后台(看不见),前台(可以看见). CMD为进程的程序名或者是启动命令. ps拿到一瞬间的状态->tim ...

  10. linux php 用户权限管理,LINUX教程:Linux用户及权限管理

    <LINUX教程:Linux用户及权限管理>要点: 本文介绍了LINUX教程:Linux用户及权限管理,希望对您有用.如果有疑问,可以联系我们. [文件治理.管道.用户及组治理.用户及权限 ...

最新文章

  1. 虚析构函数? vptr? 指针偏移?多态数组? delete 基类指针 内存泄漏?崩溃?...
  2. python 视频字幕替换_利用python调整srt字幕时间轴
  3. Android音视频之AudioRecord录音(一)
  4. 《从零开始走进FPGA》导读
  5. Vue中的join(),reverse()与 split()函数
  6. java中vector,array,list,arraylist的区别
  7. 简单区块链Python实现
  8. 服务器不能用pe安装win7系统安装,WinPE无法安装win7系统的完美解决方案
  9. 欢迎使用CSDN-markdown编辑器11345
  10. 如何查看Windows 桌面壁纸的位置
  11. java宠物商店管理系统_Java实现宠物商店管理系统
  12. Java解析Excel 获取文本和图片信息
  13. 启动牛市的密钥藏宝计划(TPC),火热来袭!
  14. 【计算机网络】湖科大学习笔记---数据链路层
  15. 连接真机开发安卓(Android)移动app MUI框架 添加购物车等——混合式开发(四)...
  16. APP开发流程工作详解
  17. 干净实用:装机必备绿色软件集锦
  18. 【论文阅读】Cleanits: A Data Cleaning System for Industrial Time Series
  19. git pull 代码库时提示冲突需Merge 快速解决代码同步遇到的冲突问题 so easy的方法
  20. 如何在Microsoft PowerPoint中创建或删除悬挂缩进

热门文章

  1. linux+nginx+tomcat负载均衡,实现session同步
  2. 10.高性能MySQL --- 复制
  3. 51. PHP 页面静态化(4)
  4. Jmeter中生成随机函数和使用csv文件数据
  5. C#控件之TreeView
  6. Linux学习之安装jdk
  7. Linux 驱动层实现阻塞和非阻塞
  8. mysql出现服务器异常后,重启服务器后无法开启数据库处理方法
  9. normalize.css v2.1.2 翻译
  10. OpenStack日志搜集分析之ELK