Я использую флешку для создания веб-телнета. Это работает хорошо, пока я не добавлю объект класса для telnet на другое устройство в моей локальной сети. Кто-нибудь знает, как решить эту проблему?
Вот мой код:
import telnetlib
from flask_socketio import SocketIO, emit
app = Flask(__name__)
socketio = SocketIO(app)
@socketio.on('check_device')
def check(ip_add):
device = telnet_device(ip_add)
device.connect()
class telnet_device():
def __init__(self,ip_add):
self.username = 'user'
self.password = 'pass'
self.host = ip_add
self.connection= False
self.ketnoi = ''
def connect(self):
try:
self.ketnoi = telnetlib.Telnet(self.host, timeout=15)
self.ketnoi.write(self.username.encode()+b'\r')
self.ketnoi.write(self.password.encode()+b'\r')
self.ketnoi.expect([b'>',b']'],5)
self.connection = True
return True
except Exception as error:
print(error)
return False
И сообщения об ошибках:
Traceback (most recent call last):
File "src\gevent\greenlet.py", line 766, in gevent._greenlet.Greenlet.run
File "C:\Python34\lib\site-packages\socketio\server.py", line 599, in _handle_event_internal
r = server._trigger_event(data[0], namespace, sid, *data[1:])
File "C:\Python34\lib\site-packages\socketio\server.py", line 628, in _trigger_event
return self.handlers[namespace][event](*args)
File "C:\Python34\lib\site-packages\flask_socketio\__init__.py", line 277, in _handler
*args)
File "C:\Python34\lib\site-packages\flask_socketio\__init__.py", line 680, in _handle_event
ret = handler(*args)
File "D:\web_app\app.py", line 301, in kiemtra_olt
device.connect()
File "D:\web_app\telnettb.py", line 15, in connect
self.ketnoi = telnetlib.Telnet(self.host, timeout=15)
File "C:\Python34\lib\telnetlib.py", line 221, in __init__
self.open(host, port, timeout)
File "C:\Python34\lib\telnetlib.py", line 237, in open
self.sock = socket.create_connection((host, port), timeout)
File "C:\Python34\lib\site-packages\gevent\socket.py", line 83, in create_connection
addrs = list(getaddrinfo(host, port, 0, SOCK_STREAM))
File "C:\Python34\lib\site-packages\gevent\_socketcommon.py", line 218, in getaddrinfo
in addrlist
File "C:\Python34\lib\site-packages\gevent\_socketcommon.py", line 217, in <listcomp>
for af, socktype, proto, canonname, sa
NameError: name 'SocketKind' is not defined
2019-05-27T08:41:52Z <Thread at 0x4e3c470: <bound method Server._handle_event_internal of <socketio.server.Server object at 0x044CEA70>>(<socketio.server.Server object at 0x044CEA70>, '626fb5231dba41c5be8a226f8f8240b9', ['check_device', 'ip_add'], '/', None)> failed with NameError