泷羽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系统中,两个命令可以重启计算机
rebootinit 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…...
UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...
CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...
java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别
UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...
django filter 统计数量 按属性去重
在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...
转转集团旗下首家二手多品类循环仓店“超级转转”开业
6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...
cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...
Web中间件--tomcat学习
Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机,它可以执行Java字节码。Java虚拟机是Java平台的一部分,Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...
Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?
Pod IP 的本质与特性 Pod IP 的定位 纯端点地址:Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址(如 10.244.1.2)无特殊名称:在 Kubernetes 中,它通常被称为 “Pod IP” 或 “容器 IP”生命周期:与 Pod …...
零知开源——STM32F103RBT6驱动 ICM20948 九轴传感器及 vofa + 上位机可视化教程
STM32F1 本教程使用零知标准板(STM32F103RBT6)通过I2C驱动ICM20948九轴传感器,实现姿态解算,并通过串口将数据实时发送至VOFA上位机进行3D可视化。代码基于开源库修改优化,适合嵌入式及物联网开发者。在基础驱动上新增…...
【Kafka】Kafka从入门到实战:构建高吞吐量分布式消息系统
Kafka从入门到实战:构建高吞吐量分布式消息系统 一、Kafka概述 Apache Kafka是一个分布式流处理平台,最初由LinkedIn开发,后成为Apache顶级项目。它被设计用于高吞吐量、低延迟的消息处理,能够处理来自多个生产者的海量数据,并将这些数据实时传递给消费者。 Kafka核心特…...
