# nexec

## 1 说明:nexec是远程命令接口引擎 ,用于在远程主机执行命令

nexec [-?] [-t term] [-o] [-i] [-l] [-nohup hostname "cmd &"] -e | hostname cmd [args]

如果你不想看下面的臭又长,可以直接看下面示例:

## 2 nexec常用示例

1 在指定主机执行命令

cloudexpress# nexec 10.200.108.92 net user 

2 在当前路径所在的主机执行命令执行命令

cloudexpress# cd //10.200.108.92

10# pwd

//10.200.108.92/c/

10# nexec -e ifconfig 

3 在指定主机上以后台方式执行命令或程序 (适用于需要很多环境变量依赖的情况)

cloudexpress# nexec -nohup 10.200.108.92 "ipconfig &"

4 运行脚本示例

windows上:

nexec 10.200.108.92 cmd /c "c:\startup.bat" 

Linux上:

nexec -u -l 10.200.108.92 su - root -c "sh /etc/startup.sh" 

其实上面这两个例子也是nexec <host> <command>格式,可以根据实际情况进行变换,比如要后台运行脚本则:

nexec -u -l -nohup 10.200.108.92 su - root -c "sh /etc/startup.sh &" 

5 又比如你想修改某台linux机器的密码,则如下执行

nsh -c 'nexec -r -l 10.200.162.230 "echo "root" | passwd --stdin root"'

6 如果包含双引号

nexec -ncq <windows_host> cmd /c 'echo test"test'

注意:如果操作系统为windows2003,当执行wmic命令时,命令会卡住,参考下面方法可成功执行

 nexec -ncq <windows_host> cmd /c 'echo QUIT | wmic csproduct get identifyingnumber'

例子看完了,够用就走开吧

## 3 描述

nexec有两种工作方式

1 显示方式 

语法: *nexec ARG1 ARG2*

第一个参数可以是被执行命令的主机、或者是-e,如果是-e则意味着在当前工作目录所在的主机执行命令。第二个参数就是要远程执行的命令和命令的参数

例如:nexec 10.200.108.92 tasklist /FI "IMAGENAME eq tasklist.exe" 等价于 cd //10.200.108.92;nexec 10.200.108.92 tasklist /FI "IMAGENAME eq tasklist.exe"

2 隐式方式 

被执行的命令已经软连接到nexec,则执行该命令时是隐式方式。执行时,系统自动把要执行的命令<command>解释为nexec <host> <command>执行,其中host由当前程序的工作目录所在的主机所决定。注意:要执行的命令必须是remote_cmds 配置文件中声明过的,否则系统默认在localhost上执行,结果是错误的。怎么定制remote_cmds,请参见以前写的"BSA Network Shell系列-NSH命令"文章。

## 4 命令参数

-e  在当前远程主机执行命令

-i  通知agent以纯交互模式运行,用于一些需要交互的程序(如Solaris /bin/vi 或者AIX的smit)。如果使用这个选项,标准输出和标准错误的消息都将一起显示。不用这个选项,则远程的标准输出和标准错误将写入各自本地的标准输出和标准错误中。仅当远程机的交互式程序无法正常显示时使用这个选项。

-l  模拟一个login shell。该选项尝试启动一个远程程序模拟实际的登录会话。它会根据远程权限设置HOME、LOGNAME、USER环境变量的值。它将初始工作目录设置为有效远程用户的home目录。然后使用有效远程用户的默认shell调用*cmd args* ,并设置执行程序(有效远程用户的默认shell)的 *argv[0]* 为"-"。这是一种被各种shell(如sh,ksh,bash等)理解的表明当前shell是login shell的方法,并以login shell的方式执行初始化脚本(如.profile等)。最终该选项会在 *utmp* 数据库中创建一条记录。utmp数据库的记录可以通过 *who* 命令查看。

注意:该选项仅适用用于远程服务器是类Unix机器,此外,并非所有平台都支持*utmp*。如果*cmd*是在有效远程用户的默认shell执行的,那么nexec将直接执行command而非再次派生新的shell执行。

下面例子阐明了命令是如何执行的(假定默认shell是/bin/ksh)。

Client sends ’nexec -l -e ls -la’

Agent executes ’/bin/ksh -ksh -c "ls -la"

Client sends ’nexec -l -e ksh’

Agent executes ’/bin/ksh -ksh’

