Shell脚本练习——系统应用相关

显示系统信息

[root@wenzi data]#cat systemInfo.sh 
#/bin/bash
RED="\E[1;31m"
GREEN="\E[1;32m"
END="\E[0m"
echo -e  "$GREEN----------------------Host systeminfo--------------------$END"
echo -e  "HOSTNAME:     $RED`hostname`$END"
echo -e  "IPADDR:       $RED`ifconfig ens160 | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' | head -n 1`$END"
echo -e  "OSVERSION:    $RED`cat /etc/redhat-release`$END"
echo -e  "KERNEL:       $RED`uname -r`$END"
echo -e  "CPU:         $RED`lscpu | grep 'Model name'| tr -s ' ' | cut -d : -f 2`$END"
echo -e  "MEMORY:       $RED`free -h | grep 'Mem' | tr -s ' ' : | cut -d ':' -f 2`$END"
echo -e  "DISK:         $RED`lsblk | grep '^nv' | tr -s ' ' | cut -d " " -f 4`$END"
echo -e  "$GREEN---------------------------------------------------------$END"

说明:

grep -E 开启拓展正则表达式,-o 仅显示匹配到的数据

([0-9]{1,3}\.){3}[0-9]{1,3}中[0-9]{1,3}表示1到3位数字,{3}表示重复3次,所以整体就是匹配IP地址

tr -s 对指定的字符串去重复

cut 使用对象是一行信息,-d 指定分割字符,-f 依据-d的分割字符将一段信息分为数段,用-f取出第几段

^nv 指以nv开头

批量创建用户并设置随机密码

[root@wenzi data]#cat batchCreateUser.sh 
#!/bin/bash
userNum=$1for ((i=1;i<=${userNum};i+=1))
douseradd wenzi$ipwd=`cat /dev/urandom | tr -d -c '[:alnum:]' | head -c 12`echo $pwd | passwd --stdin wenzi$i &> /dev/nullecho wenzi$i:$pwd >> /data/user.logecho "wenzi$i is created"
done
[root@wenzi data]#bash batchCreateUser.sh 5
wenzi1 is created
wenzi2 is created
wenzi3 is created
wenzi4 is created
wenzi5 is created
[root@wenzi data]#cat /data/user.log 
wenzi1:aBfx6xKXXWXd
wenzi2:zeiXcSdeECga
wenzi3:XXWhxovUy9o1
wenzi4:mk6wF4gqQxbP
wenzi5:YvcHWo6UYQcP#删除生成的用户
[root@wenzi data]#for i in {1..5};do userdel -r wenzi$i;done

说明:

/dev/urandom是随机数生成器

[:alnum:] 代表英文大小写字符及数字,即 0-9,A-Z,a-z

tr的-d选项:删除信息中指定内容;-c选项:使用指定字符串的补集替换该字符串;所以tr删除的是非'[:alnum:]'的内容

执行远程主机的脚本

#主机192.168.29.142
[root@wenzi ~]#yum -y install httpd
[root@wenzi ~]#vim /var/www/html/hello.sh
#!/bin/bash
echo "hello world"
[root@wenzi ~]#systemctl start httpd#主机192.168.29.141
[root@wenzi data]#curl http://192.168.29.142/hello.sh | bash% Total    % Received % Xferd  Average Speed   Time    Time     Time  CurrentDload  Upload   Total   Spent    Left  Speed
100    31  100    31    0     0  31000      0 --:--:-- --:--:-- --:--:-- 31000
hello world
[root@wenzi data]#curl -s http://192.168.29.142/hello.sh | bash
hello world

rm命令的安全实现

[root@wenzi data]#vim rm.sh 
#!/bin/bash
warning_color="echo -e \E[1;31m"
end="\E[0m"
dir=/tmp/`date +%F%T`
mkdir $dir
mv $* $dir
${warning_color}Move $* to $dir $end
[root@wenzi data]#chmod 777 /data/rm.sh 
[root@wenzi data]#alias rm='/data/rm.sh'
[root@wenzi data]#touch {1..3}.txt
[root@wenzi data]#ll
total 4
-rw-r--r-- 1 root root   0 Jul 22 10:43 1.txt
-rw-r--r-- 1 root root   0 Jul 22 10:43 2.txt
-rw-r--r-- 1 root root   0 Jul 22 10:43 3.txt
-rw-r--r-- 1 root root 138 Jul 22 10:42 rm.sh
[root@wenzi data]#rm *.txt
Move 1.txt 2.txt 3.txt to /tmp/2023-07-2210:45:20 

