shell脚本案例(一)

shell脚本案例(一):常见运维面试题 shell是运维人员应该具备的基本技能一,熟练掌握及运用shell,对提升运维作业效率与质量有很大帮助。在这里,将会结合工作中各种场景,利用shell脚本解决问题,完成目标。 实用案例(一) 监控MySQL主从同步是否异常,如果异常,则发送短信或者邮件给管理员。 a. 开发一个守护进程脚本每30秒实现检测一次。 b. 如果同步出现如下错误号(1158,1159,1008,1007,1... 阅读详情

1、写一个脚本,执行后,打印一行提示“Please input a number:",要求用户输入数值,然后打印出该数值,然后再次要求用户输入数值。直到用户输入"end"停止。

#!/bin/bash
while :
do
    read -p "Please input a number: " n
    if [ -z "$n" ]
    then
	echo "请输入一个纯数字."
	continue
    fi
    if echo $n |grep -qi 'end'
    then
	exit
    fi
    n1=`echo $n|sed 's/[0-9]//g'`
    if [ -n "$n1" ]
    then
	echo "请输入一个纯数字."
        continue
    else
	echo "你输入的数字是: $n"
        continue
    fi
done

2、请仔细查看如下几个数字的规律,并使用shell脚本输出后面的十个数字。
10 31 53 77 105 141 …….

#!/bin/bash
x=10
y=21
for i in `seq 0 15`
do 
    echo $x
    x=$[$x+$y]
    z=$[2**$i]
    y=$[$y+$z]
done

3、使用传参的方法写个脚本,实现加减乘除的功能。
例如: sh a.sh 1 2,这样会分别计算加、减、乘、除的结果。

要求:

  1. 脚本需判断提供的两个数字必须为整数
  2. 当做减法或者除法时,需要判断哪个数字大,减法时需要用大的数字减小的数字,除法时需要用大的数字除以小的数字,并且结果需要保留两个小数点。
 #! /bin/bash
if [[ $1 =~ ^[0-9] ]] && [[ $2 =~ ^[0-9] ]]
then
        a=`echo "scale=2;$1+$2" | bc`
        echo $a
        if [ $1 > $2 ]
        then
                b=`echo "scale=2;$1-$2" | bc`
                echo $b
        else
                b=`echo "sacle=2;$2-$1" | bc`
                echo $b
        fi
        c=`echo "scale=2;$1*$2" | bc`
        echo $c
        if [ $1 > $2 ]
        then
                d=`echo "scale=2;$1/$2" | bc`
                echo $d
        else
                d=`echo "scale=2;$2/$1" | bc`
                echo $d
        fi
else
        echo "请跟两个整数为参数"
fi

4、需求: 根据web服务器上的访问日志,把一些请求量非常高的ip给拒绝掉!并且每隔半小时把不再发起请求或者请求量很小的ip给解封。

假设:

(1). 一分钟内请求量高于100次的IP视为不正常请求。

(2). 访问日志路径为/data/logs/access_log。
(3). log文件内容如下:112.111.12.248 – [25/Sep/2013:16:08:31 +0800]formula-x.haotui.com “/seccode.php?update=0.5593110133088248″ 200″http://formula-x.haotui.com/registerbbs.php” “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;)”
61.147.76.51 – [25/Sep/2013:16:08:31 +0800]xyzdiy.5d6d.com “/attachment.php?aid=4554&k=9ce51e2c376bc861603c7689d97c04a1&t=1334564048&fid=9&sid=zgohwYoLZq2qPW233ZIRsJiUeu22XqE8f49jY9mouRSoE71″ 301″http://xyzdiy.5d6d.com/thread-1435-1-23.html” “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)”

#!/bin/bash
block_ip()
{
t1=`date -d "-1 min" +%Y:%H:%M`
log=/data/logs/access_log

egrep "$t1:[0-9]+" $log > /tmp/tmp_last_min.log
awk '{print $1}' /tmp/tmp_last_min.log |sort -n |uniq -c|sort -n |awk '$1>100 {print $2}' > /tmp/bad_ip.list 
n=`wc -l /tmp/bad_ip.list|awk '{print $1}'`
if [ $n -ne 0 ]
then
    for ip in `cat /tmp/bad_ip.list`
    do
	iptables -I INPUT -s $ip -j REJECT
    done
fi
}

unblock_ip()
{
    iptables -nvL INPUT|sed '1d' |awk '$1<5 {print $8}' > /tmp/good_ip.list
    n=`wc -l /tmp/good_ip.list|awk '{print $1}'`
    if [ $n -ne 0 ]
    then
    for ip in `cat /tmp/good_ip.list`
    do
	iptables -D INPUT -s $ip -j REJECT
    done
    fi
    iptables -Z
}

t=`date +%M`
if [ $t == "00" ] || [ $t == "30" ]
then
   unblock_ip
   block_ip
else
   block_ip
fi

5、写一个脚本: 计算100以内所有能被3整除的正整数的和

#!/bin/bash
sum=0
for i in `seq 1 100`
do
    j=$[$i%3]
    if [ $j -eq 0 ]
    then
	sum=$[$sum+$i]
    fi
done
echo $sum

6、在服务器上,写一个监控脚本,要求如下:

(1) 每隔10s去检测一次服务器上的httpd进程数,如果大于等于500的时候,就需要自动重启一下apache服务,并检测启动是否成功?

(2)若没有正常启动还需再一次启动,最大不成功数超过5次则需要立即发邮件通知管理员,并且以后不需要再检测!

(3)如果启动成功后,1分钟后再次检测httpd进程数,若正常则重复之前操作(每隔10s检测一次),若还是大于等于500,那放弃重启并需要发邮件给管理员,然后自动退出该脚本。假设其中发邮件脚本为之前使用的mail.py

#!/bin/bash
check_service()
{
    n=0
    for i in `seq 1 5`
    do
        /usr/local/apache2/bin/apachectl restart 2>/tmp/apache.err
        if [ $? -ne 0 ]
        then
            n=$[$n+1]
        else
            break
        fi
    done
    if [ $n -eq 5 ]
    then
        ##下面的mail.py参考https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D22Z/mail.py
        python mai.py "123@qq.com" "httpd service down" `cat /tmp/apache.err`
        exit
    fi
}   
while true
do
    t_n=`ps -C httpd --no-heading |wc -l`
    if [ $t_n -ge 500 ]
    then
        /usr/local/apache2/bin/apachectl restart
        if [ $? -ne 0 ]
        then
            check_service
        fi
        sleep 60
        t_n=`ps -C httpd --no-heading |wc -l`
        if [ $t_n -ge 500 ]
        then
            python mai.py "123@qq.com" "httpd service somth wrong" "the httpd process is busy."
            exit
        fi
    fi
    sleep 10
done

7、写一个支持选项的增加或删除用户的shell脚本,具体要求如下:
(1) 只支持三个选项:’–del’,’–add’,’–help’,输入其他选项报错。
(2) 使用’–add’时,需要验证用户名是否存在,存在则反馈存在,且不添加。 不存在则创建该用户,需要设置与该用户名相同的密码。
(3) 使用’–del’时,需要验证用户名是否存在,存在则删除用户及其家目录。不存在则反馈该用户不存在。
(4) --help选项反馈出使用方法。
(5) 能用echo $?检测脚本执行情况,成功删除或添加用户为0,不成功为非0正整数。
(6) 能以英文逗号分割,一次性添加或者删除多个用户。例如 adddel.sh --add user1,user2,user3

#!/bin/baash
if [ $# -eq 0 ] || [ $# -gt 2 ]
then
    echo "Wrong, use bash $0 --add username, or bash $0 --del username or bash $0 --help"
    exit
fi

ex_user()
{
    if ! id $1 2>/dev/null >/dev/null
    then
	useradd $1 && echo "$1 add successful."
    else
	echo $1 exist.
    fi
}

notex_user()
{
    if id $1 2>/dev/null >/dev/null
    then
	userdel $1 && echo "$1 delete successful."
    else
	echo $1 not exist.
    fi
}
	

case $1 in 
    --add)
	if [ $# -eq 1 ]
	then
	    echo "Wrong, use bash $0 --add user or bash	$0 --add user1,user2,user3..."
	    exit
	else
	    n=`echo $2| awk -F ',' '{print NF}'`
	    if [ $n -gt 1 ]
	    then
	        for i in `seq 1 $n`
		do
		    username=`echo $2 |awk -v j=$i -F ',' '{print $j}'`
		    ex_user $username
	        done
	    else
		ex_user $2
	    fi
	fi
	;;
    --del)
	if  [ $# -eq 1 ]
        then
            echo "Wrong, use bash $0 --del user or bash $0 --del user1,user2,user3..."
            exit
        else
            n=`echo $2| awk -F ',' '{print NF}'`
            if [ $n -gt 1 ]
            then
                for i in `seq 1 $n`
                do
                    username=`echo $2 |awk -v j=$i -F ',' '{print $j}'`
		    notex_user $username
                done
            else
		notex_user $2
            fi
        fi
        ;;
    --help)
        if  [ $# -ne 1 ]
        then
            echo "Wrong, use bash $0 --help"
            exit
        else

	echo "Use bash $0 --add username or bash $0 --add user1,user2,user3... add user."
	echo "    bash $0 --del username -r bash $0 --del user1,user2,user3... delete user."
	echo "    bash $0 --help print this info."
	fi
    ;;
    *)
	echo "Wrong, use bash $0 --add username, or bash $0 --del username or bash $0 --help"
    ;;
esac

8、添加user_00 – user_09 10个用户,并且给他们设置一个随机密码,密码要求10位包含大小写字母以及数字,注意需要把每个用户的密码记录到一个日志文件里。

提示:

(1)随机密码使用命令 mkpasswd

(2)在脚本中给用户设置密码,可以使用echo 然后管道passwd命令

#!/bin/bash
for i in `seq -w 00 09`
do
    useradd user_$i
    p=`mkpasswd -l 10 -s 0 `
    echo "user_$i $p" >> /tmp/pass.tmp
    echo $p |passwd --stdin user_$i
done

9、假设,当前MySQL服务的root密码为123456,写脚本检测MySQL服务是否正常(比如,可以正常进入mysql执行show processlist),

并检测一下当前的MySQL服务是主还是从,如果是从,请判断它的主从服务是否异常。如果是主,则不需要做什么。

#!/bin/bash
mysql="/usr/local/mysql/bin/mysql -uroot -p123456"
if ! $mysql -e "show processlist" >/dev/null 2>/dev/null 
then
    echo "MySQL service is down."
    exit
else
    $mysql -e "show slave status\G" 2>/dev/null >/tmp/slave.stat
    n=`wc -l /tmp/slave.stat|awk '{print $1}'`
    if [ $n -eq 0 ]
    then
	echo "This is master."
    else
	echo "This is slave."
	egrep 'Slave_IO_Running:|Slave_SQL_Running:'/tmp/slave.stat|awk -F ': ' '{print $2}' > /tmp/SQL.tmp
	if grep -qw "No" /tmp/SQL.tmp 
	then
	    echo "The slave is down."
	fi
    fi
fi

10、写一个脚本实现如下功能:
输入一个数字,然后运行对应的一个命令。

显示命令如下:

cmd meau* 1 - date 2 - ls 3 - who 4 - pwd
当输入1时,会运行date, 输入2时运行ls, 以此类推。

#!/bin/bash
echo "*cmd meau**  1 - date 2 - ls 3 - who 4 - pwd"
read -p "Please input a number: " n
if [ -z "$n" ]
then
    echo "请输入一个纯数字,范围1-4."
    exit
fi

n1=`echo $n|sed 's/[0-9]//g'`
if [ -n "$n1" ]
then
    echo "请输入一个纯数字,范围1-4."
    exit
fi

case $n in 
    1)
	date
	;;
    2)
	ls
	;;
    3)
	who
	;;
    4)
	pwd
	;;
    *)
	echo "请输入1-4的数字"
        ;;
