当前位置: 首页 > news >正文

泷羽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中的用法很多

  1. -A 2 "eth0" 表示显示包括eth0所在行的后面2行
  2. -E使用正则表达式
  3. -o表示只显示匹配到的

正则表达式中很多

  1. ^a 表示以a开头的

  2. .* 贪婪匹配,就是匹配任何东西

  3. q$ 表示以q结尾

    grep -Eo "^a.*q$" 表示只显示以a开头,以q结尾的字段

  4. [1-9] 表示数字1-9的任意一个

  5. {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
  1. /inet / 这是匹配模式,当字段中有inet加空格时,定位到这里
  2. {print $2} 表示定位到inet这一行地方时,输出第二个字符,空格隔开为字符终止
  3. 所以这里的$1是inet,$2是inet后面的一段字符
  4. $1 == "inet"这个条件用于匹配输出中每行的第一个字段等于inet的情况
  5. !~不匹配
  6. $2!~ /:/这里是判断每行的第二个字段(也就是我们实际要获取的 IPv4 地址部分)不匹配包含:的正则表达式,以此来排除 IPv6 地址。
  7. -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系统中,两个命令可以重启计算机

  1. reboot
  2. 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脚本。
  • Typeoneshot表示这个服务只执行一次,执行完后就结束。这适用于像脚本这种只需要运行一次的情况,而不是像守护进程那样一直运行。

[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信号量的编程

一&#xff0c;用信号量来实现是父进程先进行&#xff0c;还是子进程先进性 信号量的没有P&#xff0c;V操作之前&#xff0c;我们不知道如何控制&#xff1a; #include <stdio.h> #include <sys/types.h> #include <sys/ipc.h> #include <sys/sem.h>…...

“Yaker,你可以全局配置插件环境变量!“

周四周四&#xff0c;Vme50(bushi 大家好&#xff0c;这里是疯狂超级牛&#xff08;功能上新版&#xff09; 经常有用户问 “牛牛如何为不同插件配置相同的变量值呢&#xff1f;” “能有一个一波搞定插件变量的方式就好了” 超级牛听到了广大用户的声音&#xff0c;默默地拿起…...

SAAS美容美发系统架构解析

随着技术的不断发展&#xff0c;SAAS&#xff08;Software as a Service&#xff0c;软件即服务&#xff09;模式在各个行业的应用逐渐深化&#xff0c;美容美发行业也不例外。传统的美容美发店面通常依赖纸质记录、手动操作和复杂的管理流程&#xff0c;而随着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文件&#xff0c;该文件会在连接之后自动生成&#xff0c;用于验证远程服务器的身份。 konwn_host和id_rsa&#xff0c;id_rsa.pub的关系 &#xff08;1&#xff09;konwn_host用于客户端验证远程服务…...

智慧防汛平台在城市生命线安全建设中的应用

随着城市化进程的加快&#xff0c;城市基础设施的复杂性和互联性不断增强&#xff0c;城市生命线的安全管理面临前所未有的挑战。智慧防汛平台作为城市生命线安全建设的重要组成部分&#xff0c;通过现代信息技术提升城市防汛应急管理的智能化水平&#xff0c;保障城市安全。 …...

python实现TCP Socket控制测试仪器

python实现TCP Socket控制测试仪器 说明前提条件代码 说明 本例是用python实现TCP Socket&#xff0c;最终目的是为了控制LCR电容测试仪器。 前提条件 测试仪器 配备了以太网接口&#xff0c;支持TCP/IP协议栈 用户可以通过IP地址和端口号连接到仪器&#xff0c;建立TCP通信…...

51c自动驾驶~合集38

我自己的原文哦~ https://blog.51cto.com/whaosoft/12358456 #GaussianPretrain 万能3D高斯预训练表示&#xff01;爆拉3D检测、Occ、高精地图等四大任务&#xff01; 受Tesla的技术的推动&#xff0c;越来越多的厂商开始走"纯视觉"的路线&#xff0c;多数方案还…...

电脑显示器拔插DVI线后副屏不显示

问题&#xff1a;台式机副屏显示器插拔DVI线后副屏无法检测到&#xff0c;不显示 其他现象&#xff1a;电脑设备管理器“显示适配器”中只有独显&#xff0c;未显示集显。 尝试方法&#xff1a; 1、 重新插拔并拧紧DVI线、更换DVI线、将DVI线替换为VGA线、调换DVI线及VGA线两…...

Bash脚本常用命令

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

《Unity Shader 入门精要》高级纹理

立方体纹理 图形学中&#xff0c;立方体纹理&#xff08;Cubemap&#xff09;是环境映射&#xff08;Environment Mapping&#xff09;的一种实现方法。环境映射可以模拟物体周围的环境&#xff0c;而使用了环境映射的物体可以看起来像镀了层金属一样反射出周围的环境。 对立…...

vue3实现自定义导航菜单

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

[2024年3月10日]第15届蓝桥杯青少组stema选拔赛C++中高级(第二子卷、编程题(2))

方法一&#xff08;string&#xff09;&#xff1a; #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…...

树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频

使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

遍历 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…...

Debian系统简介

目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版&#xff…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法&#xff1a;netstat [选项] 功能&#xff1a;查看网络状态 常用选项&#xff1a; n 拒绝显示别名&#…...

《通信之道——从微积分到 5G》读书总结

第1章 绪 论 1.1 这是一本什么样的书 通信技术&#xff0c;说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号&#xff08;调制&#xff09; 把信息从信号中抽取出来&am…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】

1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件&#xff08;System Property Definition File&#xff09;&#xff0c;用于声明和管理 Bluetooth 模块相…...

unix/linux,sudo,其发展历程详细时间线、由来、历史背景

sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...

IT供电系统绝缘监测及故障定位解决方案

随着新能源的快速发展&#xff0c;光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域&#xff0c;IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选&#xff0c;但在长期运行中&#xff0c;例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...