BSA Network Shell系列-runcmd/runscript命令
runcmd和runscript
## 1 功能概述
runcmd/runscript:runcmd在一台或多台机器执行Network Shell命令(单个命令),而runscript执行的是脚本,二者使用方法一样。runcmd -e 参数后是要执行的命令,而runscript -e后面是要执行的Network Shell脚本
只是使用的话,看看下面的使用示例段就够了
## 2 使用示例
1 对远程主机执行命令:查看指定机器/etc路径下文件数
runcmd -h vm1 vm2 -d /etc -e ls -l | wc -l
2 为每台机器的输出加上标题,并在每行输出前都加上(hostname)
cloudexpress# runcmd -h lzx-clone1 10.200.108.92 -H "%h 网管机" -V -e whoami lzx-clone1 网管机 (lzx-clone1) root (lzx-clone1) Exit Code 10.200.108.92 网管机 (10.200.108.92) root ( cloudexpress#
3 在机器上执行脚本,脚本可以位于任何一台机器上
a 脚本在某台远程机器上,这里是lzx-clone1
runscript -h lzx-clone1 10.200.108.101 -e //lzx-clone1/root/test/a.sh -脚本参数
b 脚本在执行命令的主机上
runscript -h lzx-clone1 10.200.108.101 -e /root/test/a.sh -脚本参数
4 并发执行,设置并发量为2
runcmd -h rome athens paris london -p 2 -e ifconfig
## 3 语法
runcmd [-v -n -p n] [-H header] [-NH] [-s | -c] [-d directory] [-f file] [-h host1 ... hostn] [-e command1 ...commandn]
runscript [-v -n -p n] [-H header] [-NH] [-s | -c] [-d directory] [-f file] [-h host1 ... hostn] [-e command1 ...commandn]
## 4 说明
runcmd和runscript允许在多台机器执行相同的命令。不同点是:runcmd执行的是Network Shell命令,runscript执行的是Network Shell脚本。
根据你正在执行的操作,你可能想知道你正在哪个主机处理。为此,为每个sub-command设置了NSH_RUNCMD_HOST变量,此外NSH_RUNCMD_DIR环境变量也会设置来提示当前Network Shell path。这两个变量可以通过下面的命令打印出来
cloudexpress# runcmd -h lzx-clone1 10.200.108.101 -e sh -c 'echo $NSH_RUNCMD_HOST $NSH_RUNCMD_DIR' ==> lzx-clone1 <== lzx-clone1 //lzx-clone1/ ==> 10.200.108.101 <== 10.200.108.101 //10.200.108.101/ cloudexpress#
## 5 命令参数
-c 在每台机器执行Network Shell命令,如果运行的是runcmd则会隐式的调用这个参数。
-d dirname 当在主机上执行命令时,可以通过该参数指定每台主机的起始目录,指定后如果运行pwd命令的话,则路径就是该参数指定的路径。当然如果不使用该参数,你可以在命令中进行指定。
-e cmd 使用该参数指定要执行的命令。这个参数必须是最后一个参数。所有在-e参数后的参数都会被认为是执行命令的一部分。
-f file
该参数把要执行命令的主机放在file中,格式是一行一条记录。一条记录可以是一个主机名,也可是是一个UNC name(包含网络路径和主机名的完整名称,如//athens/bin)。
-h host
该参数指定要执行命令的所有主机。主机之间使用空格分开。在-h参数后,所有随后的内容都被认为是主机名,除非runcmd/runscript遇到另外一个参数(以'-'开头的参数)。和-f指定主机名的参数一样,-h后面的主机名也可以是主机名或者是UNC name。
-H header
runcmd/runscript在输出结果中会有一个简单的标题。使你很容易区分不同主机的输出。默认的标题格式为"==> %h <==",其中的"%h"会被命令行中指定的主机信息替换。-H header 可以用来自定义标题,例如:-H "%h 网管机",则如下命令:
runcmd -h lzx-clone1 -H "%h 网管机" -d /root/test -e pwd #命令结果 lzx-clone1 网管机 //lzx-clone1/root/test
-n 该参数会使输出的标题不带回车(carriage return).
-NH 该参数会禁止所有标题的输出,即使你指定了-H header参数。
-p n
以并发方式执行命令,n是并发量。这可以显著提高运行速度,但由于是并发执行,所有输出顺序会被打乱,所以如果需要清晰的输出结果,那就不能使用并发。并发的原理是通过调用多个subshell的方式实现的
-v 把在每个主机实际执行的命令打印出来(如果是runscript的话会打印脚本名,但不是输出脚本内容)
-V 在每行输出前面都加上"(hostname)",Hostname就是你输入的主机名.
-s 在每台机器执行Network Shell脚本,隐式说明执行的是runscript命令。
-? 输出帮助
## 6 返回值
如果命令或脚本正常执行,则Exit Code是0,如果命令执行结果Exit Code不是0的话,则Exit Code就是0
## 7 作者
runcmd和runscript命令的作者是Thomas Kraus
BSA Network Shell系列-runcmd/runscript命令的更多相关文章
- BSA Network Shell系列-nexec | runcmd | runscript | scriptutil的异同
说明下nexec.runcmd.runscript.scriptutil的异同 相同点: 四者都可以在远程机器执行命令.或者调用脚本. 不同点: nexec支持NSH命令,可以执行远程机的本地命令(非 ...
- BSA Network Shell系列-nexec命令
# nexec ## 1 说明:nexec是远程命令接口引擎 ,用于在远程主机执行命令 nexec [-?] [-t term] [-o] [-i] [-l] [-nohup hostname &qu ...
- BSA Network Shell系列-nsh命令
nsh nsh命令软链接到zsh,直接运行nsh可进入Network Shell,所有的Network Shell命令都需要运行nsh进入Network Shell执行 1 使用cd命令访问远程主机和 ...
- BSA Network Shell系列-scriptutil命令
scriptutil ## 1 功能概述 scriptutil复制脚本到远程机的某个目录,然后在该目录执行脚本. 它的优点就是脚本是non-NSH的脚本.不支持NSH命令,执行起来的效果和runscr ...
- BSA Network Shell系列-redi命令
redi ## 1 功能概述 redi将输出重定向到一个文件中 ## 2 语法 redi [-?] [-a] filename ## 3 使用示例 1 将输出重定向到隐式路径所在主机的/tmp/hah ...
- BSA Network Shell系列-nlogin命令
nlogin 1 说明 nlogin 是一种通过RSCD Agent的通信的安全远程登录,使用和NSH工具相同的加密协议.可以作为telnet.rlogin或者ssh的替代工具(假如这些端口或协议禁用 ...
- BSA Network Shell系列-通过NSH执行Powershell,VBScript或bat files脚本
参考:Running Powershell, VBScript, or bat files via NSH 如果你直接在NSH命令行执行的话,可以参考我翻译的下面的东东,如果想运行NSH 脚本作业的话 ...
- Linux Shell系列教程之(八)Shell printf命令详解
本文是Linux Shell系列教程的第(八)篇,更多shell教程请看:Linux Shell系列教程 在上一篇:Linux Shell系列教程之(七)Shell输出这篇文章中,已经对Shell p ...
- Linux Shell系列教程之(十六) Shell输入输出重定向
本文是Linux Shell系列教程的第(十六)篇,更多Linux Shell教程请看:Linux Shell系列教程 Shell中的输出和输入的重定向是在使用中经常用到的一个功能,非常实用,今天就为 ...
随机推荐
- XSS Challenges闯关笔记
前言 做xss做疯了再来一个. 地址:https://xss-quiz.int21h.jp/ ,这个貌似是日本的一个安全研究员yamagata21做的. 做到第九关就跪了,而总共有二十关.一半都还没有 ...
- 富文本编辑器Quill的使用
我们经常需要使用富文本编辑器从后台管理系统上传文字,图片等用于前台页面的显示,Quill在后台传值的时候需要传两个参数,一个用于后台管理系统编辑器的显示,一个用前台页面的显示,具体代码如下截图: 另Q ...
- eslint 的基本配置介绍
eslint 这个代码规则,是在用webpack +vue-cli这个脚手架时候接触的,默认的规则可能不太习惯我们日常平时的代码开发,需要对这个规则稍加改造. 下面的是 eslintrc.js的基本规 ...
- uImage和zImage的区别
1.各种文件的意义 vmlinux 编译出来的最原始的内核文件,未压缩. zImage 是vmlinux经过gzip压缩后的文件. bzImage bz表示“big zImage”,不是用bzi ...
- Android自定义安全键盘
在银行APP里经常要自定义键盘,例如实现下面这样的效果 首先在xml文件里定义键盘 <Keyboard xmlns:android="http://schemas.andr ...
- java调用c++函数的简单笔记
java使用jni调用c++动态库函数. 步骤: 1.编写java测试代码如下: public class CallNativeDemo { native void func(); native do ...
- 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](三)
前言 上一篇<一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](二)>我们通过如下操作: 创建实体及工具类 创建Re ...
- sublime 设置新建文件自动添加author(作者)等文件头信息
很多时候, sublime 自带自动添加文件头信息, 但是并不是我们想要比如下面这样的:新建一个python文件 自动添加的author 信息== 上面并不是我想要的, 我想要下面这样的效果:== 这 ...
- MATLAB R2017a 安装与破解
第一步: 到我的百度网盘下载MatlAB2017a的原安装程序和破解补丁: 链接:https://pan.baidu.com/s/1jJz97DW 提取密码: d59m 第二步: 下载的两个iso文件 ...
- JavaSE(四)之接口、访问控制
上面我们学习了几个修饰符,在开发中经常会用的到,所以必须熟练的掌握.接下来我学习一下接口和访问控制. 一.接口 一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方 ...