说明:

$*:位置变量,代表除了$0(脚本本身名字)以外,所有的参数,如上即 “opt1 opt2 opt3 opt4“,每个变量之间用空格分割,共用一个双引号

检查软件包是否安装

[root@wenzi wenzi]# cat test.sh
#!/bin/bash
pkg=$1
rpm -q $1 > /dev/null
if [ $? -eq 0  ];thenecho "$1 is already installed."
elseecho "$1 is not installed!"
fi[root@wenzi wenzi]# ./test.sh httpd
httpd is already installed.
[root@wenzi wenzi]# ./test.sh nginx
nginx is not installed!

检查服务状态

[root@wenzi wenzi]# cat test.sh
#!/bin/bash
if pgrep $1 > /dev/null;thenecho "$1 is running"
elseecho "$1 is not running"
fi[root@wenzi wenzi]# ./test.sh httpd
httpd is running
[root@wenzi wenzi]# ./test.sh nginx
nginx is not running

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/65858.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Glide的使用及源码分析

前言 依赖 implementation com.github.bumptech.glide:glide:4.16.0 github: GitHub - bumptech/glide: An image loading and caching library for Android focused on smooth scrolling 基本使用 //加载url Glide.with(this) .load(url) .placeholder(R.drawable.placehol…

读word模板批量生成制式文件

文章目录 1、Maven依赖2、.docx或.doc格式的word模板准备3、读word模板&#xff0c;批量替换代码域&#xff0c;生成文件&#xff0c;demo4、结果展示 1、Maven依赖 <dependency><groupId>fr.opensagres.xdocreport</groupId><artifactId>fr.opensagre…

nnUNet v2数据准备及格式转换 (二)

如果你曾经使用过nnUNet V1&#xff0c;那你一定明白数据集的命名是有严格要求的&#xff0c;必须按照特定的格式来进行命名才能正常使用。 这一节的学习需要有数据&#xff0c;如果你有自己的数据&#xff0c;可以拿自己的数据来实验&#xff0c;如果没有&#xff0c;可以用十…

两个pdf文件合并为一个怎么操作?分享pdf合并操作步骤

不管是初入职场的小白&#xff0c;还是久经职场的高手&#xff0c;都必须深入了解pdf&#xff0c;特别是关于pdf的各种操作&#xff0c;如编辑、合并、压缩等操作&#xff0c;其中合并是这么多操作里面必需懂的技能之一&#xff0c;但是很多人还是不知道两个pdf文件合并为一个怎…

ChatGPT⼊门到精通(4):ChatGPT 为何⽜逼

⼀、通⽤型AI 在我们原始的幻想⾥&#xff0c;AI是基于对海量数据的学习&#xff0c;锻炼出⼀个⽆所不知⽆所不能的模 型&#xff0c;并借助计算机的优势&#xff08;计算速度、并发可能&#xff09;等碾压⼈类。 但我们⽬前的AI&#xff0c;不管是AlphaGo还是图像识别算法&am…

解决Debian系统通过cifs挂载smb后,中文目录乱码问题

解决Debian系统通过cifs挂载smb后&#xff0c;中文目录乱码问题 //$smb_server/share /mnt/nas_share cifs credentials/root/.smbcredentials,iocharsetutf8 0 0默认通过以上命令挂载smb&#xff0c;但是在查看文件目录时&#xff0c;中文乱码 解决问题方式&#xff1a; de…

MR混合现实汽车维修情景实训教学演示

MR混合现实技术应用于汽车维修课堂中&#xff0c;能够赋予学生更加真实&#xff0c;逼真地学习环境&#xff0c;让学生在情景体验中不断提高自己的专业能力。 MR混合现实汽车维修情景实训教学演示具体体现在&#xff1a; 1. 虚拟维修指导&#xff1a;利用MR技术&#xff0c;可…

企业架构LNMP学习笔记9

nginx配置文件定义php-fpm服务&#xff1a; 编写测试文件&#xff1a; vim /usr/local/nginx/html/index.php 内容&#xff1a; <?phpphpinfo(); 在nginx的配置文件中配置&#xff1a; 修改配置文件&#xff0c;告知nginx如果收到.php结尾的请求&#xff0c;交由给php-…

【数据结构篇】线性表1 --- 顺序表、链表 (万字详解!!)

前言&#xff1a;这篇博客我们重点讲 线性表中的顺序表、链表 线性表&#xff08;linear list&#xff09;是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构&#xff0c;常见的线性表&#xff1a;顺序表、链表、栈、队列... 线性表在逻辑上是…

