问题
在windows环境主机A上想每隔15分钟获取远程Linux主机B上定时监控的logFile文件,但通过在A主机上:telnet B'ip port (例:telnet 158.123.12.1 21)查看远程主机没开放21、22端口,好像不能使用ftp或者sftp来获取(应该是不可以吧)。想自己写个简单服务器实现:
1、服务器端能够正确读取logFile内容
2、客户端访问时,服务器端能够返回logFile的内容
2、客户端能够正确获取logFile内容并写入本地文件中
解决
使用Python的socket模块,自己新增一个可以直接访问的PORT。为了保证数据准确性,使用比较简单的方法:客户端与服务器端通过TCP方式通信。服务器端先启动后,循环等待客户端访问。由于是单个客户端每隔15分钟访问,每完成一次访问便断开连接,所以采用了单线程阻塞的方法实现的服务器端:
远程Linux主机B 服务器端代码:
#coding=utf-8
#!/usr/bin/python
from socket import *
HOST = '158.123.12.1'
PORT = 8083
BUFSIZE = 65535
ADDR = (HOST, PORT)
tcpSerSock = socket(AF_INET, SOCK_STREAM)
tcpSerSock.bind(ADDR)
tcpSerSock.listen(5)
welcomeStr = 'Welcome to 12.1 python socket