6 Linux与Bash课程 - 软件测试

article/2025/10/14 14:06:31

软件测试所有内容笔记正在陆续更新中,笔记已经在本地记录,全部为自己手动记录的笔记及总结,正在开始更新中,后续会逐步更新并完善到 软件测试学习内容总结 专栏。
本节内容:Linux与Bash课程进阶内容

文章目录

  • 1. Linux实战
    • 1.1 Linux 与 Shell 教程
    • 1.2 环境配置
      • 一键搭运行Web服务
  • 2. 三剑客实战Nginx日志分析
    • Linux三剑客 grep + awk + sed
    • Nginx 日志分析

1. Linux实战

大纲
常用软件 Linux 环境配置
比较常见的Linux使用场景

运维 主要做Linux服务端的运营


echo $PATH 查看可执行命令的路径
whereis Python 查看Python安装路径
echo $$ 查看当前通过bash启动的进程的id
echo $SHELL 查看shell类型
mac 的shell为 /bin/zsh
linux 的shell为 /bin/bash
UNIX 的shell为 /bin/sh


如果输入密码报错,将~/.ssh/下的known_hosts删除
rm -f ~/.ssh/known_hosts
w 命令可以暗处服务器上面有多少用户在登陆
w |grep xly3|awk '{print $1}'|sort|uniq |wc -l 查看登录服务器的用户中用户名包含xly3的用户的第一列内容,并进行排序去重,统计用户数量
使用 id查看当前登录的用户名
uname -a可以查看当前服务器使用的操作系统的信息


在这里插入图片描述

xargs将前面的命令拿过来在执行kill命令


1.1 Linux 与 Shell 教程

  • Linux 与Shell关系
  • 管道
  • 文件管理、文本处理、网络相关命令。
  • 文本排序、去重、统计。
  • Linux三剑客 grep、sed、awk
  • 性能相关命令。CPU,内存,硬盘,网络
  • Bash脚本,变量、条件判断,控制语句,参数传递
  • 网络请求curl
  • JSON数据解析jq

Linux

  • 部署测试环境(业务服务、Jira、Jenkins),查询数据库,查看日志(业务服务日志,系统日志) 定位问题(cat grep awk),执行Shell脚本
  • https://github.com/apache/tomcat/tree/master/bin

shell 种类

  • 常见shell:bash、sh、zsh
  • Window:git bash、cygwin
  • Mac:Terminal、iTerm2
  • 演练平台:shell.ceshiren.com、xly3890…

云服务器

  • 国内云服务商:
    • 阿里云、腾讯云、华为云
    • 推荐配置为2核4G服务器
  • 海外:
    • DigitalOccean、Linode
    • 最低价格每个月5$

推荐的Linux 与 Shell 环境

  • Linux:
    • CentOS:国内大部分的服务器都在使用,衍生自RedHat
    • Ubuntu:桌面系统、部分服务器系统在使用,基于Debian自由软件系统
  • Shell:Bash

1.2 环境配置

Shell 环境变量

  • export A=123 将变量导出到子进程 (在shell中直接使用bash进入子进程)
  • unset A 删除变量A

  • set 可以获得当前的所有变量
  • unset 可以释放变量
  • env 可以获得可以传递给子进程的变量
  • export aa=bbbb 把变量导出到子进程
     
  • 文件:~/.bash_profile ~/.bashrc, /etc/profile

环境变量常见问题

  • PATH变量在linux中更新后需要重启应用
  • 在Windows中更新PATH后如果不关闭所有的cmd进程也不会生效

开源镜像站

  • 华为:https://mirrors.huaweicloud.com/
  • 阿里云:https://developer.aliyun.com/mirror/
  • 清华大学开源软件镜像站:https://mirrors.tuna.tsinghua.edu.cn/
  • 中国科学技术大学开源软件镜像:https://mirrors.ustc.edu.cn/

Python 安装与入门文档

  • 下载:https://www.python.org/downloads/
  • 入门:https://docs.python.org/3/tutorial/index.html
  • https://mirrors.huaweicloud.com/python/
  • Python3已经成为行业标准,推荐使用Python3.x版本

切换多版本

  • vim ~/.bash_profile 修改环境变量
    • export PATH=$JAVA_HOME/bin:$PATH 添加环境变量
    • 将下载解压的 tar.gz 文件的路径配置到环境变量
  • echo $PATH -修改环境变量后重新加载环境变量
  • pyenv
    • https://github.com/pyenv
    • pyenv --version 查看pyenv版本
    • pyenv versions 查看安装的全部Python版本
    • pyenv install 3.7.1 安装指定的Python版本
    • source ~/.bash_profile 重新加载文件

  • PATH变量决定优先使用哪个Python
  • 把Python2与Python3安装到不同的目录,or pyenv 工具。