esac

11、写一个脚本判断你的Linux服务器里是否开启web服务?(监听80端口)如果开启了,请判断出跑的是什么服务,是httpd呢还是nginx又或者是其他的什么

#!/bin/bash
n=`netstat -lntp |grep ':80 '|wc -l`
if [ $n -eq 0 ]
then
    echo "It not listen port 80"
else
    ser=`netstat -lntp |grep ':80 '|awk -F '/' '{print $NF}'|sed 's/ //g'`
    echo "It is listenning port 80, and the service is $ser."
fi

12、用shell打印下面这句话中字母数小于6的单词。
Bash also interprets a number of multi-character options.

#!/bin/bash
c="Bash also interprets a number of multi-character options."
n=`echo $c|awk -F '[ +-.]' '{print NF}'`
for ((i=1;i<$n;i++))
do
    l=`echo $c|awk -F '[ +-.]' -v j=$i '{print $j}'|wc -L`
    if [ $l -lt 6 ]
    then
        echo $c|awk -F '[ +-.]' -v j=$i '{print $j}'
    fi
done

13、一台机器负载高,top查看有很多sh的进程,然后top -c查看可以看到对应的进程命令是sh -c /bin/clearnen.sh 。经分析后发现是因为该脚本执行时间太长,导致后续执行时,上次的脚本还未执行结束。写一个脚本批量杀死所有sh的进程。

