tomato固件 路由简单玩 BT 电驴 amule highId python 其实dd wrt也一样 含 amule_2.2.6-1_mipsel.ipk下
1. 安装软件(python为例)
拷贝路由etc的所有文件及,目录道 移动硬盘的etc
monut -o bin <移动硬盘etc路径> /tmp/etc
monut -o bin <移动硬盘opt路径> /opt
解压缩?opt.tar.gz
找到ipkg
ipkg装好后再装python
root@tomato:/tmp/mnt/MD2/route_sw/opt/program/python26# ipkg install http://www.cnblogs.com/http://www.cnblogs.com/ipkg_packages/python26_2.6.7-1_mipsel.ipk?
Installing python26 (2.6.7-1) to root...
Installing bzip2 (1.0.6-1) to root...
Downloading http://ipkg.nslu2-linux.org/feeds/optware/oleg/cross/stable/bzip2_1.0.6-1_mipsel.ipk
An error ocurred, return value: 1.
Collected errors:
Package bzip2 wants to install file /opt/bin/bzcat
/opt/bin/bzcat 重命名这个 即可
root@tomato:/opt# cd bin/
root@tomato:/opt/bin# ll | grep "python"
-rwxr-xr-x 1 root root 6120 Jun 9 06:04 python2.6*
-rwxr-xr-x 1 root root 1418 Jun 9 06:04 python2.6-config*
root@tomato:/opt/bin# python2.6
Python 2.6.7 (r267:88850, Jun 8 2011, 22:01:39)?
[GCC 4.1.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 1+1
2
>>>?
>>> exit
Use exit() or Ctrl-D (i.e. EOF) to exit
>>>?
root@tomato:/opt/bin#
表明python成功安装
?
2. 电驴highid的玩法
贴个安装包把 2.2.6 稳定版
amule_2.2.6-1_mipsel.ipk
?
1. 重设电驴的tcp和udp端口 10001 10002
2. 在路由上设置端口转发
3. 在路由上的防火墙中放开这些端口10001 10002 10004 10005
root@tomato:/tmp/home/root# iptables -A INPUT -p tcp --dport 10001 -j ACCEPT
root@tomato:/tmp/home/root# iptables -A INPUT -p tcp --dport 10002 -j ACCEPT
root@tomato:/tmp/home/root# iptables -A INPUT -p tcp --dport 10004 -j ACCEPT
root@tomato:/tmp/home/root# iptables -A INPUT -p tcp --dport 10005 -j ACCEPT
root@tomato:/tmp/home/root#
aMulecmd$ status
> eD2k: Connected to TV Underground No1 [193.169.86.73:4184] with HighID
> Kad: Connected (firewalled)
> Download: 2.84 kB/s
> Upload: 236 bytes/sec
?
3. 在公网测试你的ip?
nohup python2.6 pySocketServer.py &
这样就能是进程 即使 退出这个终端 依然在后台运行
今天跟mc联机测试了下
在公网也是能通过tcp联通
但是有三点
1. server端代码bind 0.0.0.0ip(如下)
2. 要在路由中设置端口转发
3. 要在路由中的防火墙里开放这个端口
?
如果用python写的server端代码
bind的ip地址写0.0.0.0
1 import socket 2 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 3 sock.bind(('0.0.0.0', 8666)) 4 sock.listen(5) 5 while True: 6 connection,address = sock.accept() 7 try: 8 connection.settimeout(60) 9 buf = connection.recv(1024) 10 if buf == '1': 11 connection.send('welcome to server!') 12 else: 13 connection.send('please go out!') 14 except socket.timeout: 15 print 'time out' 16 connection.close()
?
?
测试客户端
1 import socket 2 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 3 sock.connect(('你路由公网ip', 8666)) 4 import time 5 time.sleep(2) 6 sock.send('1') 7 print sock.recv(1024) 8 sock.close()
?