JAVA 安装

  • openjdk:https://openjdk.java.net/
  • oracle jdk:https://www.oracle.com/java/technologies/downloads/archive/
  • selenium
  • jenkins
  • jira

Node.js 安装

  • 使用./node --version 查看当前目录的 node 版本
  • node --version 查看系统环境的node版本
  • nvm 相当于pyenv,可以安装不同版本的node
    • nvm install 14.15.1 安装

  • Node.js:https://nodejs.org/zh-cn
  • npm:node的包管理工具
  • 配置镜像
  • appium

文件描述符

在这里插入图片描述

当前在线用户

  • w
    • w | awk '{print $1}' | sed 1,2d | sort | uniq -c | wc -l
    • 查看当前用户的用户名(第一列),并删除第一二行的内容,然后排序,去重(-c 去重并统计出现的次数),统计用户数(行数)

提取本机ip

  • ifconfig -a |grep inet |grep -v 127.0.0.1 |grep -v inet6 |awk '{print $2}'
  • 查看当前电脑服务器的网卡信息,显示包含inet的行,过滤掉包含127.0.0.1的行(-v 过滤指定的关键字),过滤掉包含inet6的行,显示第二列(ip地址)
  • en0 -10开的一般为局域网
  • lo -回环地址
  • eth0 第一个网卡

一键搭运行Web服务

  • python -m http.server 8000 命令行输入
    • usage: server.py [-h] [–cgi] [–bind ADDRESS] [–directory DIRECTORY] [port]
    • python -m http.server 8000 --bind 0.0.0.0
    • 在需要访问文件的路径下执行命令
    • -m 导入模块http,里面的方法server
  • 启动上述命令,通过本机的ip地址加上端口可以访问数据
  • 127.0.0.1:8000 本机访问
  • IP地址:8000 (192.168.11.161:8000) 其他电脑访问

  • python2 -m CGIHTTPServer 8000
  • python3 -m http.server -cgi 8000

提取对外连接的ip

  • netstat -tnp
    • t 显示协议 tcp
    • n 将域名转换为数字
    • p 显示后面的进程
      在这里插入图片描述
      在这里插入图片描述

-F 指定’:'分隔符分隔

关闭进程

  • ps
  • grep
  • awk
  • Xargs (xargs)
  • kill

ps -ef 显示正在运行的所有进程
在这里插入图片描述

xargs 拿到前面的命令
找到要关闭的进程关闭进程

场景
在这里插入图片描述
在这里插入图片描述

学习资源

  • 高级Bash脚本编程指南
  • LINUX与UNIX SHELL编程指南
  • 鸟哥的Linux私房菜
  • IBM DeveloperWorks
  • 官方文档
  • 阮一峰的《bash脚本教程》
  • Google
  • ceshiren.com

课后作业

  1. 根据输入的关键字来终止进程的运行?
  2. 查看当前开放的端口并根据进程来关闭使用这个端口的进程?

2. 三剑客实战Nginx日志分析

cat !$:重复上一次命令
比如:输入ls /proc/cpuinfo,
然后输入cat !$,就相当于输入了 cat /proc/cpuinfo
df -h 查看系统盘大小


课程价值
掌握shell的管道机制
掌握三剑客的实用用法

大纲
实战环境
nginx 日志解析


文件描述符

  • ls /dev/std*
  • 输入文件 — 标准输入0
  • 输出文件 — 标准输出1
  • 错误输出文件 — 标准错误2
  • :输出重定向

  • 2>:标准错误输出重定向
    • ps -qq 2> e.txt
  • <:输入重定向
    • read y < y.txt 将y.txt里面的第一行内容读取到y
    • (y.txt里面有内容’hello Word’)
  • 2>&1:标准错误输出 重定向到 标准输出
  • /dev/null:所有传给它的东西它都丢弃掉
    • 输出的结果不需要的时候可以输出到空设备
    • ps -qq 2> /dev/null
  • /dev/zero:输入设备,产生无限的空字符
    • cat /dev/zero >> zero.txt
      在这里插入图片描述

Shell输入输出

在这里插入图片描述

管道

  • 把不同程序的输入和输出连接
  • 可以连接更多命令
  • 常见的组合命令Linux三剑客
    在这里插入图片描述

