使用脚本可以提高工作效率、减少人为错误、简化复杂操作、增加系统自动化管理能力等,是 Linux 系统管理和开发中非常重要的工具之一。
1.常见指令
-
变量操作:
=
:赋值操作符,用于给变量赋值。$
:变量引用符号,用于获取变量的值。export
:将变量导出为环境变量,使其在脚本和子进程中可用。
-
条件语句:
if
:用于执行条件判断,并根据不同条件执行不同的代码块。else
:与if
配合使用,在条件不满足时执行的代码块。elif
:用于添加额外的条件判断分支。
-
循环结构:
for
:用于遍历列表或指定范围的数值,并执行相应的操作。while
:在给定条件为真时重复执行一段代码块。
-
函数:
function
:定义一个函数。return
:从函数中返回值。call
:调用函数。
-
文件操作:
ls
:列出文件和目录列表。cd
:改变当前工作目录。cp
:复制文件或目录。mv
:移动文件或目录。rm
:删除文件或目录。touch
:创建空文件或更新文件的访问和修改时间。
-
输入输出:
echo
:打印文本到标准输出。read
:从标准输入读取用户输入。>
:重定向标准输出到文件,会覆盖文件内容。>>
:重定向标准输出到文件,追加到文件末尾。<
:重定向标准输入从文件中读取。
-
命令执行:
`command`
或$(command)
:执行命令并将其输出作为字符串。
-
条件判断:
-eq
、-ne
、-lt
、-gt
、-le
、-ge
:用于数值比较的运算符。-e
、-f
、-d
、-r
、-w
、-x
:用于测试文件属性的运算符。
-
其他:
sleep
:暂停脚本执行一段时间。exit
:退出脚本,并返回一个退出状态码。
2.CMake自动编译脚本
set -x
rm -rf `pwd`/build/*
cd `pwd`/build &&cmake .. &&make
-
set -x
:- 这是一个 shell 脚本的调试选项,它会打开脚本的调试模式,使得在终端上显示每个命令在执行之前先打印出来。
-
rm -rf
pwd/build/*
:- 这个命令会删除当前目录下 build 文件夹内的所有文件和子文件夹。
pwd
表示获取当前目录的路径。
-
cd
pwd/build
:- 这个命令会进入当前目录下的 build 文件夹。
-
cmake ..
:- 这个命令会在 build 文件夹内执行 CMake 命令,使用上一级目录(即当前目录)中的 CMakeLists.txt 文件来配置项目的构建。
-
make
:- 这个命令会在 build 文件夹内执行 make 命令,编译项目生成可执行文件或库文件。
3.虚拟机网络报文重放
# 源IP和MAC地址
SRCIP=192.168.137.1
SRCMAC=00:0c:29:9a:a8:12# 目标IP和MAC地址
DSTIP=192.168.137.100
DSTMAC=90:df:7d:dc:43:f9# 为重放的test.pcap创建缓存
# tcpprep -a client -i test.pcap -o test.cache
tcpprep -a client -i $1 -o test.cache # 重写目标IP和Mac地址
# tcprewrite --infile test.pcap --outfile test_1.pcap --dstipmap=0.0.0.0/0:$DSTIP --enet-dmac=$DSTMAC
tcprewrite --infile $1 --outfile test_1.pcap --dstipmap=0.0.0.0/0:$DSTIP --enet-dmac=$DSTMAC# 重写源IP和Mac地址
tcprewrite --infile test_1.pcap --outfile test_2.pcap --srcipmap=0.0.0.0/0:$SRCIP --enet-smac=$SRCMAC# 更新数据包校验和
tcprewrite --infile test_2.pcap --outfile testFinal.pcap --fixcsum# 重放包
sudo tcpreplay -v -i ens33 -x 1 testFinal.pcap