泷羽sec---shell作业
作业一 写计算器
使用bc命令
需要进行安装bc
代码如下:
#!/bin/bash
echo "-----------------------------------"
echo "输入 f 退出"
echo "可计算小数和整数"
echo "用法如:1.1+2.2"
echo "-----------------------------------"
while true; doread -p "请输入需要计算的表达式: " expressionif [ "$expression" == "f" ]; thenbreakfiresult=$(echo "$expression" | bc)echo "您输入的值是: $result"
done
使用(())
#!/bin/bash
echo "---------------------------------"
echo "输入 f 退出"
echo "运算符前后请以空格隔开"
echo "用法如:1 + 2"
echo "---------------------------------"
while true
doread -p "请输入需要计算的表达式: " expressionif [ "$expression" == "f" ]; thenbreakfiresult=$(($expression))echo "您输入的值是: $result"done
或者这里还可以使用case
对接收的运算符进行判断,然后在每个分支进行对应的操作即可
作业二 阶乘
#/bin/bash
echo "-------------------------------"
echo "输入 f 退出"
echo "计算阶乘"
echo "-------------------------------"summerize(){result=$(($1 * result))
}
while true
doread -p "请输入一个数字: " numif [ "$num" == "f" ];thenbreakfiif [ "$num" == "0" ];thenecho "阶乘为0"breakfiresult=1for ((;num>0;num--))dosummerize numdoneecho "阶乘为: $result"
done
扩展一 获取eth0网卡IP
使用grep
#!/bin/bashfor i in $(seq 0 10)
doresult=$(ip addr show eth$i 2>/dev/null | grep -Eo "inet [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/[0-9]{1,2}"|grep -Eo "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/[0-9]{1,2}")if [ -n "$result" ];thenecho "eth$i的IP是:$result"fi
done
ip addr show eth0表示只显示网卡eth0的信息
grep中的用法很多
-A 2 "eth0"
表示显示包括eth0所在行的后面2行-E
使用正则表达式-o
表示只显示匹配到的
正则表达式中很多
-
^a
表示以a开头的 -
.*
贪婪匹配,就是匹配任何东西 -
q$
表示以q结尾grep -Eo "^a.*q$"
表示只显示以a开头,以q结尾的字段 -
[1-9]
表示数字1-9的任意一个 -
{1,3}
表示匹配范围,长度[1-9]{1,3}
表示匹配1-9中的任意一个数字,数字范围在1-3
使用awk
#!/bin/bash
for i in $(seq 0 10)
doresult=$(ip addr show eth$i 2>/dev/null | awk '$1 == "inet" && $2 !~ /:/ {print $2}')if [ -n "$result" ];thenecho "eth$i的IP是:$result"fi
done
/inet /
这是匹配模式,当字段中有inet加空格时,定位到这里{print $2}
表示定位到inet这一行地方时,输出第二个字符,空格隔开为字符终止- 所以这里的$1是inet,$2是inet后面的一段字符
$1 == "inet"
这个条件用于匹配输出中每行的第一个字段等于inet的情况!~
不匹配$2!~ /:/
这里是判断每行的第二个字段(也就是我们实际要获取的 IPv4 地址部分)不匹配包含:的正则表达式,以此来排除 IPv6 地址。-F'/'
表示分割,这里是以/进行分割字符,如果有的话。
若是多分割,可以采用数组形式-F'[,/]'
扩展二 设置定时任务
使用crontab
crontab -e
进入定时任务的编写
在其中的下面已经给出提示,时间顺序是分钟(m) 、小时(h)、天(dom)、月(m)、星期(dow)、命令(command)
crontab -l
查看当前定时任务
这里是把网卡ethn
系列的IP信息输出到文本中
使用at
at
命令一般可能没安装,需要先进行安装
at
命令比较灵活,可以使用now + 2 minutes -f [脚本]
表示现在开始两分钟后执行脚本,还可以设置
at 12:00 tommory
表示明天12点执行
at 8am+3 days
表示三天后的早上8点执行
等等
还可以与EOF
联合使用,EOF
算是标识符,可以使得命令不止一行,甚至可以在里面执行多条命令,开头EOF
,结尾EOF
中间就是前面命令执行的,所以好用,推荐
扩展三 无限重启
首先了解重启的命令,在linux
系统中,两个命令可以重启计算机
reboot
init 6
知道重启命令后,就可以直接在一个脚本中编写,使得重启
其次,需要知道自启动目录在哪,或者文件在哪
可以试想一下,平常在启动某项服务的时候,使用的systemctl
命令,以及这个命令可以实现服务的开机启动。不过就是需要高权限才能使用该命令。
那么该命令是通过哪些文件来让这些服务启动的呢
/etc/systemd/system/
目录,这个目录是系统服务单元文件的存放位置。所以可以在这个文件中编写。
可以查看这个目录下的文件
基本上是以.service
为结尾,这是一种服务,查看文件
以下面简单的框架描述
[Unit]
Description=IP Script Service
After=network.target[Service]
ExecStart=/bin/bash /home/kali/test/ip.sh
Type=oneshot[Install]
WantedBy=multi - user.target
[Unit]
部分
Description
:这是对服务的一个简单描述,用于在查看服务信息时能够识别服务的用途。After
:指定在哪个系统目标(target
)之后启动这个服务。在这里,network.target
表示在网络相关的服务启动之后再启动这个服务,因为你的脚本可能依赖于网络连接(例如获取 IP 地址相关的操作)。
[Service]
部分
ExecStart
:定义了服务启动时要执行的命令,这里是执行/bin/bash /home/kali/test/ip.sh
脚本。Type
:oneshot
表示这个服务只执行一次,执行完后就结束。这适用于像脚本这种只需要运行一次的情况,而不是像守护进程那样一直运行。
[Install]
部分
WantedBy
:指定这个服务应该被哪个系统目标所依赖。multi - user.target
是一个常见的目标,它表示在多用户模式下启动这个服务。
在/etc/systemd/system
目录下创建一个re.service
文件,并编写内容
[Unit]
Description=reboot[Service]
ExecStart=/bin/bash /home/kali/test/re.sh
Type=oneshot[Install]
WantedBy=multi-user.target
然后使用systemctl enable [服务名]
来使得服务开机自启动
这时候输入systemctl start re.service
会直接进行重启
这时候计算机到这个界面就会重启,根本到不了登录界面
相关文章:

