更改paramiko 源码 记录命令实现堡垒机功能

Posted MKY-技术驿站

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了更改paramiko 源码 记录命令实现堡垒机功能相关的知识,希望对你有一定的参考价值。

利用paramiko 下的demo可以很容易的实现记录客户在操作客户机时的命令,修改\demos\interactive.py

 1 def posix_shell(chan):
 2     import select
 3     oldtty = termios.tcgetattr(sys.stdin)
 4     try:
 5         tty.setraw(sys.stdin.fileno())
 6         tty.setcbreak(sys.stdin.fileno())
 7         chan.settimeout(0.0)
 8 
 9 
10         #这里就是主要改造的地方了
11         cmd_list=[]
#定义日志输出的位置
12 log_file=/home/myshare/demos/test.log 13 f=open(log_file,rb+) 14 while True: 15 r, w, e = select.select([chan, sys.stdin], [], []) 16 17 if chan in r: 18 try: 19 x = u(chan.recv(1024)) 20 if len(x) == 0: 21 sys.stdout.write(\r\n*** EOF\r\n) 22 break 23 sys.stdout.write(x) 24 sys.stdout.flush() 25 except socket.timeout: 26 pass 27 if sys.stdin in r: 28 x = sys.stdin.read(1)
#这个x每次敲击键盘就会记录一次,然后就将输入的内容交给输出的地方,这样才完成1个字符1个字符的显示过程。这个地方仔细想一下或者打印结X果就明白什么意思了
#这里将字符串放入列表中,然后当用户敲回车的时候在将列表中的字符串拼接起来
29 cmd_list.append(x) 30 if x == \r: 31 cmd=‘‘.join(cmd_list).replace(\r,\n) 32 f.write(cmd) 33 f.flush() 34 cmd_list=[] 35 if len(x) == 0: 36 break 37 chan.send(x) 38 39 finally: 40 termios.tcsetattr(sys.stdin, termios.TCSADRAIN, oldtty)

此时方法

[[email protected] demos]# ./demo.py [email protected]  

以上是关于更改paramiko 源码 记录命令实现堡垒机功能的主要内容,如果未能解决你的问题,请参考以下文章

堡垒机

python之堡垒机(第九天)

Python paramiko模块 + 堡垒机

python-----堡垒机前戏paramiko模块

python 堡垒机续-----终端方式

Python之路第八篇:堡垒机实例以及数据库操作(paramiko)