因为常常须要到几十台机器上运行同样的命令,而眼下机器上还没有部署Saltstack或Puppet等集群化管理工具. 因为每台server上都使用同样的公钥,故之前都是写一些脚本:把IP 放到一个文件里,再依次从文件里读取一个IP ,通过SSH用密钥登录到目标机器上运行命令.刚開始使用的时候,认为还能够接受,至少比手动登录到每一台机机器上要省时省力.可是,后面发现有的机器SSH连接比較慢,须要等一会儿,因为是顺序的单进程运行,所以认为有点慢,想要更快一点. 后来.通过查阅,发现了pssh这个工具,于是就抽时间实践了一下,以下是我的一些实践跟使用心得(安装方法我就不在此叙述了):

1. PSSH 的使用

先看看说明文档:  man pssh

OPTIONS
-h host_file # -h + 包括IP的文件名称
--hosts host_file
-H [user@]host[:port] # -H + <span style="font-family: Arial, Helvetica, sans-serif;">[用户@]主机IP[:端口] [ ]内的是可选參数 ,若有多个主机,用" "引起来,主机之间用空格分开</span>
--host [user@]host[:port]
-H "[user@]host[:port] [ [user@]host[:port ] ... ]"
<span style="white-space:pre"> </span> --host "[user@]host[:port] [ [user@]host[:port ] ... ]"
-l user # -l + username(用于连接远程主机的username)
--user user
-p parallelism # -p + 并发数
--par parallelism -t timeout # -t + 超时秒数
--timeout timeout
-o outdir # -o + 输出文件夹 说明:会在该文件夹下创建 <span style="font-family: Arial, Helvetica, sans-serif;">[用户@]主机IP[:端口]</span><span style="font-family: Arial, Helvetica, sans-serif;"> 格式的文件名称,用于保存输出结果</span>
--outdir outdir
-e errdir # -e + 错误输出文件夹
--errdir errdir
-x args # -x + ssh连接时可提供的參数 ,例: -x "-o StrictHostKeyChecking=no" 表示跳过ssh链接时询问yes/no
--extra-args args
-X arg
--extra-arg arg -O options # -O + SSH配置文件里的选项 能够出现多个 -O 选项
--options options
-A
--askpass
-i # -i 參数用于将输出结果直接显示在当前终端
--inline
--inline-stdout
-v # -v 參数用于显示ssh连接时的错误信息
--verbose -I
--send-input
Read input and send to each ssh process. Since ssh allows a command script to be sent on standard input, the -I option may be used in lieu of the command argument. -P # -P 參数用于当主机连接上之后,输出运行结果 ,先输出运行结果,再显示连接的主机信息.
--print

pssh  -h i2.txt "ifconfig"

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGFpNDUxOTU0NzA2/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

如之前没有从pssh所在主机连接到目标机器,则运行时一定要家參数  -x "-o StrictHostKeyChecking=no" ,没有加该參数的情况:

因为尚未在该机器上通过ssh连接过 XXXX.104 和 XXX.70,所以运行命令失败,有时会使得所以主机上的命令都运行失败,加上  -x "-o StrictHostKeyChecking=no"  參数后:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGFpNDUxOTU0NzA2/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

上面的命令仅仅显示是否运行成功,但未显示运行命令的输出结果, 须要加上 -i 參数:

指定输出文件夹 -o 參数:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGFpNDUxOTU0NzA2/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

2. pscp 用于将本地文件拷贝到远程主机

pscp 跟pssh 的非常多參数都是一样的,故不再多说.

-r 參数用于递归拷贝文件夹

pscp -h ip文件 本地文件  远程文件夹

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGFpNDUxOTU0NzA2/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

3 . pslurp 用于将远程主机上的文件复制回本地

pslurp 參数跟pscp參数一样

-L  參数用于指定本地存放文件的文件夹

plurp -L   -h ip文件  远程文件 本地名称

尽管帮助文档里说 -L 參数是可选的,可是经过我的实验发现-L 应该是必须的否则会报错,实验结果例如以下:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGFpNDUxOTU0NzA2/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

添加 -L  參数后,会在-L 指定的本地文件夹下创建  [用户@]主机IP[:port] 文件夹,相应的文件夹下用于存放从该主机复制过来的文件.

4 . pnuke 用于批量远程结束进程

pnuke 的參数与pssh一样,仅仅是最后的字符串为要结束的进程名称

如:  pnuke -h i2.txt  httpd  表示结束 i2.txt文件里全部主机的 httpd进程

以上仅个人实验和使用心得,用于备忘,也希望能帮到一些同学 !