泷羽sec---shell作业
作业一 写计算器 使用bc命令 需要进行安装bc 代码如下: #!/bin/bash echo "-----------------------------------" echo "输入 f 退出" echo "可计算小数和整数" echo "用法如:1.12.2" echo "------…...

华为海思2025届校招笔试面试经验分享
目前如果秋招还没有offer的同学,可以赶紧投递下面这些公司,都在补招。争取大家年前就把后端offer拿下。如果大家在准备秋招补录取过程中有任何问题,都可以私信小编,免费提供帮助。如果还有部分准备备战春招的同学,也可…...

摆脱复杂配置!使用MusicGPT部署你的私人AI音乐生成环境
文章目录 前言1. 本地部署2. 使用方法介绍3. 内网穿透工具下载安装4. 配置公网地址5. 配置固定公网地址 前言 今天给大家分享一个超酷的技能:如何在你的Windows电脑上快速部署一款文字生成音乐的AI创作服务——MusicGPT,并且通过cpolar内网穿透工具&…...
嵌入式Linux中的GPIO编程
GPIO(General Purpose Input Output)是嵌入式系统中非常常见的一种硬件资源,它允许开发者直接控制微处理器或微控制器的引脚。通过设置这些引脚的状态,可以实现对硬件设备的控制,如LED灯的开关、传感器数据的读取等。 …...

js:函数
函数 函数:实现抽取封装,执行特定任务的代码块,方便复用 声明 函数命名规范 尽量小驼峰 前缀应该为动词,如getName、hasName 函数的调用 函数体是函数的构成部分 函数传参 参数列表里的参数叫形参,实际上写的数据叫实…...

低代码平台审批流程设计
审批流程设计 在此界面设置审批单从发起、到审批、再到结束的流转步骤。 6.1 添加节点 点击两个节点间连线的 图标可添加 审批人、抄送人、办理人、条件分支。 6.2 节点类型 提交节点 点击提交节点,可在右侧弹窗中设置提交节点的抄送人,实现审批在发…...
OpenCV相机标定与3D重建(8)相机标定函数calibrateCamera()的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 从校准图案的多个视图中找到相机的内参和外参参数. cv::calibrateCamera 是 OpenCV 中用于相机标定的一个非常重要的函数。它通过一系列已知的世…...
Linux信号量的编程
一,用信号量来实现是父进程先进行,还是子进程先进性 信号量的没有P,V操作之前,我们不知道如何控制: #include <stdio.h> #include <sys/types.h> #include <sys/ipc.h> #include <sys/sem.h>…...

