首页 > 代码库 > 更改paramiko 源码 记录命令实现堡垒机功能
更改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 break23 sys.stdout.write(x)24 sys.stdout.flush()25 except socket.timeout:26 pass27 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 break37 chan.send(x)38 39 finally:40 termios.tcsetattr(sys.stdin, termios.TCSADRAIN, oldtty)
此时方法
[root@controller demos]# ./demo.py root@10.64.8.10
更改paramiko 源码 记录命令实现堡垒机功能
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。