pssh,pscp,pslurp使用实践的更多相关文章

  1. 轻量级运维工具-pssh,pscp,prsync,pslurp,pnuke

    批量执行,并行传输,远程killall #yum安装 yum install pssh -y #yun安装后pscp改名为pscp.pssh #源码编译 wget https://pypi.pytho ...

  2. 极其强大的运维工具——pscp、pssh、pslurp

    1.pscp 用于将本地文件复制到远程主机 pscp -h xxx.host 本地文件 远程目录 //xxx.host是所有目的IP的文件,一个IP一行 2.pssh 在远程机器上执行命令 pssh ...

  3. 远程操控批量复制应用(scp/pssh/pscp.pssh/rsync/pslurp)

    scp命令: scp [options] SRC... DEST/两种方式: scp [options] [user@]host:/sourcefile /destpath scp [options] ...

  4. 使用pscp/pslurp批量并发分发/回收文件

    pssh pssh -h ip文件 本地文件 远程目录或文件 pslurp pslurp -h ip文件 -L 本地目录 远程文件 本地文件名称

  5. 运维自动化轻量级工具pssh

    1pssh介绍 pssh是python写的可以并发在多台机器上批量执行命令的工具,它的用法可以媲美ansible的一些简单用法,执行起来速度比ansible快它支持文件并行复制,远程命令执行,杀掉远程 ...

  6. pssh批量管理

    因为公司金融项目正式上线,有等保的要求,所有的线上服务器对操作过历史命令都要记录下来,需要修改一部分的配制文件.总共有300多台Linux服务器,总不能一台一台去改吧.首先想到是ansble,salt ...

  7. 自动化运维工具-pssh工具安装配置及简单使用讲解

    1.先决条件:安装pssh工具要求python版本大于2.4即可. 安装pssh工具的主机针对远程主机需要配置免秘钥认证: ssh-keygen -t rsa ssh-copy-id [remoteh ...

  8. 批量部署 自动化之 - [pssh](转)

    并行执行命令工具简介 作为运维工程师来讲,机器数量到一定级别的时候,批量运维和管理机器就是一件费神的事情,还好有很多可以批量并行执行命令的工具,比如 pssh , python fabrictaoba ...

  9. 自动化运维工具——pssh

    PSSH介绍 pssh是一个python编写可以在多台服务器上执行命令的工具,同时支持拷贝文件,是同类工具中很出色的.它的用法可以媲美ansible的一些简单用法,执行起来速度比ansible快它支持 ...

随机推荐

  1. [WPF疑难]避免窗口最大化时遮盖任务栏

    原文 [WPF疑难]避免窗口最大化时遮盖任务栏 [WPF疑难]避免窗口最大化时遮盖任务栏 周银辉 WPF窗口最大化时有个很不好的现象是:如果窗口的WindowStyle被直接或间接地设置为None后( ...

  2. c++继承构造子类调用父类构造函数的问题及关于容器指针的问题及当容器里储存指针时,记得要手动释放

    看下面的一个问题: class Person { private: string name; public: Person(const string& s=""){ nam ...

  3. 解题报告 HDU1789 Doing Homework again

    Doing Homework again Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64 ...

  4. pod update --verbose --no-repo-update

    最近使用CocoaPods来添加第三方类库,无论是执行pod install还是pod update都卡在了Analyzing dependencies不动 原因在于当执行以上两个命令的时候会升级Co ...

  5. Android Intent 解析之二

    服务端Intent运行过程: Sticky:这个类型的BroadCast表示某些Intent须要被保留,当新的应用起来后,须要关注这个消息,可是呢,又不须要启动这个应用来接收此消息,比方耳机插入等消息 ...

  6. 如何安装系统认证签名过的APK

    如果你的App因为权限原因需要设置 android:sharedUserId="android.uid.system" 那么IDE编译出的包通常是无法直接安装的,查看控制台会发现报 ...

  7. ms sql 获取字符串首字母

    很久没有编写新文章,现在发布一篇自定义函数,针对于ms sql数据库中需要获取字符串首字母,对于需要的朋友希望对你有用,如果你有更好的方法也可以给我留言.函数如下: --获取字符串首字母 CREATE ...

  8. HDU1316(求区间斐波那契数的个数)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1316 题意:给两个数a和b,其中它们可能很大,最大到10^100,然后求去区间[a,b]内有多少个fib数 ...

  9. Acitivity创建与配置

    •Activity的创建和配置 –Activity提供了和用户交互的可视化界面.创建一个Activity一般是继承Activity(当然也可以继承ListActivity.MapActivity等), ...

  10. iOS开发中关于本地数据中SQLite数据库常用的SQL语句

    创建表 CREATE TABLE IF NOT EXISTS "student" ("number" INTEGER PRIMARY KEY AUTOINCRE ...