[HOWTO] 端口映射程序

一般的我们想通过端口来绑定一个小程序, 当触发端口的时候就执行程序, 同时输出执行的message, 或者说是远程执行某个程序。

有人说ssh远程执行不久OK啦, 但是在权限要求很严格的机器上, ssh就失去了的作用. 当然也可以规避这个问题. 今天不说ssh, 而是想说说tcpserver 

  • tcpserver

tcpserver就是对一个proj启动一个tcp server. 监听端口响应程序,回写程序输出, 同是它还有很多其他的配置,比如执行权限---通过制定cdb文件来控制权限, 实现Net Wrapper功能。

cat /home/t/reload_nginx
#!/bin/bash

/home/t/nginx/sbin/nginx -s reload
sleep(5)
ps -ef | grep nginxa
192.168.101.10# tcpserver 0.0.0.0 10001 /home/q/reload_nginx

上述的一个script叫做reload_nginx, 它的功能是实现nginx配置文件的reload功能, 同是想看看reload之后nginx的进程状态。然后在所在的机器上把这个script绑定在了10001端口上。

这样我就可以通过telnet来执行远端的程序啦

$ telnet 192.168.101.10 10001
  • tcprules 

tcprules就是来生成cdb文件的。记住cdb是二进制文件, tcpserver可以识别。 

具体的语法:

tcprules /home/q/rules.cdb tmp < input_file

rules.cdb是要生成的cdb文件

tmp文件是临时文件, tcprules在执行的时候, 先把生成的数据放在temp中, 等tcpserver空闲了在copy到cdb文件中去。

input_file是我们制定的可以看得懂的规则, 比如:

cat /home/t/input_file
192.168.101.1:allow
:deny

这样是说明, 只是允许192.168.101.1可以访问,其他都是拒绝的。 

执行规则: 他是从上到下一条一条的判断, 符合就执行、退出, 否则判断下一条。

  • 带IP限制的tcpserver

#tcpserver -x /home/t/rules.cdb 0.0.0.0 10001 /home/t/reload_nginx
  • tcpserver daemon启动

    方法一: initd方式, 把tcpserver的程序包装一下,实现(start, stop, status, restart等)功能, 然后放在/etc/init.d/tcp_serverd下面。

    方法二: daemontools管理

  • Download

    http://cr.yp.to/ucspi-tcp.html




你可能感兴趣的:([HOWTO] 端口映射程序)