这就是我想要做的:
web-browser -->通过远程登录(Server1)连接到远程服务器-->通过端口80(server2)远程登录到squid-proxy(需要身份验证)
我已经编写了一个使用Twisted的小python脚本(这里:
#! /usr/bin/python
from twisted.internet import reactor, protocol
from twisted.web import http
from telnetlib import Telnet
import getpass
from sys import stdout
class datareceiver(protocol.Protocol):
def dataReceived(self,data):
self.telnet_con.write(data)
stdout.write( self.telnet_con.read_all() )
def connectionMade(data):
stdout.write("\nA connection was made to this server\n")
def main():
server1 = "10.1.1.1"
#user = raw_input("Enter your remote account: ")
password = getpass.getpass()
tn = Telnet(server1)
if password:
tn.read_until("Password: ")
tn.write(password + "\n")
#This is server2
tn.write("telnet 10.1.1.10 80 \n")
#serverfac = protocol.Factory()
serverfac = http.HTTPFactory()
datareceiver.telnet_con = tn
serverfac.protocol = datareceiver
reactor.listenTCP(9229,serverfac)
reactor.run()
tn.write("exit\n")
print tn.read_all()
if __name__ == "__main__":
main()但是后来我意识到我做错了,我的shell从squid而不是浏览器得到了所有的回复。有人能概述一下做这件事的正确方法吗?我应该使用其他的东西而不是扭曲的吗?
发布于 2011-10-07 04:36:45
我想你应该看看twisted.web.server.Site和twisted.web.resource.Resource。此外,由于您使用的是Twisted,因此您可能希望使用twisted.protocols.telnet.Telnet进行远程登录连接,否则您的应用程序将不是异步的。
This blog post和this answer here可能也很有用。
希望这能有所帮助!
https://stackoverflow.com/questions/7354864
复制相似问题