惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

IT之家
IT之家
Y
Y Combinator Blog
月光博客
月光博客
Blog — PlanetScale
Blog — PlanetScale
GbyAI
GbyAI
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园 - 三生石上(FineUI控件)
S
SegmentFault 最新的问题
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
美团技术团队
雷峰网
雷峰网
酷 壳 – CoolShell
酷 壳 – CoolShell
Last Week in AI
Last Week in AI
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
有赞技术团队
有赞技术团队
博客园 - 司徒正美
V
Visual Studio Blog
小众软件
小众软件
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
T
Tailwind CSS Blog
Apple Machine Learning Research
Apple Machine Learning Research
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
A
About on SuperTechFans
The Cloudflare Blog

博客园 - 飘飘雪

Redis 的 Rehash 操作详解 Panic 与 Crash 的区别 vscode常用快捷键大全 网络流量单位 Core文件作用、设置及用法 linux 下误改了/etc/profile下的文件path路径导致整个系统用不了命令 python安装 linux less和more命令用法 Tair中对热key的内部处理 Tair中对大key的内部处理方式 redis的redis-benchmark用法 redis的memtier-benchmark用法 阿里巴巴的缓存类测试产品及有缺点 如何在class文件中使用pom中profile级别的 <properties> profiles下的properties与properties有什么区别 Guava 工具类之 Splitter的使用 什么是“黑天鹅”和“灰犀牛” java-sdk接口测试覆盖率统计实践 java应用接口自动化覆盖率统计实践
linux批量执行工具omnitty安装及使用
飘飘雪 · 2025-03-17 · via 博客园 - 飘飘雪

一、omnitty概述:

在生产环境中,可能会有多台linux主机,运维人员可能会对多台主机进行同样的操作,例如:同时在多台主机上添加一个user用户或者查看所有主机的硬件信息,如果没有批量操作工具,设备少于20台还勉强可以手动操作,如果设备很多(100+)还手动操作的话······

omnitty是基于ssh的批量登陆工具,可批量登陆多台基于ssh的主机(linux等),并且使多台主机同时执行一样的命令。因此,omnitty很适合在多台主机上重复劳动。

二、omnitty安装:

整体安装脚本:http://storage.jd.local/wcp/omnitty/omnitty_install.shell

安装环境:CentOS Linux release 7.4.1708 (Core)

安装软件:rote-0.2.8.tar.gz 、omnitty-0.3.0.tar.gz 

(1)下载需要安装包和依赖包:

 wget  http://storage.jd.local/wcp/omnitty/rote-0.2.8.tar.gz

(2)将按照包上传至linux指定文件夹下:

(3)安装rote-0.2.8:

tar -zxvf rote-0.2.8.tar.gz 

cd rote-0.2.8/ 

./configure 

make 

make install

(4)安装omnitty:

  • tar -zxvf omnitty-0.3.0.tar.gz 
  • cd ../omnitty-0.3.0/ 
  • ./configure 
  • make 
  • make instal

(5)添加libROTE动态链接库到/etc/ld.so.conf:

安装后直接执行omnitty会报错: 

  • omnitty: error while loading shared libraries: librote.so.0: cannot open shared object file: No such file or directory 
  • 提示没有找到librote.so.0

解决上述问题的办法:

  • 执行:whereis librote.so.0 
  • librote.so: /usr/local/lib/librote.so.0 /usr/local/lib/librote.so 
  • 说明librote.so.0库已安装,路径在/usr/local/lib/
  • 在/etc/ld.so.conf文件末尾添加/usr/local/lib,保存并退出。 
  • 最后执行:ldconfig

注意:安装时可能会出现的问题:

(a)如果报错”Need ncurses to compile librote“,需要安装ncurses开发包:

  • CentOS:# yum install ncurses-devel
  • ubuntu:$ apt-get install libncurses5-dev

(b)如果报错“//lib/x86_64-linux-gnu/libncurses.so.5: error adding symbols: DSO missing from command line”需要修改Makefile文件

  • 错误描述:
    1. # make  
    2. gcc -g -O2 -I/usr/local/include -Wall -DOMNITTY_VERSION=\"0.3.0\" -o omnitty minibuf.o machine.o main.o machmgr.o help.o menu.o curutil.o  -L/usr/local/lib -lrote  
    3. /usr/bin/ld: help.o: undefined reference to symbol 'delwin@@NCURSES_5.0.19991023'  
    4. //lib/x86_64-linux-gnu/libncurses.so.5: error adding symbols: DSO missing from command line  
    5. collect2: error: ld returned 1 exit status  
    6. Makefile:18: recipe for target 'omnitty' failed  
    7. make: *** [omnitty] Error 1  
  • 更正Makefile文件:vi  Makefile

omnitty: $(objects)

        $(CC) $(CFLAGS) -o omnitty $(objects) $(LDFLAGS) $(LIBS) -lncurses -ltinfo

三、omnitty使用:

(1)执行omnitty,出现omnitty工具界面:

相关指令:

  • F1:操作菜单 
  • F2/3:向上/向下选择主机 
  • F4:标记/取消标记主机 
  • F5:添加主机 
  • F6:删除主机 
  • F7:广播 

F1菜单详细指令: 

  • r:对主机重命名(只是为了标记清楚,并不是更改hostname) 
  • t:标记所有主机(即选中所有主机) 
  • q:退出程序 

(2)添加主机/主机列表:

添加单个主机:

  • 按F5,出现Add:提示符,然后输入IP地址;例如:F5--->”Add:172.18.8.7“。(其实没啥意义)

添加主机列表:

  • 在指定目录下新建一个文件,在文件中添加多个主机列表,然后如上面使用F5添加;
  • 例如:文件路径及名字为/root/test,然后按F5--->”Add:@/root/test“

(3)简单的批量操作使用:

如果主机比较多,或者懒得一次次输入的时候,可以选择下面的方式:

①把主机地址写到一个文件中,如在/root下创建一个文件server,添加如下内容:

    root@192.168.1.60

    root@192.168.1.61

②启动omnitty;

③F5,然后在add提示符后输入:@/root/server;

④F1+t选中所有机器,或使用F2/F3加F4单独选中个别机器;

⑤F7 切换到MULTICAST MODE模式,此时随意在某一台上敲命令都可以,列表中的主机执行动作将会一模一样;

⑥输入密码(同步向所有机器输入密码,如果密码不同,则需要单独来);

⑦F2/F3切换机器查看每台机器的运行结果。

安装脚本:

#!/bin/bash

wget http://storage.jd.local/wcp/omnitty/omnitty-0.3.0.tar.gz

wget http://storage.jd.local/wcp/omnitty/rote-0.2.8.tar.gz

yum install ncurses-devel

tar -zxvf rote-0.2.8.tar.gz

cd rote-0.2.8/

./configure

make

make install

tar -zxvf omnitty-0.3.0.tar.gz

cd ./omnitty-0.3.0/

./configure

make

make install

echo '/usr/local/lib'>>/etc/ld.so.conf

echo '/usr/lib64'>>/etc/ld.so.conf

ldconfig