《shell脚本编写——常⽤例⼦》
⽬录
1. 书写脚本,批量添加⽤户
1.新增脚本user.sh
2.通过交互获取需要创建的⽤户数量
3.批量添加⽤户
4.要求添加⽤户前判断⽤户是否存在,存在的话则跳过,否则增加该⽤户
5.使⽤“⽤户名_123”作为⽤户的密码
6.⽤户增加成功显⽰“⽤户增加成功”
7.⽤户添加失败提⽰“⽤户添加失败”
8.提取新增⽤户的⽤户名,保存在/root/user_name⽂件中
在脚本的最后将所有新增的⽤户名进⾏显⽰
vim a.sh
#!/bin/bash
name="user"
read -p "通过交互获取需要创建的⽤户数量:" num
for i in `seq $num`
do
id-u $name$i &>/dev/null 2&>1-----2>&1的意思就是将标准错误重定向到标准输出。这⾥标准输出已经重定向到了/dev/null。那么标准错误也会输出到/ dev/null
if[ $? -eq 0]; then
echo "⽤户已存在,跳过"
else
echo "⽤户不存在,现在开始创建。。。"
useradd $name$i;echo "$name$i_123"|passwd --stdin $name$i
id-u $name$i &>/dev/null
if[ $? -eq 0]; then
echo "⽤户创建成功"
else
echo "⽤户创建失败"
fi
echo $name$i >>/root/user_name
echo "显⽰所有新增⽤户"
cat /root/user_name
fi
done
chmod +x a.sh
2. 根据要求判断⽂件类型
1.通过交互判断⽂件类型
2.提⽰⽤户输⼊⼀个⽂件的绝对路径
3.将⽤户输⼊的内容保存在⼀个file_name变量中
4.判断输⼊的路径所代表的⽂件是否存在)
5.如果不存在则显⽰“⽂件名⽂件不存在”的信息
6.如果存在,则判断是否为普通⽂件,是则显⽰“⽂件名是普通⽂件”
7.如果不是普通⽂件,再判断是否为⽬录,是则显⽰“⽂件名是⽬录”
8.如果不是⽬录,再判断是否为链接⽂件,是则显⽰“⽂件名是链接⽂件”
如果以上都不是,则显⽰“⽂件名是其他⽂件类型”
vim b.sh
#!/bin/bash
while:
do
read -p "提⽰⽤户输⼊⼀个⽂件的绝对路径:" path
if[-e $path ]; then
echo "⽂件存在"
if[-L $path ]; then
echo "$path是链接⽂件"
elif[-f $path ]; then
echo "$path是普通⽂件"
elif[-d $path  ]; then
echo "$path是⽬录⽂件"
else
echo "$path是其他⽂件"
fi
else
echo "⽂件不存在"
fi
done
chmod +x b.sh
3. 根据要求搜集服务器系统信息
1.显⽰出主机名
2.将主机名保存在host_name变量中
3.提取操作系统的ip地址
4.将提取的ip地址保存在host_ip变量中
5.提取出⽹卡的MAC地址
6.将提取的MAC保存在host_mac中
7.提取出系统的⼦⽹掩码
将提取的⼦⽹掩码保存在host_mask变量中
vim c.sh
#!/bin/bash
case $1in
1)
hostname_name=$(hostname)
echo "主机名:${hostname_name}"
;;
2)
host_ip=$(ifconfig eth0|awk '/Mask/ {print $2}'|awk -F ':''{print $2}')
echo "ip地址:${host_ip}"
;
;
3)
host_mask=$(ifconfig eth0|awk '/Mask/ {print $4}'|awk -F ':''{print $2}')                echo "⼦⽹掩码:${host_mask}"
;;
4)
host_mac=$(ifconfig eth0|awk '/HWaddr/ {print $5}')
echo "MAC地址:${host_mac}"
;;
esac
chmod +x c.sh
4. 检测磁盘使⽤率
要求: 对Linux系统进⾏判断,centos6的系统执⾏lv6.sh , centos7的系统执⾏lv7.sh,脚本中需要判断当前使⽤率,如果IP服务器磁盘正常1.能够写出检测系统版本号的脚本2.能够截取到本机ip 3.能够截取到当前服务器的磁盘使⽤率4.能够读取⽂件中的ip,并判断对应ip的使⽤率是否⼤于90%5.⼤于百分之90的服务器正确发送邮件成功(需要提前测试是否能够正常发邮件)
6.不⼤于90%的ip服务器的磁盘,提⽰ $IP磁盘正常。
5. 检测url 是否正常
判断⼀个⽹站的状态码,并截取状态码,判断状态码是否为200url为对应的⽹址,测试可以使⽤www.baidu. 异常⽹址可以⽤www.linuxpm 1.使⽤函数2.可以截取到访问⽹站的状态码3.判断状态码是否为200
4.若状态码不为200,则发邮件提醒
code
对监测⽹站地址是否存活
#!/bin/bash
url="192.168.194.130/index.html"
http_code=$(curl -Is  -o /dev /null -w %{http_code } $url )
check_code (){
if  [ $http_code  -eq  200 ]; then
echo  "$url  存活"
else
echo  "$url  站点不可访问"
fi
}
check_code
6.
防⽌⽂件被误删除的脚本
使⽤脚本删除⼀个⽂件,⾸先判断⽂件是否存在,如果存在则提⽰是否真要删除,⽤户输⼊y|n, 若确定要删除,则安装rsync并测试rsync是否安装成功, 若成功则使⽤rsync备份⽂件,备份成功后使⽤再开始删除数据,删除完成后提⽰,若想恢复数据,可以到备份路径恢复。
ip 服务器⼤于90url 异常,状态码为:
1.判断要删除的⽂件是否存在,不存在则创建
2.确认是否删除⽂件,若删除输⼊Y,不删除输⼊N
3.在⽤户输⼊Y或者N的时候,实现不区分⼤⼩写都可以成功,即:Y,y均可
4.使⽤脚本正确安装rsync并启动
5.能够判断rsync是否安装成功
6.Rsync备份成功
7.再次提⽰是否删除数据,若删除输⼊Y,不删除输⼊y
8.若确定删除,使⽤rm 删除⽂件
9.删除完成后,提⽰要想恢复可以进⼊备份路径,并列出备份路径
shell最简单脚本10.脚本写完后,完整的截图放在本⼩题下,本题是⼀个脚本,不要拆分成多个脚本。
#!/bin/bash
while :
do
read -p "请输⼊您想要删除的⽂件:<<" file
echo"您想要删除的⽂件是:$file"
read -p "确认要删除吗?(Y/N)"  cmd1
case $cmd1 in
Y|y)
if[-e $file]; then
count=$(rpm -qa |grep rsync|wc -l)
if[$count-ne 0 ]; then
echo"rsync 已经安装了"
else
yum -y install rsync
fi
netstat  -lptnu|grep 873
if[ $? -eq 0 ]; then
echo"rsync service 已经运⾏了"
else
systemctl start rsyncd
fi
#开始备份⽂件
backup_dir="/usr/local/src/backup"
[-d ${backup_dir}]|| mkdir ${backup_dir}
#开始执⾏备份操作:
rsync -av /root/a ${backup_dir}
echo"input Y:delete!"
echo"input y:no delete!"
read -p "您是否真的真的要删我?(Y|y):<<" cmd2                                case $cmd2 in
Y)
echo"start 删除⽂件:$file"
rm-rf  $file
echo"⽂件恢复路径:${backup_dir}"
;;
y)
echo"no delete"
exit
;
;
esac
else
echo"start touch file:$file"
touch $file
exit
fi
;;
N|n)
echo"不删除$file"
exit
;
;
esac
done

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。