mac软件安装后打开软件显示损坏

#mac传输安装包后安装后打开软件显示损坏处理方式 以postman为例&#xff0c;输入前面的代码&#xff0c;打开访达&#xff0c;把有问题的软件拉到命令行窗口&#xff0c;确认即可 sudo xattr -r -d com.apple.quarantine /Applications/Postman.app sudo xattr -r -d com.ap…

如何中mac上安装多版本python并配置PATH

摘要 mac 默认安装的python是 python3&#xff0c;但是如果我们需要其他python版本时&#xff0c;该怎么办呢&#xff1f; 例如&#xff1a;需要python2 版本&#xff0c;如果使用homebrew安装会提示没有python2。同时使用python --version 会发现commond not found。 所以本…

MySQL中表的设计

在MySQL中表的设计&#xff0c;需要一定的经验才能理解&#xff0c;由于笔者目前在读中&#xff0c;理解不是很深刻&#xff0c;仅根据自己的想法外界的一些参考资料做出下述文字描述&#xff0c;一些错误&#xff0c;请大佬及时指正~~ 在本篇文章中&#xff0c;介绍一点简单粗…

RocketMQ(消息中间件)

目录 一、为什么会出现消息中间件&#xff1f; 二、消息中间件是干嘛的&#xff1f; 三、应用解耦 四、流量削峰 五、异步处理 1.串行方式&#xff1a; 2.并行方式&#xff1a; 3.引入消息队列&#xff1a; 六、RocketMQ的架构及概念 一、为什么会出现消息中间件&#…

小程序快速备案助手代备案小程序开发

小程序快速备案助手代备案小程序开发 用户注册与登录&#xff1a;用户可以通过手机号或其他方式进行注册和登录&#xff0c;以便进行备案相关操作。备案信息填写&#xff1a;用户可以填写小程序的备案信息&#xff0c;包括小程序名称、小程序服务类目、域名等。备案材料上传&a…

Python钢筋混凝土结构计算.pdf-混凝土构件计算

计算原理&#xff1a; 代码实现&#xff1a; #钢筋混凝土参数 def c_hrb(): global fcuk,HRB,Ec,fc,ft,ftk,Es,fy,fyp,fyk global a1,epsilon_cu fcukEcfcftftk0.0 HRBEsfyfypfyk0.0 #矩形应力图系数a1&#xff0c;C50以下为1.0 a11.0 #正截面混凝土极限压应变epsilon_cu&#…

使用element-ui中的el-table回显已选中数据时toggleRowSelection报错

最近在写一个后台&#xff0c;需要在表格中多选&#xff0c;然后点击编辑按钮的时候&#xff0c;需要回显已经选中的表单项 <el-table v-loading"loading" :data"discountList" :row-key"(row) > row.id" refmultipleTable selection-cha…

Wireshark流量分析例题

1.题目要求&#xff1a; 1.黑客攻击的第一个受害主机的网卡IP地址 2.黑客对URL的哪一个参数实施了SQL注入 3.第一个受害主机网站数据库的表前缀&#xff08;加上下划线例如abc&#xff09; 4.第一个受害主机网站数据库的名字 看到题目SQL注入&#xff0c;那就首先过滤http…

智能化新十年,“全栈智能”定义行业“Copilot智能助手”

“智能化转型是未来十年中国企业穿越经济周期的利器”&#xff0c;这是联想集团执行副总裁兼中国区总裁刘军在去年联想创新科技大会上做出的判断&#xff0c;而2023年正值第四次工业革命第二个十年的开端&#xff0c;智能化是第四次工业革命的主题。2023年初&#xff0c;基于谷…

垃圾回收 - 引用计数法

GC原本是一种“释放怎么都无法被引用的对象的机制”。那么人们自然而然就会想到&#xff0c;可以让所有对象事先记录下“有多少程序引用了自己”。让各对象知道自己的“人气指数”&#xff0c;从而让没有人气的对象自己消失&#xff0c;这就是引用计数法。 1、计数器 计数器表…

personalized image enhancement 调研

Personalized Image Enhancement Using Neural Spline Color Transforms 这是TIP期刊 2020年的一篇论文&#xff0c;首先提出了一个能预测曲线的网络&#xff0c;预测一些锚点&#xff0c;根据锚点插值出连续的曲线&#xff0c;然后用曲线对raw image进行retouching。然后提出了…