-n  忽略标准输入(不从标准输入中读取任何数据)。默认地,nexec会把所有输入的数据发送给远程命令作为标准输入。使用该选项则不再读取标准输入,因此该选项仅用于不需要输入的命令。

-nohup Hostname "cmd &"

在服务器后台执行一个命令,该选项适用于7.0.3及以上版本的agent。

-o  使用旧版本的nexec协议。Release7.0为nexec协议引入了一些同步补丁,使用该选项告诉nexec不使用这些同步补丁。

-r  不对input/output进行自动转码,详细信息参见(国际化问题)节。

-u  使用该选项nexec将把所有命令的输出(stdout/stderr)从目标服务器的本地代码页转换为UTF8。它假定输出是由正确的代码页序列组成,所以随机二进制数可能无法正确转换、无效的and/or 未识别的序列将转换为问号'?'。

-t term  告知nexec忽略 *TERM variable* 的值,并使用 *term* 替代terminal type。

当在windows机器执行**nexec**命令时,命令不能是交互命令,必须是batch(output only)command。

## 5 国际化问题

其中一个问题是,当用户跨多个服务器执行时,这些机器如何在混合的代码页环境中进行有意义的交互。

比如:一个window服务器设置的区域是Japanese、代码页(code page)是CP932,另一台Solaris服务器设置的区域也是Japanese、但代码页是EUC-JP。这时从windows机器上通过nexec在Solaris机器执行命令产生了Japanese输出。这时显示在windows机器上的输出是错误的,是因为windows机器期待CP932的代码序列,但Solaris提供的却是EUC-JP的代码序列。所以输出的结果可能不怎么有用。

为了处理这个问题,nexec现在默认自动进行转码。命令的输出在正常情况下,先在nexec客户端转换为本地代码页,然后显示到到终端/屏幕前。而现在命令产生的输出会先被agent抓取并自动转换为UTF-8,然后再发送给nexec客户端,最终显示在终端上。同样的,nexec抓取的输入(stdin)在发送给agent前也被转换为UTF-8。

由于这个自动转码可能不总是满足需要,使用-r选项会使所有数据设为raw模式,也就是不自动转码。如果遇到乱码,可以使用-r参数测试

需要注意是否有转码问题,未识别的字符会被问号'?'替代。如果不想自动转码,可以使用 *-r* (raw)选项禁用该功能。

## 6 X11(即X Windows)Forwarding

nexec工具通过以下方式自动配置agent抓取X11 流量:

重置**DISPLAY**变量并通过隧道方式把流量转发到发起nexec调用的服务器。这允许你的通过隧道方式安全的转发X11流量,这和其他NSH工具安全功能相同。

## 7 nexec默认支持的命令

Network Shell提供如下预配置的命令:

arp、finger、ifconfig、ipconfig (NT)、mem (NT)、mount、nbtstat (NT)、net (NT)、netstat、nfsstat、ps、size、swap、umount、uptime、who、xterm

## 8 警告

不同操作系统的命令可能不一致,某个参数选项可能在不同平台表现也不统一。比如 *ps* 命令的例子,在BSD、ATT系统的参数选项完全不同。当然某些命令可能在一些主机上也不能用。

由于nexec命令不支持图形界面交互,所以windows平台只支持简单的输入输出命令/程序,需要控制台界面操作的程序会挂起或者功能异常。

## 9 作者

nexec是由Thomas Kraus写的

