Linux系统之编写简单shell脚本(1)

Shell简介:

Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。

Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。 

运行shell脚本方法:

1、作为可执行程序

将上面的代码保存为 test.sh,并 cd 到相应目录

chmod +x ./test.sh    #使脚本具有执行权限
./test.sh     #执行脚本

注意,一定要写成 ./test.sh,而不是 test.sh,运行其它二进制的程序也一样,直接写 test.sh,linux 系统会去 PATH 里寻找有没有叫 test.sh 的,而只有 /bin, /sbin, /usr/bin,/usr/sbin 等在 PATH 里,你的当前目录通常不在 PATH 里,所以写成 test.sh 是会找不到命令的,要用 ./test.sh 告诉系统说,就在当前目录找。

2、作为解释器参数

这种运行方式是,直接运行解释器,其参数就是 shell 脚本的文件名

/bin/sh test.sh
/bin/php test.php

这种方式运行的脚本,不需要在第一行指定解释器信息,写了也没用。

'#!' 就是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell。

Linux系统之编写简单shell脚本(2) 

1、编写网卡设置脚本:

  • 固定网卡设置脚本
#!/bin/bash    
#这是一个用于设置网卡IP地址的脚本!

#设置网卡信息
ETH=$(ifconfig | grep "^eth" | awk '{print $1}')
MAC=$(ifconfig | grep "^eth" | awk '{print $5}')
IP="192.168.2.130"
MASK="255.255.255.0"
GW="192.168.2.2"
M_DNS="114.114.114.114"
S_DNS="8.8.8.8"

#生成网卡配置文件
echo "DEVICE=$ETH" >> /etc/sysconfig/network-scripts/ifcfg-$ETH
echo "HWADDR=$MAC" >> /etc/sysconfig/network-scripts/ifcfg-$ETH
echo "TYPE=Ethernet" >> /etc/sysconfig/network-scripts/ifcfg-$ETH
echo "ONBOT=yes" >> /etc/sysconfig/network-scripts/ifcfg-$ETH
echo "BOOTPROTO=static" >> /etc/sysconfig/network-scripts/ifcfg-$ETH
echo "IPADDR=$IP" >> /etc/sysconfig/network-scripts/ifcfg-$ETH
echo "NETMASK=$MASK" >> /etc/sysconfig/network-scripts/ifcfg-$ETH
echo "GATEWAY=$GW" >> /etc/sysconfig/network-scripts/ifcfg-$ETH
echo "DNS1=$M_DNS" >> /etc/sysconfig/network-scripts/ifcfg-$ETH
echo "DNS2=$S_DNS" >> /etc/sysconfig/network-scripts/ifcfg-$ETH

#启动网卡服务
ifdown $ETH
ifup $ETH
service network restart

执行结果:

  •  自定义网卡设置脚本
#!/bin/bash
#这是一个用于设置网卡IP地址的脚本!

#获取网卡的设备名称
ETH=$(ifconfig | grep "^eth" | awk '{print $1}')

#获取网卡的MAC地址信息
MAC=$(ifconfig | grep "^eth" | awk '{print $5}')

read -p "请输入网卡IP地址:" IP
read -p "请输入子网掩码:" MASK
read -p "请输入网关地址:" GW
read -p "请输入首选DNS地址:" DNS1
read -p "请输入备用DNS地址:" DNS2

echo "DEVICE=$ETH
HWADDR=$MAC
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=$IP
NETMASK=$MASK
GATEWAY=$GW
DNS1=$DNS1
DNS2=$DNS2" > /etc/sysconfig/network-scripts/ifcfg-$ETH

#启动网卡服务
service network restart

执行结果:

 

 2、监测磁盘剩余空间(根分区),低于20%,发出报警信息(通过屏幕输出警告信息)

#!/bin/bash
#监测磁盘剩余空间(根分区)脚本

# 获取磁盘空间值
occupy=$(df -hT | grep "/$" | awk '{ print $6 }' | cut -d "%" -f 1)

# 如果占用比大于80%,则报警输出警告文本 
if [ "$occupy" -ge "80" ]
then 
 echo "sda3 is full"
else
 echo "空间充足!" 
fi

执行结果:

3、判断某服务是否开启

#!/bin/bash

read -p "请输入要检测的服务:" SERVICE
netstat -anpt | grep $SERVICE &> /dev/null

if [ $? -eq 0 ]
then
  	echo "$SERVICE服务已经启动!"
else
  	rpm -q $SERVICE &> /dev/null

	if [ $? -eq 0 ]
	then
	    	service  $SERVICE  start
	else
	    	echo "未安装$SERVICE服务!"
	fi

fi

执行结果: 

 

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值