设为首页 加入收藏 |
|
当前位置: |
TOP | ||||
Python之路:堡垒机实例(三)
1 while True: 2 # 监视用户输入和服务器返回数据 3 # sys.stdin 处理用户输入 4 # chan 是之前创建的通道,用于接收服务器返回信息 5 readable, writeable, error = select.select([chan, sys.stdin, ],[],[],1) 6 if chan in readable: 7 try: 8 x = chan.recv(1024) 9 if len(x) == 0: 10 print '\r\n*** EOF\r\n', 11 break 12 sys.stdout.write(x) 13 sys.stdout.flush() 14 except socket.timeout: 15 pass 16 if sys.stdin in readable: 17 inp = sys.stdin.readline() 18 chan.sendall(inp) # 获取原tty属性 oldtty = termios.tcgetattr(sys.stdin) try: # 为tty设置新属性 # 默认当前tty设备属性: # 输入一行回车,执行 # CTRL+C 进程退出,遇到特殊字符,特殊处理。 # 这是为原始模式,不认识所有特殊符号 # 放置特殊字符应用在当前终端,如此设置,将所有的用户输入均发送到远程服务器 tty.setraw(sys.stdin.fileno()) chan.settimeout(0.0) while True: # 监视 用户输入 和 远程服务器返回数据(socket) # 阻塞,直到句柄可读 r, w, e = select.select([chan, sys.stdin], [], [], 1) if chan in r: try: x = chan.recv(1024) if len(x) == 0: print '\r\n*** EOF\r\n', break sys.stdout.write(x) sys.stdout.flush() except socket.timeout: pass if sys.stdin in r: x = sys.stdin.read(1) if len(x) == 0: break chan.send(x) finally: # 重新设置终端属性 termios.tcsetattr(sys.stdin, termios.TCSADRAIN, oldtty) 1 def windows_shell(chan): 2 import threading 3 4 sys.stdout.write("Line-buffered terminal emulation. Press F6 or ^Z to send EOF.\r\n\r\n") 5 6 def writeall(sock): 7 while True: 8 data = sock.recv(256) 9 if not data: 10 sys.stdout.write('\r\n*** EOF ***\r\n\r\n') 11 sys.stdout.flush() 12 break 13 sys.stdout.write(data) 14 sys.stdout.flush() 15 16 writer = threading.Thread(target=writeall, args=(chan,)) 17 writer.start() 18 19 try: 20 while True: 21 d = sys.stdin.read(1) 22 if not d: 23 break 24 chan.send(d) 25 except EOFError: 26 # user hit ^Z or F6 27 pass 注:密码验证 t.auth_password(username, pw) 详见:paramiko源码demo |
首页 上一页 1 2 3 下一页 尾页 3/3/3 | |
【大 中 小】【打印】 【繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部】 | |
上一篇:Python-Day4 Python基础进阶之生.. | 下一篇:简明Python教程自学笔记——命令.. |
最新文章 |
热门文章 |
Hot 文章 |
Python | ||||||||||
|
||||||||||
C 语言 | ||||||||||
|
||||||||||
C++基础 | ||||||||||
|
||||||||||
大数据基础 | ||||||||||
|
||||||||||
linux编程基础 | ||||||||||
|
||||||||||
C/C++面试题目 | ||||||||||
|
||||||||||