BSA Network Shell系列-nexec命令的更多相关文章

  1. BSA Network Shell系列-nexec | runcmd | runscript | scriptutil的异同

    说明下nexec.runcmd.runscript.scriptutil的异同 相同点: 四者都可以在远程机器执行命令.或者调用脚本. 不同点: nexec支持NSH命令,可以执行远程机的本地命令(非 ...

  2. BSA Network Shell系列-nsh命令

    nsh nsh命令软链接到zsh,直接运行nsh可进入Network Shell,所有的Network Shell命令都需要运行nsh进入Network Shell执行 1 使用cd命令访问远程主机和 ...

  3. BSA Network Shell系列-scriptutil命令

    scriptutil ## 1 功能概述 scriptutil复制脚本到远程机的某个目录,然后在该目录执行脚本. 它的优点就是脚本是non-NSH的脚本.不支持NSH命令,执行起来的效果和runscr ...

  4. BSA Network Shell系列-redi命令

    redi ## 1 功能概述 redi将输出重定向到一个文件中 ## 2 语法 redi [-?] [-a] filename ## 3 使用示例 1 将输出重定向到隐式路径所在主机的/tmp/hah ...

  5. BSA Network Shell系列-nlogin命令

    nlogin 1 说明 nlogin 是一种通过RSCD Agent的通信的安全远程登录,使用和NSH工具相同的加密协议.可以作为telnet.rlogin或者ssh的替代工具(假如这些端口或协议禁用 ...

  6. BSA Network Shell系列-runcmd/runscript命令

    runcmd和runscript ## 1 功能概述 runcmd/runscript:runcmd在一台或多台机器执行Network Shell命令(单个命令),而runscript执行的是脚本,二 ...

  7. BSA Network Shell系列-通过NSH执行Powershell,VBScript或bat files脚本

    参考:Running Powershell, VBScript, or bat files via NSH 如果你直接在NSH命令行执行的话,可以参考我翻译的下面的东东,如果想运行NSH 脚本作业的话 ...

  8. Linux Shell系列教程之(八)Shell printf命令详解

    本文是Linux Shell系列教程的第(八)篇,更多shell教程请看:Linux Shell系列教程 在上一篇:Linux Shell系列教程之(七)Shell输出这篇文章中,已经对Shell p ...

  9. Linux Shell系列教程之(十六) Shell输入输出重定向

    本文是Linux Shell系列教程的第(十六)篇,更多Linux Shell教程请看:Linux Shell系列教程 Shell中的输出和输入的重定向是在使用中经常用到的一个功能,非常实用,今天就为 ...

随机推荐

  1. VS如何设置类或函数前不显示引用的数量

    问题如下: 取消显示这个引用的步骤: 找到菜单栏: 工具 ---> 选项  ---> 文本编辑器 ---> 所有语言 ---> CodeLens 设置取消启用CodeLens, ...

  2. 【ASP.NET Core分布式项目实战】(一)IdentityServer4登录中心、oauth密码模式identity server4实现

    本博客根据http://video.jessetalk.cn/my/course/5视频整理 资料 OAuth2 流程:http://www.ruanyifeng.com/blog/2014/05/o ...

  3. 关于FPGA的一些你必须知道的概念

    前仿真也称为功能仿真,主旨在于验证电路的功能是否符合设计要求,其特点是不考虑电路门延迟与线延迟,主要是验证电路与理想情况是否一致.可综合FPGA代码是用RTL级代码语言描述的,其输入为RTL级代码与T ...

  4. Zabbix实战-简易教程--拓扑图(Maps)

    一.拓扑图(Maps) 二话不说,有图有真相,先看看效果,再详细讲解配置过程: 图1:全国网络质量图 图2 核心机房网络质量图 二.详细配置 1.添加  map 选择 系统管理-->基础配置-- ...

  5. H5中的web worker示例demo分析

    web worker 是运行在后台的 JavaScript,不会影响页面的性能. 什么是 Web Worker? 当在 HTML 页面中执行脚本时,页面的状态是不可响应的,直到脚本已完成. web w ...

  6. 初学HTML5,你要懂得哪些?

    很多人问过我这个问题,想要做HTML5页面你要懂得哪些知识?而问这个问题的人基本上都是刚听说过或刚接触HTML5,处在迷茫的阶段,他们往往会被一些网上炫酷页面所吸引,然后自己也想学习HTML5,能通过 ...

  7. Centos7环境搭建lnmp环境

    [原创]编译安装lnmp环境 准备软件:nginx1.10.3+php-5.5.12+mariadb10.0.8(数据库在此使用的yum安装) 如果需要编译安装的可以给我留言,我后续再发布出来! 依赖 ...

  8. java构建学生管理系统(一)

    用java搭建学生管理系统,重要还是对数据库的操作,诸如增删改查等. 1.基本的功能: 老师完成对学生信息的查看和修改,完成对班级的信息的概览. 学生可以看自己的成绩和对自己信息的修改. 学生和老师有 ...

  9. sass 安装

    最近在安装sass的过程中遇到 了一下问题,总结一下安装过程. windows下sass的安装是依赖于ruby的,所以要先安装rubyinstaller,下载地址:https://rubyinstal ...

  10. POJ 3041 Asteroids(模板——二分最大匹配(BFS增广))

    题目链接: http://poj.org/problem?id=3041 Description Bessie wants to navigate her spaceship through a da ...