rpcinfo -- 报告 RPC 信息

来源:互联网 发布:情侣软件有哪些 编辑:程序博客网 时间:2024/05/18 00:02
rpcinfo 命令会向 RPC 服务器发出 RPC 调用,并将得到的结果显示出来。用法如下:
rpcinfo [-m | -s] [host]
     rpcinfo -p [host]
     rpcinfo -T transport host prognum [versnum]
     rpcinfo -l [-T transport] host prognum [versnum]
     rpcinfo [-n portnum] -u host prognum [versnum]
     rpcinfo [-n portnum] [-t] host prognum [versnum]
     rpcinfo -a serv_address -T transport prognum [versnum]
     rpcinfo -b [-T transport] prognum versnum
     rpcinfo -d [-T transport] prognum versnum

在上面第 1 条命令样式中rpcinfo 会列出所有在主机 host 上向 rpcbind 注册的 RPC 服务。如果不指定 host 参数,那么默认是本地主机。如果指定了 -s 选项,那么会以一种简明的方式显示出结果。比如:



在第 2 条命令样式中,rpcinfo 列出了版本 2 的 rpcbind 上注册的 RPC 服务,注意区别与第 1 条命令样式输出的不同,这是由于第 2 条命令样式是一种较老的协议。

在第 3 条命令样式中,向指定的 host 发出对给定“程序号/版本号”对 的过程 0 (procedure 0) 的RPC 调用,并报告是否收到一个响应。-T 选项的参数 transport 要么是 TCP 要么是 UDP,表示该 RPC 调用所使用的传输方式:
[root@groad.net ~]# rpcinfo -T tcp localhost 100000 2
program 100000 version 2 ready and waiting

在命令样式中提到的选项 prognum 参数是一个数值,用以表示一个 RPC 程序号。如果指定了 versnum (版本号),rpcinfo 会试图调用该指定程序号的对应版本。否则,rpcinfo 会通过调用版本号0,这样会试图找到所有指定程序号程序的所有版本号。

-p 选项,使用 rpcbind 协议的第 2 版本样式来探测 rpcbind ,第 2 版本的 rpcbind 在早些时也称为 portmapper 协议。

-t 选项,使用 TCP 协议向指定 host 上的 prognum 的 过程0 发出 RPC 调用,并报告是否能收到一个响应。该选项建议使用上述的 -T 来代替。

-u 选项,使用 UDP 协议向指定 host 上的 prognum 的 过程0 发出 RPC 调用,并报告是否能收到一个响应。该选项建议使用上述的 -T 来代替。


-a 选项,指定主机的完整 IP 地址和端口号。使用该选项时注意地址的格式,可以先单独运行 rpcinfo 命令参考一下:
# rpcinfo
   program version netid     address                service    owner
    100000    4    tcp6      ::.0.111               portmapper superuser
    100000    4    tcp       0.0.0.0.0.111          portmapper superuser
    100000    3    local     /var/run/rpcbind.sock  portmapper superuser
    100024    1    udp       0.0.0.0.162.19         status     29
    100024    1    tcp       0.0.0.0.136.165        status     29
    100024    1    udp6     ::.235.140             status     29
    100024    1    tcp6      ::.200.18              status     29

所以,可以如下执行下面的命令:
# rpcinfo -a 192.168.1.102.176.112 -T tcp 100005 2
program 100005 version 2 ready and waiting

红色标识部分的 IP 地址格式称之为 universal address format (全体地址格式,之所以称之为“全体”是因为它将端口号也作为 IP 地址的一部分集成在地址中)。下面说明一下 IPv4 的全体地址格式,其组成格式为 h1.h2.h3.h4.p1.p2 ,显然 h1.h2.h3.h4 和往常所见到的 IPv4 地址格式无异,p1.p2 表示的是端口号。比如 127.0.0.1.8.1 后面的 8.1 表示的是端口 2049 。我们可以将 2049 转换为十六进制,其值为 0x801,因此该十六进制是按照大端格式存放到 IPv4 后面的。同理可以解释上面的 136.165 ,将 136 和 165 分别转换为十六进制,得到 0x88A5,再转换为十进制为 34981,该值即为真正的端口号。

关于 IPv4 和 IPv6 的“全体地址格式”详细说明可参考 RFC 5665 

-b 选项,将 RPC 广播到指定的“程序号/版本号"对的 过程0 ,并报告响应的所有主机。如果指定了 transport 参数,它仅广播它的指定 transport 上的请求。如果任何 transport 不支持广播,那么打印错误信息。由于广播行为可能会对别的系统产生不利影响,应该限制使用广播。

-m 选项,显示指定主机上的端口映射操作统计信息表。该表包含了对每个版本的端口映射(版本2,3 和4)的统计信息、每个过程请求和成功服务的次数,所做的远程调用请求的类型和数目,以及关于已处理的 RPC 地址查询信息。本信息用来监视在主机上的 RPC 活动,比如:



-l 选项,显示在指定主机上的”程序号/版本号"对 的条目的列表。返回所有使用与用于联系远程 portmap 守护进程的协议在同一个协议系列内的传输的条目,比如:
[root@groad.net ~]# rpcinfo -l localhost 100000 3
   program vers  tp_family/name/class    address          service
    100000  3    inet6/tcp/cots_ord      ::1.0.111                portmapper   
    100000  3    inet6/udp/clts          ::1.0.111                portmapper


-n portnum 选项,使用 portnum 参数作为 -t 和 -u 选项的端口号来代替 rpcbind 给出的端口号。使用该选项避免了调用远程 rpcbind 来查找服务的地址。不建议用该选项,而是使用 -a 选项。

-d 选项,删除给定“程序号/版本号”对上的 RPC 服务上的注册。如果使用 transport,那么只注销那个 transport 上的服务;否则注销掉所有 transport 上的服务。只有服务的拥有者可以删除相应的注册,root 用户可以删除任一个服务上的注册。

关于 portmap 的其它信息可参考:《portmap 
原创粉丝点击