在管道中使用变量

  • unset x:删除x
  • echo hello world |{ read x;echo $x; }
    • {}里内容的两边要有空格
  • echo hello world |while read x;do echo $x;done
    在这里插入图片描述

Linux三剑客 grep + awk + sed

grep

  • ping www.baidu.com |grep 4 --line-buffered |awk '{print $8}'
  • ping www.baidu.com |awk '/5/{print $0}' 遇到5会打印出来
  • ping www.baidu.com |awk '/5/{print $0;fflush()}' |grep 15
    • 如果awk命令在中间放着,后面还需要其他的三剑客的一些命令去做处理的话,要使用fflush()函数去做实时刷新
    • grep使用–line-buffered实时刷新

在这里插入图片描述
在这里插入图片描述

BRE基本正则表达式

  • ^ 开头 $结尾
  • [a-z] [0-9] 区间,如果开头带有 ^ 表示不能匹配区间内的元素
  • * 0个或多个
  • . 表示任意字符

ERE扩展正则表达式

grep -E -P sed -r -E awk
grep --help
ls /bin |wc -l Linux命令数量
在这里插入图片描述

awk

在这里插入图片描述
在这里插入图片描述

awk的字段数据处理
在这里插入图片描述

awk行处理

在这里插入图片描述
在这里插入图片描述

NR显示行号,并且自动变化
在这里插入图片描述

ORS 指定输出分隔符,将/n换为指定的分隔符
在这里插入图片描述

sed

在这里插入图片描述

sed ‘/root/d’ 删除包含root的行
sed -i .bak ‘’ 将源文件拷贝到源文件.bak的文件
-i做备份

cp /etc/passwd
sed -i.bak ‘/root/d’ passwd
源文件已修改,备份文件没变化
head -5 passwd passwd.bak
查看passwd passwd.bak两个文件的前5行

在这里插入图片描述
在这里插入图片描述

action

sed ‘s#()()#\1 \2#’ 几个括号后面就有几个反斜杠 s为搜索
在这里插入图片描述
分组为 扩展 中的表达式,默认sed使用默认表达式,小括号不生效,加-E

在这里插入图片描述

Nginx 日志分析

Nginx 日志分析

200:正常,400:客户端错误,500:服务端错误
cd /tmp 学院服务器的nginx日志在tmp下
ls |grep nginx.log
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

相关命令简介
在这里插入图片描述

日志数据检索

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

awk 擅长竖列的操作
在这里插入图片描述
在这里插入图片描述

日志数据统计

在这里插入图片描述

awk '{print $(NF-1)}' nginx.log 取出响应时间
统计首页的访问时间 -即有/的

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

找出访问量最高的页面地址
在这里插入图片描述


学习资源

  • 高级Bash脚本编程指南
  • LINUX与UNIX SHELL编程指南
  • 鸟哥的Linux私房菜
  • IBM DeveloperWorks
  • 阮一峰的《bash脚本教程》
  • Google

awk官方文档, mac下的awk与gawk并不一致,用法上有一定的差异。

定义函数
# 查看命令
type

awk字段枚举
awk 'NR==1{for(i=1;i<=NF;i++) {print i"="$i} }' nginx.log

课间作业

演练数据

把/tmp/nginx.log文件复制到自己的家目录下,用来演练

实战内容

  • 日志数据检索
    • find_error_log 找出log中的404 500的报错
    • find_before 找出500错误时候的上下文 考察grep高级用法
  • 日志数据统计
    • find_top_10 找出访问量最高的ip 统计分析
  • 数据文件修改
    • url_summary 找出访问量最高的页面地址 借助于sed的统计分析

find_error_log
编写一个函数 find_error_log()
找出log中的404 500的报错
回复的时候按照这个格式

find_error_log() {
}
url_summary(){}

find_before
找出500错误时候的上下文,找出500错误的前两行 考察grep高级用法,并把这个参数的描述信息贴上

find_before(){
}

find_top_3
找出访问量最高的ip, 统计分析,取出

top3find_top_3(){}

url_avg_time
找出 /topics 的平均响应时间,响应时间在倒数第二个字段

