Django项目:堡垒机(Linux服务器主机管理系统)--03--03堡垒机在Linux系统里记录会话日志01/02
请先确保已经安装了虚拟机以及python3
python相关软件安装流程图解——linux 安装python3——Python-3.7.1
.
1 ————————安装django 开始———————— 2 login as: root 3 root@192.192.168.126's password: 123456 4 [root@localhost ~]# python3 5 >>> import django 6 >>> exit() 7 [root@localhost ~]# pip3 install --upgrade pip 8 [root@localhost ~]# pip3 install --default-timeout=1000 Django==2.1.4 9 [root@localhost ~]# python3 10 >>> import django 11 >>> print(django.get_version()) 12 2.1.4 13 >>> exit() 14 ————————安装django 结束————————
python相关软件安装流程图解——虚拟机操作——复制虚拟机主机——CentOS-7-x86_64-DVD-1810
安装测试 strace跟踪线程
1 ————————安装strace跟踪线程 开始———————— 2 [root@localhost ~]# yum -y install strace 3 [root@localhost ~]# ssh root@192.192.168.110 | 4 root@192.192.168.110's password:123456 | 5 | [root@localhost ~]# ps -ef 6 | UID PID PPID C STIME TTY TIME CMD 7 | root 5999 5936 0 08:06 pts/2 00:00:00 ssh root@192.192.168.110 8 | [root@localhost ~]# sudo strace -p 5999 9 [root@localhost ~]# l | read(4, "l", 16384) = 1 10 | [root@localhost ~]# sudo strace -p 5999 -o eye.log 11 [root@localhost ~]# A | 12 | [root@localhost ~]# cat eye.log 13 | [root@localhost ~]# cat eye.log |grep 'read(4' 14 | read(4, "A", 16384) = 1 15 ————————安装strace跟踪线程 结束————————
测试 自动输入账号密码的插件
1 """ 2 ————————sshpass可以在命令行直接使用密码来进行远程连接和远程拉取文件 开始———————— 3 [root@localhost ~]# yum -y install sshpass 4 [root@localhost ~]# sshpass -p 123456 ssh -p 22 root@192.192.168.110 5 [root@localhost ~]# ip addr 6 ————————用python调用sshpass 开始———————— 7 [root@localhost ~]# python3 8 >>> import subprocess 9 >>> subprocess.run("sshpass -p 123456 ssh root@192.192.168.110 -o StrictHostKeyChecking=no",shell=True) 10 ————————另启一个会话查看———————— 11 [root@localhost ~]# ps -ef 12 UID PID PPID C STIME TTY TIME CMD 13 root 5147 5146 0 09:41 pts/8 00:00:00 ssh root@192.192.168.110 -o StrictHostKeyCh 14 [root@localhost ~]# sudo strace -fp 5147 -t -o eye.log 15 [root@localhost ~]# cat eye.log 16 ————获取进程号 开始———— 17 [root@localhost ~]# ps -ef | grep 'root@192.192.168.110' 18 [root@localhost ~]# ps -ef | grep 'root@192.192.168.110' | grep ssh 19 [root@localhost ~]# ps -ef | grep 'root@192.192.168.110' | grep ssh | grep -v sshpass 20 [root@localhost ~]# ps -ef | grep 'root@192.192.168.110' | grep ssh | grep -v sshpass | awk '{ print $2 }' 21 ————获取进程号 结束———— 22 ————————用python调用sshpass 结束———————— 23 ————————sshpass可以在命令行直接使用密码来进行远程连接和远程拉取文件 结束———————— 24 """
用python调用sshpass
获取进程号
1 """ 2 ————————获取进程号,唯一标识 开始———————— 3 [root@localhost ~]# python3 4 >>> import subprocess 5 >>> subprocess.run("sshpass -p 123456 ssh root@192.192.168.110 -E wybs123 -o StrictHostKeyChecking=no",shell=True) 6 ————————另启一个登陆会话———————— 7 [root@localhost ~]# python3 8 >>> import subprocess 9 >>> subprocess.run("sshpass -p 123456 ssh root@192.192.168.110 -E wybs456 -o StrictHostKeyChecking=no",shell=True) 10 ————————另启一个会话查看———————— 11 [root@localhost ~]# ps -ef | grep 'root@192.192.168.110' | grep ssh | grep -v sshpass | grep wybs123 | awk '{ print $2 }' 12 [root@localhost ~]# ps -ef | grep wybs123 | grep ssh | grep -v sshpass | awk '{ print $2 }' 13 ————————获取进程号,唯一标识 结束———————— 14 """
SH脚本测试
1 """ 2 E:\堡垒机\eye\Fortress\backend\session_tracker.sh 复制到 CentOS-7 的 /home/ 目录下 3 ————————SH脚本测试 开始———————— 4 [root@localhost ~]# sh /home/session_tracker.sh 5 [root@localhost ~]# sh /home/session_tracker.sh wybs123 99 6 ————————SH脚本测试 结束———————— 7 ————————用python3测试SH脚本 开始———————— 8 [root@localhost ~]# python3 9 >>> import subprocess 10 >>> subprocess.run("sshpass -p 123456 ssh root@192.192.168.110 -E wybs123 -o StrictHostKeyChecking=no",shell=True) 11 ————————另启一个会话查看———————— 12 [root@localhost ~]# ps -ef | grep wybs123 | grep ssh | grep -v sshpass | awk '{ print $2 }' 13 [root@localhost ~]# sh /home/session_tracker.sh wybs123 99 14 ————————用python3测试SH脚本 结束———————— 15 """
1 #!/bin/bash 2 #session_tracker.sh 3 # ————————————————03堡垒机在Linux系统里记录会话日志 开始———————————————— 4 echo "-------- 启动会话(strace跟踪)记录 --------" 5 basepath=$(cd `dirname $0`; pwd) 6 echo "-- SH脚本当前目录的路径:$0 | 上级目录的路径: $basepath --" 7 #sh 动态路径/Fortress/backend/session_tracker.sh %s %s-- 8 echo "-- 唯一标识: $1 | 新的会话的ID:$2 --" 9 ssh_uuid=$1 10 session_obj_id=$2 11 12 #循环获取进程的ID,进行30次,每判断一次停止1秒 13 for i in $(seq 1 30);do 14 process_id=$(ps -ef |grep $ssh_uuid |grep ssh |grep -v sshpass |grep -v $0 |awk '{ print $2 }' ) 15 echo "搜/滤出进程号 |搜索 $ssh_uuid |搜索 ssh |过滤掉 sshpass |过滤掉 $0 |处理 { 打印 $2 } " 16 #|awk '{ print $2 }' | awk是行处理器--print是awk打印指定内容的主要命令" 17 18 echo "---- 开始判断是否获取到了,进程的ID: $process_id ----" 19 if [ ! -z $process_id ];then 20 echo "-- 已获取到进程ID,准备创建日志目录和文件!-- " 21 log_path=$basepath/log/`date +%F` 22 echo "-- 生成会话日志的路径: $log_path | 当天日期:`date +%F` -- " 23 mkdir -p $log_path 24 echo "-- 创建目录成功!-- " 25 26 #" -e trace=rean,write 表示只跟踪这2个 | -s 9999 输出长度 | -f 子进程 | -p 进程pid | -t时间 | -o写入文件" 27 sudo strace -e trace=read,write -s 9999 -f -p $process_id -t -o $log_path/session_$session_obj_id.txt 28 echo "-- strace跟踪监控:进程ID: $process_id | 路径: $log_path | 文件名-会话的ID: $session_obj_id -- " 29 echo "---退出循环---" 30 break; 31 fi; 32 #结束判断,停止1秒 33 sleep 1; 34 done; 35 # ————————————————03堡垒机在Linux系统里记录会话日志 结束————————————————
1 """ 2 ————————安装django 开始———————— 3 login as: root 4 root@192.192.168.126's password: 123456 5 [root@localhost ~]# python3 6 >>> import django 7 >>> exit() 8 [root@localhost ~]# pip3 install --upgrade pip 9 [root@localhost ~]# pip3 install --default-timeout=1000 Django==2.1.4 10 [root@localhost ~]# python3 11 >>> import django 12 >>> print(django.get_version()) 13 2.1.4 14 >>> exit() 15 ————————安装django 结束———————— 16 """ 17 """ 18 ————————安装strace跟踪线程 开始———————— 19 [root@localhost ~]# yum -y install strace 20 [root@localhost ~]# ssh root@192.192.168.110 | 21 root@192.192.168.110's password:123456 | 22 | [root@localhost ~]# ps -ef 23 | UID PID PPID C STIME TTY TIME CMD 24 | root 5999 5936 0 08:06 pts/2 00:00:00 ssh root@192.192.168.110 25 | [root@localhost ~]# sudo strace -p 5999 26 [root@localhost ~]# l | read(4, "l", 16384) = 1 27 | [root@localhost ~]# sudo strace -p 5999 -o eye.log 28 [root@localhost ~]# A | 29 | [root@localhost ~]# cat eye.log 30 | [root@localhost ~]# cat eye.log |grep 'read(4' 31 | read(4, "A", 16384) = 1 32 ————————安装strace跟踪线程 结束———————— 33 """ 34 """ 35 ————————sshpass可以在命令行直接使用密码来进行远程连接和远程拉取文件 开始———————— 36 [root@localhost ~]# yum -y install sshpass 37 [root@localhost ~]# sshpass -p 123456 ssh -p 22 root@192.192.168.110 38 [root@localhost ~]# ip addr 39 ————————用python调用sshpass 开始———————— 40 [root@localhost ~]# python3 41 >>> import subprocess 42 >>> subprocess.run("sshpass -p 123456 ssh root@192.192.168.110 -o StrictHostKeyChecking=no",shell=True) 43 ————————另启一个会话查看———————— 44 [root@localhost ~]# ps -ef 45 UID PID PPID C STIME TTY TIME CMD 46 root 5147 5146 0 09:41 pts/8 00:00:00 ssh root@192.192.168.110 -o StrictHostKeyCh 47 [root@localhost ~]# sudo strace -fp 5147 -t -o eye.log 48 [root@localhost ~]# cat eye.log 49 ————获取进程号 开始———— 50 [root@localhost ~]# ps -ef | grep 'root@192.192.168.110' 51 [root@localhost ~]# ps -ef | grep 'root@192.192.168.110' | grep ssh 52 [root@localhost ~]# ps -ef | grep 'root@192.192.168.110' | grep ssh | grep -v sshpass 53 [root@localhost ~]# ps -ef | grep 'root@192.192.168.110' | grep ssh | grep -v sshpass | awk '{ print $2 }' 54 ————获取进程号 结束———— 55 ————————用python调用sshpass 结束———————— 56 ————————sshpass可以在命令行直接使用密码来进行远程连接和远程拉取文件 结束———————— 57 """ 58 """ 59 ————————获取进程号,唯一标识 开始———————— 60 [root@localhost ~]# python3 61 >>> import subprocess 62 >>> subprocess.run("sshpass -p 123456 ssh root@192.192.168.110 -E wybs123 -o StrictHostKeyChecking=no",shell=True) 63 ————————另启一个登陆会话———————— 64 [root@localhost ~]# python3 65 >>> import subprocess 66 >>> subprocess.run("sshpass -p 123456 ssh root@192.192.168.110 -E wybs456 -o StrictHostKeyChecking=no",shell=True) 67 ————————另启一个会话查看———————— 68 [root@localhost ~]# ps -ef | grep 'root@192.192.168.110' | grep ssh | grep -v sshpass | grep wybs123 | awk '{ print $2 }' 69 [root@localhost ~]# ps -ef | grep wybs123 | grep ssh | grep -v sshpass | awk '{ print $2 }' 70 ————————获取进程号,唯一标识 结束———————— 71 """ 72 """ 73 E:\堡垒机\eye\Fortress\backend\session_tracker.sh 复制到 CentOS-7 的 /home/ 目录下 74 ————————SH脚本测试 开始———————— 75 [root@localhost ~]# sh /home/session_tracker.sh 76 [root@localhost ~]# sh /home/session_tracker.sh wybs123 99 77 ————————SH脚本测试 结束———————— 78 ————————用python3测试SH脚本 开始———————— 79 [root@localhost ~]# python3 80 >>> import subprocess 81 >>> subprocess.run("sshpass -p 123456 ssh root@192.192.168.110 -E wybs123 -o StrictHostKeyChecking=no",shell=True) 82 ————————另启一个会话查看———————— 83 [root@localhost ~]# ps -ef | grep wybs123 | grep ssh | grep -v sshpass | awk '{ print $2 }' 84 [root@localhost ~]# sh /home/session_tracker.sh wybs123 99 85 ————————用python3测试SH脚本 结束———————— 86 """
1 #!/bin/bash 2 #session_tracker.sh 3 # ————————————————03堡垒机在Linux系统里记录会话日志 开始———————————————— 4 echo "-------- 启动会话(strace跟踪)记录 --------" 5 basepath=$(cd `dirname $0`; pwd) 6 echo "-- SH脚本当前目录的路径:$0 | 上级目录的路径: $basepath --" 7 #sh 动态路径/Fortress/backend/session_tracker.sh %s %s-- 8 echo "-- 唯一标识: $1 | 新的会话的ID:$2 --" 9 ssh_uuid=$1 10 session_obj_id=$2 11 12 #循环获取进程的ID,进行30次,每判断一次停止1秒 13 for i in $(seq 1 30);do 14 process_id=$(ps -ef |grep $ssh_uuid |grep ssh |grep -v sshpass |grep -v $0 |awk '{ print $2 }' ) 15 echo "搜/滤出进程号 |搜索 $ssh_uuid |搜索 ssh |过滤掉 sshpass |过滤掉 $0 |处理 { 打印 $2 } " 16 #|awk '{ print $2 }' | awk是行处理器--print是awk打印指定内容的主要命令" 17 18 echo "---- 开始判断是否获取到了,进程的ID: $process_id ----" 19 if [ ! -z $process_id ];then 20 echo "-- 已获取到进程ID,准备创建日志目录和文件!-- " 21 log_path=$basepath/log/`date +%F` 22 echo "-- 生成会话日志的路径: $log_path | 当天日期:`date +%F` -- " 23 mkdir -p $log_path 24 echo "-- 创建目录成功!-- " 25 26 #" -e trace=rean,write 表示只跟踪这2个 | -s 9999 输出长度 | -f 子进程 | -p 进程pid | -t时间 | -o写入文件" 27 sudo strace -e trace=read,write -s 9999 -f -p $process_id -t -o $log_path/session_$session_obj_id.txt 28 echo "-- strace跟踪监控:进程ID: $process_id | 路径: $log_path | 文件名-会话的ID: $session_obj_id -- " 29 echo "---退出循环---" 30 break; 31 fi; 32 #结束判断,停止1秒 33 sleep 1; 34 done; 35 # ————————————————03堡垒机在Linux系统里记录会话日志 结束————————————————
您的资助是我最大的动力!
金额随意,欢迎来赏!
如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的
因为,我的写作热情也离不开您的肯定支持,感谢您的阅读,我是【颜言】!