#!/bin/bash
for pid in `ps aux |grep clearnen.sh |awk '{print $2}'` 
do 
    echo $pid
    kill -9 $pid
done

14、把一个文本文档的前5行中包含字母的行删除掉,同时把6到10行中的全部字母删除掉。

#!/bin/bash
sed -n '1,5'p 1.txt |sed '/[a-zA-Z]/d'
sed '1,5d' 1.txt |sed '1,5s/[a-zA-Z]//g'

15、写一个脚本,检测你的网络流量,并记录到一个日志里。需要按照如下格式,并且一分钟统计一次(只需要统计外网网卡,假设网卡名字为eth0):
2017-08-04 01:11
eth0 input: 1000bps
eth0 output : 200000bps

2017-08-04 01:12
eth0 input: 1000bps
eth0 output : 200000bps
提示:使用sar -n DEV 1 59 这样可以统计一分钟的平均网卡流量,只需要最后面的平均值。另外,注意换算一下,1Byte=8bit

#!/bin/bash
logdir=/tmp/sar_log
file=$logdir/`date +%d%H`.log
t=`date +"%F %H:%M"`

[ -d $logdir ] || mkdir -p $logdir
LANG=en
sar -n DEV 1 5 |grep eth0 |grep "Average" > /tmp/sar.tmp