url_avg_time(){
#易读性好,易修改
awk '$7=="/topics"' nginx.log | awk '{print $(NF-1)}' | awk '{t+=$1}END{print t/NR }'
#高性能
awk '$7=="/topics"{total+=$(NF-1);count+=1}END{print total/count}'  nginx.log

课后作业 url_summary

找出访问量最高的页面地址 借助于sed的统计分析
/topics/16689/replies/124751/edit 把数字替换为 /topics/int/replies/int/edit
/_img/uploads/photo/2018/c54755ee-6bfd-489a-8a39-81a1d7551cbd.png!large 变成 /_img/uploads/photo/2018/id.png!large
/topics/9497 改成 /topics/int
其他规则参考如上
输出
url pattern对应的请求数量
取出top 20请求量的url pattern
类似
nnn urlxxx
mmm urlxxx
url_summary(){
}


http://chatgpt.dhexx.cn/article/VZiFo7uW.shtml

相关文章

5、C语言——前言(基础知识)

1、计算机的数据存储 计算机中的数据存储分为两大块&#xff1a;数值型数据和非数据型数据的存储 1.1、数值型数据的表示方法&#xff1a; 主要分为&#xff1a;二进制数据、十进制数据、八进制数据、十六进制数据。四种类型可以相互转化 1.1.1、二进制数据&#xff1a; 由…

Java常用框架笔记(1)

Linux操作系统 重点在于使用&#xff0c;理论可以几乎忽略 学习原因&#xff1a; 我们一般是在Windows上开发&#xff0c;Linux上去做部署 市面上的常见的操作系统 Windows系列&#xff0c;unix系统&#xff0c;Linux系统&#xff0c;mac系统 开发场景 Windows系列&…

Windows server 2008 被ntlmssp安装攻击 解决

进行NTLM策略控制&#xff0c;彻底阻止LM响应 转载于:https://www.cnblogs.com/xishi/p/6789246.html

Session Setup Request,NTLMSSP_AUTH, User:Dmain\hostname$

被拦截smb爆破&#xff0c;在主机上抓包&#xff0c;显示使用账号:Dmain\主机名$登录失败&#xff0c;但是"主机名$"这账号根本不存在&#xff0c;测试发现(测试文件不能为空)&#xff1a; 如果2台主机在不同域里(例如AA域和BB域&#xff0c;AA域和未加域的主机)&…

NTLM认证协议及SSPI的NTLM实现

转载自&#xff1a;https://www.cnblogs.com/shuidao/p/3634637.html 没错&#xff0c;NTLM就是你听说过的那个NTLM。是微软应用最广泛的认证协议之一。 NTLM是NT LAN Manager的缩写&#xff0c;这也说明了协议的来源。NTLM 是 Windows NT 早期版本的标准安全协议。Windows 20…

linux单独用户挂载,关于Linux上SAMBA服务的权限问题(多用户挂载)

简介&#xff1a;本文探讨关于Samba服务在客户端进行多用户挂载的问题,以及对cifscreds命令的使用效果. 安装配置&#xff1a; (服务器配置要求如下,配置过程在本博客中,本文省略配置过程) 要求 在客户端desktop0配置进行多用户挂载&#xff1a; 1.安装cifs-utils软件包以支持s…

centos7 samba

RHEL7配置samba:开机自动挂载以及多用户挂载 安装samba(centos 7/redhat 7提供的samba版本是samba 4) 开机启动 启动服务 查看监听端口(使用netstat或ss命令查看连接状态) 防火墙放行 然后我们看看配置文件 smb.conf 注意配置任何服务的时候,涉及到权限访问的配置都有一个…

Windows系统安全风险-本地NTLM重放提权

经我司安全部门研究分析&#xff0c;近期利用NTLM重放机制入侵Windows 系统事件增多&#xff0c;入侵者主要通过Potato程序攻击拥有SYSTEM权限的端口伪造网络身份认证过程&#xff0c;利用NTLM重放机制骗取SYSTEM身份令牌&#xff0c;最终取得系统权限&#xff0c;该安全风险微…

samba共享服务的部署及安全优化

TOC 1.samba服务简介 在构建主机时我们需要将主机系统的数据存储在存储服务器中&#xff08;如下图所示&#xff09;&#xff0c;这样用户在需要访问系统数据资源时&#xff0c;可以通过不同的终端主机访问存储服务器&#xff0c;避免因客户端主机瘫痪导致用户数据丢失&#x…

记录一次紫狐Rootkit应急响应过程

前言&#xff1a;​ ​ ​受保密协议影响&#xff0c;此次仅介绍发现过程、思路、以及该Rootkit行为&#xff0c;以便大家后续的参考&#xff0c;此文章篇幅较长&#xff0c;建议大家穿好纸尿裤观看&#xff01; ​ 紫狐&#xff08;Purple Fox&#xff09;Rootkit概述 紫狐…

基于AD Event日志检测哈希传递攻击

01、简介 哈希传递攻击是基于NTLM认证的一种攻击方式&#xff0c;当我们获得某个管理员用户的密码哈希值&#xff0c;就可以利用密码哈希值进行横向渗透。 在域环境中&#xff0c;只有域管理员的哈希值才能进行哈希传递攻击&#xff0c;攻击成功后&#xff0c;可以访问域内任何…

linux学习笔记-RH135(六):网络文件系统

网络文件系统 一.samba服务1.samba基本信息2.samba的安装与启用3.samba用户的建立4.samba用户访问家目录6.samba访问控制7.samba的常用配置参数8.samba多用户挂载9.samba自动挂载 二.NFS1.nfs的启用2.nfs配置3.nfs配置参数4.nfs自动挂载5.自动挂载参数更改挂载版本更改挂载超时…

工作组与域环境下NTLM协议数据包分析

NTLM协议由来 早起SMB协议以明文口令形式在网络上传输,存在安全问题为了解决这个问题出现了LM协议&#xff0c; 因为LM协议过于简单很容易被破解,于是微软又提出了NTLM协议,以及更新的NTLM第2版。 发展过程:SMB -> LM -> NTLM -> NTLM v2 NTLM的作用:用于工作组…

基于NTLM认证的中间人攻击(含实战)

文章目录 中间人攻击0x01 域和工作组0x02 NTLM认证(Windows)本地认证NTLM Hash的生成 网络认证工作组环境NTLM认证流程域环境NTLM认证 0x03 域名解析协议LLMNR解析过程 NetBIOSWindows系统域名解析顺序 0x04 WPAD工作原理WPAD劫持 0x05 NTLM中继0x06 Responder介绍 攻击演示0x0…

批次更新失败服务器返回的信息,服务器出现大批量登录审核失败/NtLmSsp攻击

问题&#xff1a;服务器出现大批量登录审核失败 详细信息&#xff1a;---重点红色标注 日志名称: Security 来源: Microsoft-Windows-Security-Auditing 日期: 2020/7/28 16:47:37 事件 ID: 4625 任务类别: 登录 级别: 信息 关键字: 审核失败 用户: 暂缺 计算机: VM82 描述: 帐…

NtLmSsp 登录爆破防御办法踩的坑-网络安全:LAN管理器身份验证级别设置还原

windows系统日志看到很多相同NtlmSsp报错 于是在找了一些解决方法&#xff0c;按照下面这张图设置踩了一些坑 按照图上设置2008系统没问题&#xff0c;2019系统远程桌面就怎么设置都连不上了。 暂时正确的解决办法&#xff1a; 1、实际操作折腾一番发现上面那个LAN可以不用设…

针对ntlmssp攻击的本机安全攻防记(第一回)

一、写在前面 这个问题说来也是恼火&#xff0c;切入正题之前先谈谈最近的一段狗血的经历&#xff0c;如果比较着急&#xff0c;就直接跳到第二部分吧&#xff01;&#xff01; 新去的一家政府支持的号称做互联网的单位&#xff08;据后来观察几个部门都是凑吧的&#xff09;。…

NtLmSsp 登录爆破防御办法 附修改RDP远程桌面3389端口方法

NtLmSsp 登录爆破防御办法 附修改RDP远程桌面3389端口方法 https://www.bnxb.com/winserver/27745.html 今天在系统日志中看到一堆尝试登录远程桌面失败的提示&#xff0c;内容类似下方 - EventData SubjectUserSid S-1-0-0 SubjectUserName - SubjectDomainName - Su…

java 打包exe_Java项目打包成exe的详细教程

Java项目打包成exe的详细教程 把Java项目打包成exe共分为以下两步&#xff1a; 1、 利用Eclipse先把Java项目先打成jar包 2、 利用exe4j工具把jar包转成exe 这里以Java项目(ExeDemo)为例进行讲解 随便在一个位置新建一个文件夹&#xff0c;文件夹的名称也可以随便起&#xff0c…

java项目如何打包?

导航 步骤 1 编写编译的脚本步骤 2 打包脚本步骤 3 jar包里面是什么 D盘下面的tool文件夹已经有三个工具类了&#xff08;其实是两个&#xff0c;CustNode是为了TuziLinkedList服务的&#xff09;&#xff0c;我们这一节来进行打包&#xff0c;这样的好处就是不用每次编译都把t…