中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 操作系统 > SCO_Unix
[转贴]Unix远程命令调用的实现
作者:未知 时间:2005-09-13 15:08 出处:ChinaUnix.net 责编:chinaitpower
              摘要:[转贴]Unix远程命令调用的实现

[color=darkblue:ea62deb16d]

中国建设银行河南三门峡分行 杨跃峰  

计算机网络的发展虽然十分迅速,但当前网络资源利用率却比较低。网络中相同资源的重复安装和配置增加了许多不必要的运营成本,如何有效地利用网络中有限的资源实现协同工作是十分现实的问题。本文介绍一种Unix系统远程命令调用机制,它不是常规意义上的telnet功能,而是一种更为快捷方便的利用NFS协议建立起来的on命令操作,并在此基础上实现了丰富的远程控制功能,可广泛地应用于局域网和广域网。 
 
系统要求 
● 客户端和远程系统需同时运行Unix系统,HP-UX、Sun Solaris等均可; 
● 客户端设置为NFS服务器,远程系统设置为NFS客户机,这样可将客户端环境及工作目录仿真到远程系统,利用远程系统丰富的资源,执行命令并将结果返回到客户端; 
● 通过inetd服务进程在远程系统配置好rexd服务,通过RPC(Remote Process Control),响应客户端运行的on命令远程调用请求; 
● 实现远程调用的用户要在两端系统中拥有相同的UserID和GroupID; 
● 客户端只能以普通用户而非超级用户(root)执行on命令操作; 
● 在利用该机制进行软件开发时,两端操作系统版本号要保持一致,否则会导致生成的二进制代码不兼容的问题。 
 
实现原理 
用户在客户端本地执行“on host command”实现在远程主机上进行命令调用的功能。远程主机收到on命令调用请求后自动由inetd服务进程启动rexd进程。如果请求包中附带的UserID在远程主机中存在,则以该用户执行相应命令,否则出错退出。 
命令执行期间rexd自动将客户端工作环境仿真到远程系统上,并通过NFS协议自动将其工作目录临时挂接到远程系统的特定目录下。命令执行完毕输出结果返回到客户端后,用户工作目录自动卸载,rexd进程也自动退出。所有这一切后台操作对用户而言都是透明的。 
 
 
设置步骤 
本文以HP-UX 10.20为例介绍远程调用的具体实现过程(在其他Unix系统上,如SCO OpenServer上同样调试通过)。以下配置均需超级用户(root)执行。 
1.远程系统 
设置并启动NFS客户机 : 
# vi /etc/rc.config.d/nfs.conf  
nfs.client=1 
# /sbin/init.d/nfs.client start 
设置并启动rexd后台服务程序,自动响应客户端远程调用请求: 
# vi /etc/inetd.conf  
rpc stream tcp nowait root /usr/sbin/rpc.rexd 100017 1 rpc.rexd 
# inetd -c 
2.客户端系统 
设置并启动NFS服务器: 
# vi /etc/rc.config.d/nfs.conf  
nfs.server=1 
# /sbin/init.d/nfs.server start 
假设远程主机名为server,将本地资源授权给远程系统: 
# vi /etc/exports  
/ -root = server 
# exportfs -ua 
# exportfs -a 
这样一来,当远程系统rpc.rexd收到客户端on远程调用请求时,自动检查客户端配置情况,如授权许可则通过NFS协议将客户端用户工作目录自动挂接到 /usr/spool/rexd/rexdXXXXXX,其中XXXXXX是运行rexd的进程序列号。以上任何一个环节出错都会导致远程调用失败并返回相应错误信息。 
 
命令调用 
on 命令只允许以普通用户执行,格式如下: 
on [ -i | -n ] [ -d ] hostname [command]  
例如: 
on -i server 
on server ls -l /home/yyf 
其中: 
● -i: 表示交互式操作; 
● -n: 命令执行期间无需输入参数; 
● -d: 调试模式; 
● hostname: 远程主机名; 
● command: 要执行的命令,如果省略则进入一个交互式的shell提示符下,以后发送的每一个命令都将在远程主机仿真的用户工作目录下执行(如/var/spool/rexd/rexda00756/home/yyf)。 
 
安全考虑 
● 为最大限度地保护本地文件系统,以防止非法存取,客户端设置/etc/exports时应通过授权给确定的远程主机普通用户而非超级用户操作,明确只能在指定的远程主机上调用命令。如: 
/home -rw = host1:host2 
/usr -rw = host3 
● 在远程系统上编辑安全设置文件: 
/var/adm/inetd.sec  
仅限制在特定的客户机上执行on命令调用。 
● 清理远程系统中不必要的普通用户,防止客户端任意用户执行远程命令调用。 
● 在远程系统上启动rpc.rexd服务进程时带上 -r 参数,增强对客户端系统的安全检查,或带上 -l logfile参数将每次远程调用请求信息(包括诊断、警告、出错等)记入特定日志文件,供管理员定期监控分析。 [/color:ea62deb16d]

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有