“Yaker,你可以全局配置插件环境变量!“
周四周四,Vme50(bushi 大家好,这里是疯狂超级牛(功能上新版) 经常有用户问 “牛牛如何为不同插件配置相同的变量值呢?” “能有一个一波搞定插件变量的方式就好了” 超级牛听到了广大用户的声音,默默地拿起…...

SAAS美容美发系统架构解析
随着技术的不断发展,SAAS(Software as a Service,软件即服务)模式在各个行业的应用逐渐深化,美容美发行业也不例外。传统的美容美发店面通常依赖纸质记录、手动操作和复杂的管理流程,而随着SAAS平台的出现&…...

如何为 ext2/ext3/ext4 文件系统的 /dev/centos/root 增加 800G 空间
如何为 ext2/ext3/ext4 文件系统的 /dev/centos/root 增加 800G 空间 一、引言二、检查当前磁盘和分区状态1. 使用 `df` 命令检查磁盘使用情况2. 使用 `lsblk` 命令查看分区结构3. 使用 `fdisk` 或 `parted` 命令查看详细的分区信息三、扩展逻辑卷(如果使用 LVM)1. 检查 LVM …...
vscode远程连接ssh
一. 使用vscode里的ssh查件连不上远程的解决方法 删除Windows上的known_host文件,该文件会在连接之后自动生成,用于验证远程服务器的身份。 konwn_host和id_rsa,id_rsa.pub的关系 (1)konwn_host用于客户端验证远程服务…...

智慧防汛平台在城市生命线安全建设中的应用
随着城市化进程的加快,城市基础设施的复杂性和互联性不断增强,城市生命线的安全管理面临前所未有的挑战。智慧防汛平台作为城市生命线安全建设的重要组成部分,通过现代信息技术提升城市防汛应急管理的智能化水平,保障城市安全。 …...
python实现TCP Socket控制测试仪器
python实现TCP Socket控制测试仪器 说明前提条件代码 说明 本例是用python实现TCP Socket,最终目的是为了控制LCR电容测试仪器。 前提条件 测试仪器 配备了以太网接口,支持TCP/IP协议栈 用户可以通过IP地址和端口号连接到仪器,建立TCP通信…...

51c自动驾驶~合集38
我自己的原文哦~ https://blog.51cto.com/whaosoft/12358456 #GaussianPretrain 万能3D高斯预训练表示!爆拉3D检测、Occ、高精地图等四大任务! 受Tesla的技术的推动,越来越多的厂商开始走"纯视觉"的路线,多数方案还…...
电脑显示器拔插DVI线后副屏不显示
问题:台式机副屏显示器插拔DVI线后副屏无法检测到,不显示 其他现象:电脑设备管理器“显示适配器”中只有独显,未显示集显。 尝试方法: 1、 重新插拔并拧紧DVI线、更换DVI线、将DVI线替换为VGA线、调换DVI线及VGA线两…...

Bash脚本常用命令
1.Bash常用快捷键 2.通配符 3.Bash其他特殊符号 4.位置参数 5.预定义变量 6.常用变量比较 7.基础正则表达式 8.文件类型判断 9.文件权限判断 10.整数比较命令 11.字符串判断 其他常用参考: https://zhuanlan.zhihu.com/p/748857250...

《Unity Shader 入门精要》高级纹理
立方体纹理 图形学中,立方体纹理(Cubemap)是环境映射(Environment Mapping)的一种实现方法。环境映射可以模拟物体周围的环境,而使用了环境映射的物体可以看起来像镀了层金属一样反射出周围的环境。 对立…...

vue3实现自定义导航菜单
一、创建项目 1. 打开HBuilder X 图1 2. 新建一个空项目 文件->新建->项目->uni-app 填写项目名称:vue3demo 选择项目存放目录:D:/HBuilderProjects 一定要注意vue的版本,当前选择的版本为vue3 图2 点击“创建”之后进入项目界面 图…...

[2024年3月10日]第15届蓝桥杯青少组stema选拔赛C++中高级(第二子卷、编程题(2))
方法一(string): #include <iostream> #include <string> using namespace std;// 检查是否为回文数 bool isPalindrome(int n) {string str to_string(n);int left 0, right str.size() - 1;while (left < right) {if (s…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...

51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...

遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...

论文笔记——相干体技术在裂缝预测中的应用研究
目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...
【Go语言基础【12】】指针:声明、取地址、解引用
文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...

Rust 开发环境搭建
环境搭建 1、开发工具RustRover 或者vs code 2、Cygwin64 安装 https://cygwin.com/install.html 在工具终端执行: rustup toolchain install stable-x86_64-pc-windows-gnu rustup default stable-x86_64-pc-windows-gnu 2、Hello World fn main() { println…...