# 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. VMware仅主机模式虚拟机无法ping通物理机

    问题描述 在VMware Workstation中新建了一个虚拟机CentOS7,网络适配器选择的是"仅主机模式",结果,物理机ping不通虚拟机,虚拟机也ping不通物理机. 原 ...

  2. KMP算法讲解

    老规矩,讲算法前,先说一道小问题吧 给你一个长串和短串,求短串在长串中出现的次数和位置. 设长串长度为len1,短串长度为len2. 如果len1*len2<=108,那就很简单了,直接暴力枚举 ...

  3. 【二分图】P3386洛谷模板

    题目背景 二分图 题目描述 给定一个二分图,结点个数分别为n,m,边数为e,求二分图最大匹配数 输入输出格式 输入格式: 第一行,n,m,e 第二至e+1行,每行两个正整数u,v,表示u,v有一条连边 ...

  4. 从mysql数据库取一条记录里的某个字段的值

    <?php $link = mysqli_connect("localhost","root","root","dbname ...

  5. 【读书笔记】【深入理解ES6】#12-代理(Proxy)和反射(Reflection)API

    代理(Proxy)是一种可以拦截并改变底层JavaScript引擎操作的包装器,在新语言中通过它暴露内部运作的对象,从而让开发者可以创建内建的对象. 数组问题 在ECMAScript6出现之前,开发者 ...

  6. 一段shell脚本分析

    工作中碰到这样的需求: 1.每天定时要执行python脚本生成excel 2.将生成的excel拷贝到特定目录下 3.通过python发送脚本发送给特定的接收者 因为之前没有接触过shell脚本,同事 ...

  7. flask-日料网站搭建-数据库操作

    引言:想使用python的flask框架搭建一个日料网站,主要包含web架构,静态页面,后台系统,交互,目前已经copy完主页,不是前端太慢太慢. 本节知识:数据库的操作,模型建表,更新数据库. py ...

  8. virtio 简介

    我的微信公众号 aCloudDeveloper 专注于云计算技术,互联网技术,生活感悟,打造干货分享平台,每周至少一更,欢迎小伙伴们多多关注! 什么是 virtio virtio 是一种 I/O 半虚 ...

  9. 在虚拟机中安装metasploit官方攻防模拟器

    首先我们要在windwos下载安装perl环境.下载地址: http://pan.baidu.com/s/1i3GLKAp 然后我们安装 点击next 我同意,next next next,然后他会安 ...

  10. 【NOI2014】魔法森林

    为了得到书法大家的真传,小E同学下定决心去拜访住在魔法森林中的隐士.魔法森林可以被看成一个包含个N节点M条边的无向图,节点标号为 1…n1…n,边标号为1…m1…m.初始时小E同学在 11 号节点,隐 ...