exec >>$file
echo "$t" 
awk '{print "eth0 input:",$5*8000"bps""\n""eth0 output:",$6*8000"bps"}' /tmp/sar.tmp 
echo "#### ###################" 
4、I3C协议详解 I3C最初的设计目的是为移动设备创建一个能够使用多个传感器的单一接口。随着现代化移动设备对于传感器数量的增加以及对性能的提高,I2C和SPI已经达到了他们所能支持的临界点,而I3C的出现就是为了解决这一问题,I3C可以在同一根主线上支持更多的传感器设备,而且不会因为要支持中断或睡眠模式而增加额外的逻辑信号。I3C可以在更低功耗的情况下提供更快的传输速率,该特性的提升不止是对移动设备,对其他的嵌入式设备也都是很大的帮助。例如穿戴设备,需要在有限的物理空间中使用多个传感器并且要求更小的耗电。 一、简述.. 阅读详情

相关推荐

【PyTorch版本兼容性指南】如何在不同版本中正确使用torch.nn.attention

本文详细解析了PyTorch版本兼容性问题,特别是torch.nn.attention模块在不同版本中的使用差异。针对常见的ModuleNotFoundError错误,提供了三种实用解决方案:升级PyTorch版本、使用自定义实现和源码移植方案,并分享了最佳实践建议,帮助开发者有效避免兼容性问题。

weixin_29084231的博客 471

