Linux远程批量工具mooon_ssh和mooon_upload使用示例
Linux远程批量工具mooon_ssh和mooon_upload使用示例.pdf
目录
目录 1
1. 前言 1
2. 批量执行命令工具:mooon_ssh 2
3. 批量上传文件工具:mooon_upload 2
4. 使用示例 3
4.1. 使用示例1:上传/etc/hosts 3
4.2. 使用示例2:检查/etc/profile文件是否一致 3
4.3. 使用示例3:批量查看crontab 3
4.4. 使用示例4:批量清空crontab 3
4.5. 使用示例5:批量更新crontab 3
4.6. 使用示例6:取远端机器IP 3
4.7. 使用示例7:批量查看kafka进程(环境变量方式) 4
4.8. 使用示例8:批量停止kafka进程(参数方式) 5
5. 如何编译批量工具? 5
5.1. GO版本 5
5.2. C++版本 6
1. 前言
远程批量工具包含:
1) 批量命令工具mooon_ssh;
2) 批量上传文件工具mooon_upload;
3) 批量下载文件工具mooon_download。
可执行二进制包下载地址:
https://github.com/eyjian/libmooon/releases
源代码包下载地址:
https://github.com/eyjian/libmooon/archive/master.zip
批量工具除由三个工具组成外,还分两个版本:
1) C++版本
2) GO版本
当前C++版本比较成熟,GO版本相当简略,但C++版本依赖C++运行时库,不同环境需要特定编译,而GO版本可不依赖C和C++运行时库,所以不需编译即可应用到广泛的Linux环境。
使用简单,直接执行命令,即会提示用法,如C++版本:
$ mooon_ssh parameter[-c]'s value not set usage: -h[]: Connect to the remote machines on the given hosts separated by comma, can be replaced by environment variable 'H', example: -h='192.168.1.10,192.168.1.11' -P[36000/10,65535]: Specifies the port to connect to on the remote machines, can be replaced by environment variable 'PORT' -u[]: Specifies the user to log in as on the remote machines, can be replaced by environment variable 'U' -p[]: The password to use when connecting to the remote machines, can be replaced by environment variable 'P' -t[60/1,65535]: The number of seconds before connection timeout -c[]: The command is executed on the remote machines, example: -c='grep ERROR /tmp/*.log' -v[1/0,2]: Verbosity, how much troubleshooting info to print |
2. 批量执行命令工具:mooon_ssh
参数名 |
默认值 |
说明 |
-u |
无 |
用户名参数,可用环境变量U替代 |
-p |
无 |
密码参数,可用环境变量P替代 |
-h |
无 |
IP列表参数,可用环境变量H替代 |
-P |
22,可修改源码,编译为常用端口号 |
SSH端口参数,可用环境变量PORT替代 |
-c |
无 |
在远程机器上执行的命令,建议单引号方式指定值,除非要执行的命令本身已经包含了单引号有冲突。使用双引号时,要注意转义,否则会被本地shell解释 |
-v |
1 |
工具输出的详细度 |
3. 批量上传文件工具:mooon_upload
参数名 |
默认值 |
说明 |
-u |
无 |
用户名参数,可用环境变量U替代 |
-p |
无 |
密码参数,可用环境变量P替代 |
-h |
无 |
IP列表参数,可用环境变量H替代 |
-P |
22,可修改源码,编译为常用端口号 |
SSH端口参数,可用环境变量PORT替代 |
-s |
无 |
以逗号分隔的,需要上传的本地文件列表,可以带相对或绝对目录 |
-d |
无 |
文件上传到远程机器的目录,只能为单个目录 |
4. 使用示例
4.1. 使用示例1:上传/etc/hosts
mooon_upload -s=/etc/hosts -d=/etc |
4.2. 使用示例2:检查/etc/profile文件是否一致
mooon_ssh -c='md5sum /etc/hosts' |
4.3. 使用示例3:批量查看crontab
mooon_ssh -c='crontab -l' |
4.4. 使用示例4:批量清空crontab
mooon_ssh -c='rm -f /tmp/crontab.empty;touch /tmp/crontab.empty' mooon_ssh -c='crontab /tmp/crontab.emtpy' |
4.5. 使用示例5:批量更新crontab
mooon_ssh -c='crontab /tmp/crontab.online' |
4.6. 使用示例6:取远端机器IP
因为awk用单引号,所以参数“-c”的值不能使用单引号,所以内容需要转义,相对其它来说要复杂点:
mooon_ssh -c="netstat -ie | awk -F[\\ :]+ 'BEGIN{ok=0;}{if (match(\$0, \"eth1\")) ok=1; if ((1==ok) && match(\$0,\"inet\")) { ok=0; if (7==NF) printf(\"%s\\n\",\$3); else printf(\"%s\\n\",\$4);} }'" |
不同的环境,IP在“netstat -ie”输出中的位置稍有不同,所以awk中加了“7==NF”判断,但仍不一定适用于所有的环境。需要转义的字符包含:双引号、美元符和斜杠。
4.7. 使用示例7:批量查看kafka进程(环境变量方式)
$ export H=192.168.31.9,192.168.31.10,192.168.31.11,192.168.31.12,192.168.31.13 $ export U=kafka $ export P='123456' $ mooon_ssh -c='/usr/local/jdk/bin/jps -m' [192.168.31.15] 50928 Kafka /data/kafka/config/server.properties 125735 Jps -m [192.168.31.15] SUCCESS [192.168.31.16] 147842 Jps -m 174902 Kafka /data/kafka/config/server.properties [192.168.31.16] SUCCESS [192.168.31.17] 51409 Kafka /data/kafka/config/server.properties 178771 Jps -m [192.168.31.17] SUCCESS [192.168.31.18] 73568 Jps -m 62314 Kafka /data/kafka/config/server.properties [192.168.31.18] SUCCESS [192.168.31.19] 123908 Jps -m 182845 Kafka /data/kafka/config/server.properties [192.168.31.19] SUCCESS ================================ [192.168.31.15 SUCCESS] 0 seconds [192.168.31.16 SUCCESS] 0 seconds [192.168.31.17 SUCCESS] 0 seconds [192.168.31.18 SUCCESS] 0 seconds [192.168.31.19 SUCCESS] 0 seconds SUCCESS: 5, FAILURE: 0 |
4.8. 使用示例8:批量停止kafka进程(参数方式)
$ mooon_ssh -c='/data/kafka/bin/kafka-server-stop.sh' -u=kafka -p='123456' -h=192.168.31.15,192.168.31.16,192.168.31.17,192.168.31.18,192.168.31.19 [192.168.31.15] No kafka server to stop command return 1 [192.168.31.16] No kafka server to stop command return 1 [192.168.31.17] No kafka server to stop command return 1 [192.168.31.18] No kafka server to stop command return 1 [192.168.31.19] No kafka server to stop command return 1 ================================ [192.168.31.15 FAILURE] 0 seconds [192.168.31.16 FAILURE] 0 seconds [192.168.31.17 FAILURE] 0 seconds [192.168.31.18 FAILURE] 0 seconds [192.168.31.19 FAILURE] 0 seconds SUCCESS: 0, FAILURE: 5 |
5. 如何编译批量工具?
5.1. GO版本
依赖的crypto包,从https://github.com/golang/crypto下载,放到目录$GOPATH/src/golang.org/x或$GOROOT/src/golang.org/x下。注意需要先创建好目录$GOROOT/src/golang.org/x,然后在此目录下解压crypto包。如果下载的包名为crypto-master.zip,则解压后的目录名为crypto-master,需要重命名为crypto。
安装crypto包示例:
1)安装go cd /usr/local tar xzf go1.10.3.linux-386.tar.gz 2)mkdir -p go/golang.org/x 3)cd go/golang.org/x 4)unzip crypto-master.zip 5)mv crypto-master crypto |
命令行执行“go help gopath”可了解gopath,或执行“go env”查看当前的设置。编译方法:
go build -o mooon_ssh mooon_ssh.go |
上述编译会依赖glibc,如果不想依赖,这样编译:
go build -o mooon_ssh -ldflags '-linkmode "external" -extldflags "-static"' mooon_ssh.go |
5.2. C++版本
C++版本为libmooon组成部分,编译libmooon即可得到mooon_ssh、mooon_upload和mooon_download。但libmooon依赖libssh2,而libssh2又依赖openssl,所以需要先依次安装好openssl和libssh2。
libssh2下载地址:http://www.libssh2.org。
1) openssl编译安装方法
解压后进入openssl源码目录,以版本openssl-1.0.2i为例,依次执行:
./config --prefix=/usr/local/openssl-1.0.2i shared threads make make install ln -s /usr/local/openssl-1.0.2i /usr/local/openssl |
2) libssh2编译安装方法
解压后进入libssh2源码目录,以版本libssh2-1.6.0为例,依次执行:
./configure --prefix=/usr/local/libssh2-1.6.0 --with-libssl-prefix=/usr/local/openssl make make install |
注意:libssh2和比较新版本的openssl可能存在兼容问题。
3) libmooon编译方法
采用cmake编译,所以需要先安装好cmake,并要求cmake版本不低于2.8.11,可执行“cmake --version”查看cmake版本,当cmake、libssh2和openssl准备好后执行下列命令编译libmooon即可得到批量工具:
cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=/usr/local/mooon . make make install |
在make一步成功后,即可在tools子目录中找到mooon_ssh、mooon_upload和mooon_download,实践中mooon_download可能使用得比较少。
Linux远程批量工具mooon_ssh和mooon_upload使用示例相关推荐
- 推荐一个Linux远程桌面工具
Linux远程桌面工具,常用的是VNC. 刚刚发现一个工具,个人感觉比VNC好用一些,特别是windows系统远程连接Linux桌面的时候:NoMachine. 官网:https://www.noma ...
- linux远程管理工具之tabby
linux远程管理工具之tabby Tabby简介 Tabby下载及安装 PowerShell 快捷键 Tabby简介 tabby是一款开源且免费的终端连接工具,可以使用于多平台,例如:windows ...
- Linux远程管理工具(PuTTY和SecureCRT)
通过<Linux远程管理协议>一节可以知道,Linux远程管理服务器多基于 SSH 协议.本节给大家介绍 2 种常见的基于 SSH 协议的远程管理工具,分别是 PuTTY 和 Secure ...
- 3、Linux 远程登录工具
目录 1.为什么要远程登录linux? 2.Linux 远程登录客户端 3.远程文件传输工具 1.为什么要远程登录linux? Linux 一般作为服务器使用,而服务器一般放在机房,你不可能在机房操作 ...
- 这几款 Linux 远程管理工具!功能真心强大
点关注公众号,回复"1024"获取2TB学习资源! 作为一个常常与 Linux 系统打交道的程序员,使用 SSH 终端工具进行远程管理我们的服务器是必不可少的日常工作之一.好工具是 ...
- Linux远程管理工具汇总
对Linux管理员们来说,远程办公不是什么新鲜事.如果管理员不在服务器跟前,远程办公更是家常便饭.下面介绍了几款远程管理工具,希望对Linux管理员有所帮助. 对于linux系统下的服务器,目前主要的 ...
- linux远程管理工具:putty
随着linux应用的普及,linux管理越来越依赖远程管理.在各种telnet类工具中,putty是其中最出色的一个. 一.Putty简介 Putty是一个免费小巧的Win32平台下的tel ...
- 【Tools】Linux远程拷贝工具(WinSCP)
00. 目录 文章目录 00. 目录 01. WinSCP简介 02. WinSCP下载 03. WinSCP主要功能 04. WinSCP文件操作 05. 连接到远程计算机 06. 程序界面 07. ...
- putty 远程linux桌面,Linux远程桌面工具Xming+Putty的搭建
Xming是一个X Windows视窗显示程序,简单来说,就是你觉得putty这样的字符界面不爽,你想在putty终端打开一个图形界面程序来完成你的工作.比如要编辑一个.cpp文件,如果使用vi打开, ...
最新文章
- jQuery带动画的弹出对话框
- Learning Perl 8
- sql中的indexof,函数介绍
- MySQL使用on duplicate key update时导致主键不连续自增
- 团购“罗生门”渐退行业舞台 千团大战仍需企业自律
- pip安装Flask失败
- linux内核配置重置,linux内核配置--Boot options
- 设计模式 创建型 工厂方法模式
- 早上内部资源共享讨论发言稿
- 推荐几个Mac系统桌面吸色工具!颜色吸取器
- 应用密码学:协议、算法与C源程序(学习第一章)
- matlab hspice联合仿真,matlab hspice
- 平面方程、两平面的夹角、空间点到平面的距离公式
- 搜索竞价推广方式OCPC VS CPC,谁更强
- oracle 表空间满了排查和解决(ORA-1653: unable to extend table test by 128 in tab)
- 笔记本电脑开机后自带的键盘用不了,需要重启电脑才能用
- Windows里下载并安装phpstudy(图文详解)
- 移动应用程序设计基础——安卓动画与视音频播放器的实现
- 4pics1word android,4 Pics 1 word Answers
- win10怎么录屏?windows自带录屏功能怎么用
热门文章
- c mysql 查不到数据_怎么检测不到MYSQL数据库的存在
- wxpython bind自定义_wxPython的 - 如何从自定义对话框WX
- matlab程序生成.dll,matlab 调用fortran生成DLL
- 25 abstract 抽象
- flask之jinji2模板介绍
- keepalived+nginx实现高可用
- 启动hadoop时报root@localhost's password: localhost: Permission denied, please try again.错误。...
- 用Emacs进行Java开发
- nodejs+vue.js+webpack
- 使用sharepreferce记录数组数据