fix passwd input

pull/232/head
kelianchun_miller 2016-05-11 11:10:48 +08:00
parent 1338d25b4e
commit 987b1c2c36
1 changed files with 8 additions and 12 deletions

View File

@ -305,7 +305,6 @@ class SshTty(Tty):
old_tty = termios.tcgetattr(sys.stdin) old_tty = termios.tcgetattr(sys.stdin)
pre_timestamp = time.time() pre_timestamp = time.time()
data = '' data = ''
input_str = ''
input_mode = False input_mode = False
try: try:
tty.setraw(sys.stdin.fileno()) tty.setraw(sys.stdin.fileno())
@ -325,8 +324,7 @@ class SshTty(Tty):
x = self.channel.recv(10240) x = self.channel.recv(10240)
if len(x) == 0: if len(x) == 0:
break break
if self.vim_flag:
self.vim_data += x
index = 0 index = 0
len_x = len(x) len_x = len(x)
while index < len_x: while index < len_x:
@ -347,11 +345,11 @@ class SshTty(Tty):
pre_timestamp = now_timestamp pre_timestamp = now_timestamp
log_file_f.flush() log_file_f.flush()
if input_mode and not self.is_output(x): if self.vim_flag:
self.vim_data += x
elif input_mode:
data += x data += x
input_str = ''
except socket.timeout: except socket.timeout:
pass pass
@ -362,11 +360,7 @@ class SshTty(Tty):
pass pass
termlog.recoder = True termlog.recoder = True
input_mode = True input_mode = True
input_str += x if self.is_output(str(x)):
if str(x) in ['\r', '\n', '\r\n']:
# 这个是用来处理用户的复制操作
if input_str != x:
data += input_str
if self.vim_flag: if self.vim_flag:
match = self.vim_end_pattern.findall(self.vim_data) match = self.vim_end_pattern.findall(self.vim_data)
if match: if match:
@ -376,11 +370,13 @@ class SshTty(Tty):
else: else:
self.vim_end_flag = True self.vim_end_flag = True
else: else:
# 如果len(str(x)) > 1 说明是复制输入的
if len(str(x)) > 1:
data = x
data = self.deal_command(data)[0:200] data = self.deal_command(data)[0:200]
if len(data) > 0: if len(data) > 0:
TtyLog(log=log, datetime=datetime.datetime.now(), cmd=data).save() TtyLog(log=log, datetime=datetime.datetime.now(), cmd=data).save()
data = '' data = ''
input_str = ''
self.vim_data = '' self.vim_data = ''
input_mode = False input_mode = False