shell编程--输入输出

shell 编程

Ghost_199503的博客 6210

黑猫带你学eMMC协议第1篇:全网最全emmc协议中文详讲,这份学习框架图,你值得拥有!!!(持续更新中...)

黑猫带你学eMMC协议第7篇:全网最全emmc写保护详解(write protect) 黑猫带你学eMMC协议第8篇:emmc可靠写详解(Write Reliability) 黑猫带你学eMMC协议第9篇:emmc的分区配置(partitioning) 黑猫带你学eMMC协议第10篇:eMMC命令队列详解(CMDQ) 黑猫带你学eMMC协议第11篇:eMMC擦除详解(erase/trim/discard/sanitize/secure erase/secure trim…) 黑猫带你学eMMC协议第12篇:

黑猫奥利奥的博客 2万+

(五)Shell编程之条件结构、循环结构

select in 是 Shell 独有的一种循环,非常适合终端(Terminal)这样的交互场景,C语言、C++、Java、Python、C#等其他编程语言中是没有的。注意,select是无限循环(死循环),输入空值,或者输入的值无效,都不会结束循环,只有遇到break语句,或者按下Ctrl+D组合键才能结束循环。select in 循环用来增强交互性,它可以显示出带编号的菜单,用户输入不同的编号就可以选择不同的菜单,并执行不同的功能。用户只有输入正确的编号才会结束循环,如果输入错误,会要求重新输入。

Sean_0819的博客 557

电子凸轮追剪算法深度解析:2500字图解+代码实战

工艺需求:在物料连续运动过程中完成精准切割核心矛盾:切割瞬间刀具与物料必须绝对同步传统方案:机械凸轮(结构复杂,调整困难)现代方案:电子凸轮(柔性可调,精度更高)

QQ_778132974的博客 1107

《网络摄像机实战⑦:嵌入式端AWS KVS IoT SDK 库编译与测试全流程-君正/瑞芯微/全志(超详细指南)》

本文介绍了AWS音视频和物联网解决方案的核心组件与集成方法。主要内容包括:1)Amazon Kinesis Video Streams(KVS)提供的WebRTC托管服务,支持实时音视频流传输与双向交互;2)AWS IoT云服务实现设备连接与集成;3)详细说明了KVS WebRTC库的编译过程,包括源代码下载、CMake配置和依赖库生成;4)KVS Producer库的集成方法,重点阐述了存储空间调整和mbedtls版本适配等关键修改点。文章为开发者提供了AWS音视频和物联网服务的技术实现指南,特别针对嵌入

lvj_158的专栏 109

Shell编程之循环语句

【代码】Shell编程之循环语句。

Yuzhang2046的博客 1737

8、 使用TPM密钥:从理论到实践的全面指南

本文全面介绍了如何使用TPM(可信平台模块)进行密钥管理,涵盖密钥的创建、存储、加载、迁移以及特殊密钥类型的使用。通过详细的操作步骤和代码示例,帮助读者掌握TPM密钥管理技术,确保系统的安全性和可靠性。

weixin_36212459的博客 242

linux shell打印数字,shell脚本-打印数字

写一个shell脚本。提示你输入一个暂停的数字,然后从1打印到该数字。然后询问是否继续。继续的话在输入个在数字接着打印。不继续退出。例:如果输入的是5,打印1 2 3 4 5 然后继续 输入15 然后打印 6 7 ...14 15 依此类推。#!/bin/bash#Printing numbers#Written by Adairead -p "Please input a number as t...

weixin_32029863的博客 1422

RK3588 部署 YOLO26 目标检测:PT → ONNX → RKNN 全流程

YOLO26n 在 RK3588 上 INT8 量化后 NPU 推理约 15ms,系统 FPS 约 55,可以覆盖边缘端实时检测需求。模型从 PT 到 RKNN 的转换要用opset=11避免算子兼容问题。先用 YOLO26n + 640 输入跑通全链路,确认推理结果正确后再做性能调优。

m0_64661770的博客 303

金融领域必备:Python爬虫+AI量化分析,爬取股票数据并实现智能交易策略

本文通过Python爬虫+AI量化分析的组合,实现了从股票数据爬取到智能交易策略的全流程。免费获取全维度金融数据(行情、财务、舆情),替代付费终端;用LSTM模型捕捉股价的时间序列规律,提升预测精度;基于Backtrader实现策略回测与优化,保证策略的有效性。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1371

shell脚本中一些特殊符号

在shell中常用的特殊符号罗列如下: # ;   ;; . , / \\ 'string'| !   $   ${}   $? $$   $* \"string\"* **   ? : ^ $#   $@ `command`{}   [] [[]] ()   (()) ||   &amp;&amp; {xx,yy,zz,...}~   ~+   ~-   &amp;   \\&lt;...\\&...

weixin_34235105的博客 1402

【Proteus仿真】基于AT89C51单片机的单片机双向通信

本文介绍了基于AT89C51单片机实现双向通信的系统设计。系统采用MAX232芯片实现TTL与RS-232电平转换,通过CONN-D9F接口建立串行通信连接。甲机程序通过按键控制发送不同指令字符,同时接收乙机数据驱动数码管显示;乙机程序根据接收指令控制LED显示状态,并可发送0-10数字至甲机。文中详细说明了MAX232电平转换原理、DB9接口定义,以及完整的单片机控制程序代码,包括串口初始化、数据收发处理等关键功能实现,为嵌入式系统串口通信开发提供了实用参考方案。

XU157303764的博客 1094

shell脚本30个案例(一)

通过一个多月的shell学习,总共写出30个案例,分批次进行发布,这次总共发布了5个案例,希望能够对大家的学习和使用有所帮助,更多案例会在下一次进行发布。

2401_82737195的博客 1598

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

linux shell脚本案例一

1.编写shell脚本内容: bsh1.sh文件 #!/bin/bash echo "hello,ljf" echo "what is your name?" read p echo "my name is ${p}" 2.执行脚本 chmod +x ./bsh1.sh sh ./bsh1.sh 或者 ./bsh1.sh 3.执行结果: [jurf@ljf-cento

健康平安的活着的专栏 411

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

shell脚本之循环(脚本练习案例一)

分析及个人理解:这是for循环+if判断脚本,主要就是验证你的密码的正确性,如果输入的密码相符就会输出“密码正确”,如输错三遍会输出“先生/女生你好:密码错误"这个脚本就是if嵌套for里面。执行结果如上。此脚本也是简单的case脚本,根据输入数字对其输出结果,此表中最要关注的还是两位数的另一种表达方式,执行结果如下:这个脚本主要是以case来判断的,对输入的数字及字符进行判断,输入不同的数字,字母或者特殊符号均会有提示,执行结果如下:简单的if判断脚本,增加用户名及密码,执行结果如下:此脚本为while循

隐藏角落的光 898

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Linux Shell 脚本经典案例(一)

编写Shell过程中注意事项 1 开头加解释器:#!/bin/bash 2 语法缩进,使用四个空格,多加注释说明 3 命名建议规则:变量名大写,局部变量小写,函数名小写,名字体现出实际作用。 4 默认变量是全局的,在函数中变量local指定为局部变量,避免污染其他作用域。 5 调试脚本命令:set -e 遇到执行非0时,退出脚本,set -x 打印执行过程。 6 写脚本一定先到测试环境,再到生产环...

林长有的博客 972

常见的Shell脚本编写案例(一)

常见的 Shell脚本编写 注意事项 1)开头加解释器:#!/bin/bash 2)语法缩进,使用四个空格;多加注释说明。 3)命名建议规则:变量名大写、局部变量小写,函数名小写,名字体现出实际作用。 4)默认变量是全局的,在函数中变量local指定为局部变量,避免污染其他作用域。 5)有两个命令能帮助我调试脚本:set -e 遇到执行非0时退出脚本,set-x 打印执行过程。 6)写脚本一定先测试再到生产上。 文章目录常见的 Shell脚本编写注意事项1.1 获取随机字符串或数字1.2 定义一个颜色输出字

LPFAM的博客 738

Shell脚本10大实战案例速学一

摘要:本文包含10个Shell脚本基础案例,涵盖变量定义、用户输入、条件判断、循环结构、命令行参数处理、文件判断和路径获取等核心知识点。案例包括输出字符串和日期、变量拼接、用户输入处理、数值计算、条件分支判断、for和while循环使用、参数传递、文件存在性检查及脚本路径获取等实用场景。每个案例配有简洁解析,说明关键语法如$((运算))、[条件判断]、-gt/-f等操作符用法,并附有思考题扩展学习内容,适合Shell脚本入门学习参考。

qq_45008722的博客 581

shell脚本应用(一)案例

案例一·为root用户编写登录欢迎脚本,报告当前主机中的进程数、已登录用户数、根文件系统的磁盘使用率。1.用vim命令在/root目录是新建一个脚本文件welcome.sh,内容如下:注意:'{print $5}' 这里使用的是单引号,不是反撇号。2.使用chmod命令给welcome.sh文件增加执行(x)权限3.修改/root/.bash_profile文件,在root用...

weixin_33788244的博客 344

shell脚本应用(一)重定向,变量案例

查看当前系统所支持的shell脚本种类 写一个脚本,切换到/boot目录下查看当前的目录下其中以vml开头的文件包括什么 添加执行权限 运行该脚本 使用source命令 使用./运行 使用sh运行 将当前主机的CPU类型信息保存到kernel.txt文件中,而不是直接显示到屏幕上 将内核版本信息追加到kernel.txt文件中 使用passwd命令为用户设置密码时省略交互式的过程,自动完成密码设置 将使用tar命令进行备份时出现的错误信息保存.

weixin_45014003的博客 667

【Shell 脚本速成】03、Shell 脚本实战案例(一)数据磁盘初始化

Shell 脚本实战案例(一)数据磁盘初始化

GG Bond 的博客 596

shell脚本案例(一)批量创建用户

案例需求用shell脚本批量建立Linux用户实现要求:创建用户student1到student50,指定组为student组!而且每个用户需要设定一个不同的密码! 实现脚本 #!/bin/bash grep 'student' /etc/group &gt;/dev/null 2&gt;/dev/null [ $? -eq 0 ] || groupadd student &gt;/dev/nul...

运维少年 1597

Linux评估脚本,Linux Shell脚本测试案例(一)

脚本1:为root用户编写登录欢迎脚本:1、用vi命令在/root目录是新建一个脚本文件welcome.sh,内容如下:2、使用chmod命令给welcome.sh文件增加执行(x)权限3、修改/root/.bash_profile文件,在root用户每次登录系统时调用welcome.sh脚本程序#vi /root/.bash_profile添加如下内容:4、验证:使用root用户重新登录,验证欢...

weixin_39986466的博客 116

Linux Shell脚本测试案例(一)

脚本1:为root用户编写登录欢迎脚本: 1、用vi命令在/root目录是新建一个脚本文件welcome.sh,内容如下: 2、使用chmod命令给welcome.sh文件增加执行(x)权限 3、修改/root/.bash_profile文件,在root用户每次登录系统时调用welcome.sh脚本程序 #vi /root/.bash_profile添...

weixin_34380296的博客 442

实战篇--常见的Shell脚本编写案例(一)

常见的 Shell脚本编写案例(一) 注意事项 1)开头加解释器:#!/bin/bash 2)语法缩进,使用四个空格;多加注释说明。 3)命名建议规则:变量名大写、局部变量小写,函数名小写,名字体现出实际作用。 4)默认变量是全局的,在函数中变量local指定为局部变量,避免污染其他作用域。 5)有两个命令能帮助我调试脚本:set -e 遇到执行非0时退出脚本,set-x 打印执行过程。 6)写脚本一定先测试再到生产上。 文章目录常见的 Shell脚本编写案例(一)1.1 获取随机字符串或数字1.2 定义一

weixin_47153988的博客 894
上一篇: 私有云技术——keystone服务、glance服务
下一篇: shell脚本案例(二)
别散
博客等级 码龄6年 21粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值