目录
7.成绩优秀90-100,良好80-89 及格60-79 不及格0-59
16.搭建网站,使用82端口,使用82号端口,定义主页内容是sed-test~
17.查找解析器是bash的用户并列出密码记录(账户名-->密码记录)
1.在命令行创建用户以及删除密码
#!/bin/bash
#创建用户
useradd $1
echo $2 | passwd --stdin $1
2. 命令行提示创建用户以及密码
#!/bin/bash
#创建用户
read -p 请创建用户名: u
useradd $u
stty -echo
read -p 请输入密码: m
echo $m | passwd --stdin $u
stty echo
3.每两分钟检查系统用户数量,如有添加立即发邮件报告
#!/bin/bash
#每两分钟检查系统用户数量,如有添加立即发邮件报告
a=$(cat /etc/passwd | wc -l)
if [ $a -gt 47 ];then
echo 有用户添加立即查看服务器 | mail -s test root
else
echo ok
fi
4. 创建用户时未输入两个参数自动退出
#!/bin/bash
#未输入两个参数自动退出
if [ $# -lt 2 ];then
echo 创建时需要输入账号与密码
exit
fi
useradd $1
echo $2 | passwd --stidn $1
5.查看文件是否有/haha,有喊ok,没有则创建
#!/bin/bash
#查看文件是否有/haha,有喊ok,没有则创建
a="haha"
if [ -d haha ];then
echo ok
else
mkdir $a
fi
6.ping通喊OK,没ping通喊no
#!/bin/bash
#ping通喊OK,没ping通喊no
for i in {1..10}
do
ping -c 2 -i 0.1 -w 0,1 192.168.88.$i &> /dev/null
if [ $? -eq 0 ];then
echo ok $i
let a+=1
else
echo no $i
let b+=1
fi
done
echo ping通 $a
echo ping不通 $b
7.成绩优秀90-100,良好80-89 及格60-79 不及格0-59
#!/bin/bash
#成绩优秀90-100,良好80-89 及格60-79 不及格0-59
read -p 这次考试如何 u
if [ $u -ge 90 ] && [ $u -le 100 ];then
echo 优秀
elif
[ $u -ge 80 ] && [ $u -le 89 ];then
echo 良好
elif
[ $u -ge 60 ] && [ $u -le 79 ];then
echo 及格
elif
[ $u -ge 0 ] && [ $u -le 59 ];then
echo 不及格
fi
8.帮客户计算(限加)
#!/bin/bash
#帮客户计算(限加)
x=0
while :
do
read -p "输入数字(0结束并算出结果)" u
[ -z $u ] && continue
echo "$u" | grep -q "[^0-9]" && continue
[ $u -eq 0 ] && break
let x+=u
done
echo $x
9.m创建;r删除;l查看
#!/bin/bash
#m创建;r删除;l查看
case $1 in
r)
rm -rf $2 ;;
m)
mkdir $2 ;;
l)
ls $2 ;;
esac
10.安装源码包nginx
#!/bin/bash
yum -y install gcc make pcre-devel openssl-devel
tar -xf nginx-1.22.1.tar.gz
cd nginx-1.22.1
./configure
make
make install
11.nginx并启动服务
#!/bin/bash
#安装nginx并启动服务
case $1 in
start|st)
/usr/sbin/nginx;;
stop|so)
/usr/sbin/nginx -s stop;;
restart|sp)
/usr/sbin/nginx -s stop
/usr/sbin/nginx ;;
stauts|ss)
ss -tunlp | grep nginx &> /dev/null
[ $? -eq 0 ] && echo 正在运行 || echo 没有运行 ;;
*)
echo "别闹请输入st/so/sp"
esac
#!/bin/bash
#源码包使用nginx
case $1 in
start|st)
/usr/local/nginx/sbin/nginx;;
stop|so)
/usr/local/nginx/sbin/nginx -s stop;;
restart|sp)
/usr/local/nginx/sbin/nginx -s stop
/usr/local/nginx/sbin/nginx;;
status|ss)
ss -ntulp | grep -q nginx
[ $? -eq 0 ] && echo nginx正在运行 || echo nginx 没运行;;
*)
echo 必须输入start stop
esac
12.利用函数修改颜色
#!/bin/bash
#利用函数修改颜色
a () {
echo -e "\033[$1m$2\033[0m"
}
case $1 in
start|st)
/usr/sbin/nginx;;
stop|so)
/usr/sbin/nginx -s stop;;
restart|sp)
/usr/sbin/nginx -s stop
/usr/sbin/nginx ;;
stauts|ss)
ss -tunlp | grep nginx &> /dev/null
if [ $? -eq 0 ];then
a 033 正在运行
else
a 034 没有运行
fi;;
*)
echo "别闹请输入st/so/sp"
esac
13.随机密码
#!/bin/bash
#随机密码
a=1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM
pass=
for i in {1..8}
do
n=$[RANDOM%62]
p=${a:n:1}
pass+=$p
done
echo $pass
14.批量修改txt
#!/bin/bash
#批量修改txt
for i in $(ls *.txt)
do
n=${i%.*}
mv $i $n.doc
done
15.使用默认密码创建用户
#!/bin/bash
#使用默认密码创建用户
read -p 请创建用户 u
useradd $u
read -p "请输入密码(默认123)" n
echo ${n:-123} | passwd --stdin $u
16.搭建网站,使用82端口,使用82号端口,定义主页内容是sed-test~
#!/bin/bash
搭建网站,使用82端口,使用82号端口,定义主页内容是sed-test~
yum -y remove httpd
re -rf /etc/httpd
setenforce 0
systemctl stop firewalld
yum -y install httpd &> /dev/null
sed -i '/^Listen 80/s/0/2' /etc/httpd/conf/httpd.conf
echo sed-test~ > /var/www/html/index.html
systemctl start httpd
systemctl enable httpd
17.查找解析器是bash的用户并列出密码记录(账户名-->密码记录)
#!/bin/bash
#查找解析器是bash的用户并列出密码记录(账户名-->密码记录)
a=$(sed -n '/bash$/s/:.*//p' /etc/passwd)
for i in $a
do
pass=$(grep $i /etc/shadow)
pass=${pass#*:}
pass=${pass%%:*}
echo "$i --> $pass"
done
18.编写监控脚本
#!/bin/bash
#编写监控脚本
while :
do
clear
clear
free -h | awk '/^Men/{print "剩余内存"$4"容量"}'
ifconfig eth0 | awk '/TX p/{print "网卡的发送数据量"$5"字节"}'
uptime | awk '{print "15分子CPU平均负载" $NF}'
awk 'END{print "用户总数是"NR"个"}' /etc/passwd
who | awk 'END{print "登录用户数量是"NR"个"}'
rpm -qa | awk 'END{print "安装的软件包数量是"NR"个"}'
df -h | awk '/\/$/{print "根分区剩余容量是"$4}'
sleep 3
done
1.81.编写监控脚本使用函数改变颜色
#!/bin/bash
#编写监控脚本
a () {
echo -e "\033[$1m$2\033[0m"
}
while :
do
clear
a 30 ` uptime | awk '{print "每十五分钟cpu负载"$NF}'`
a 31 ` ifconfig eth0 | awk '/RX p/{print "eth0网卡接受量"$5"字节"}'`
a 32 `ifconfig eth0 | awk '/TX p/{print "eth0网卡发送量"$5"字节"}'`
a 33 `free -h | awk '/Mem/{print "剩余内存"$4}'`
a 34 ` df -h | awk '/\/$/{print "根剩余容量"$4}'`
a 35 ` awk 'END{print "一共有"NR"用户"}' /etc/passwd`
a 36 `who | awk 'END{print "登陆用户数量"NR}'`
a 37 ` rpm -qa | awk 'END{print "一共有"NR"安装包"}'`
sleep 5
done
19.系统初始化
#!/bin/bash
#所有服务器永久关闭防火墙服务和SELinux
#关闭7版本系统的命令历史记录,修改8版本的命令历史记录最多保存2000条并加上时间戳
#关闭8版本系统的交换分区
#定义root远程登录系统后的ssh保持时间为300秒
#设置时间同步,ntp服务器地址是192.168.88.240
#1)判断当前账户身份,并关闭防火墙与selinux
[ $UID -ne 0 ] && echo "请使用管理员操作" && exit
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
#2)根据不同版本的系统执行各自的任务
egrep -q "\s+8\.[0-9]" /etc/redhat-release
if [ $? -ne 0 ];then
sed -ri 's/HISTSIZE=[0-9]+/HISTSIZE=0/' /etc/profile
else
sed -ri 's/HISTSIZE=[0-9]+/HISTSIZE=2000/' /etc/profile
sed -i '/^export /i HISTTIMEFORMAT="%F %T "' /etc/profile
sed -i '/^export /s/$/ HISTTIMEFORMAT/' /etc/profile
swap=$(swapon | awk 'NR!=1{print $1}')
for i in $swap
do
swapoff $i
done
sed -i '/swap/s/^/#/' /etc/fstab
fi
#3)最后所有机器设置ssh超时时间与时间同步
echo "export TMOUT=300" >> ~/.bash_profile
yum -y install chrony
systemctl enable chronyd
sed -ri '/^(pool|server).*iburst/s/^/#/' /etc/chrony.conf
sed -i '1i server 192.168.88.240 iburst' /etc/chrony.conf
systemctl restart chronyd
20.批量创建用户和密码
vim user.txt ----(先创建文档)
研发部
zhangsan haha123
人事部
lisi xixi456
wangwu lele789
销售部
zhaoliu kaka765
#!/bin/bash
#批量创建用户和密码
while read name pass
do
[ -z $pass ] && continue
useradd $name
echo $pass | passwd --stdin $name
done < user.txt
21.自动获取linux密码并设置
#!/bin/bash
#自动获取linux密码并设置
x=$(awk '/^[a-zA-z0-9]/&&!/已创建/{print NR}' user.txt)
if [ -z "$x" ];then
echo "没有账户需要创建"
column -t user.txt
exit
fi
for i in $x
do
pass=$(strings /dev/urandom | tr -cd '_a-zA-Z0-9' | head -c 10)
sed -i "${i}s/$/\t$pass/" user.txt
read -p name passwd << EOF
$(sed -n "${i}p" user.txt)
EOF
useradd $name
echo $pass | passwd --stdin $name
sed -i "${i}s/$/\t已创建/" user.txt
done
column -t user.txt
22.制作菜单,控制vsftpd服务
(1) 制作菜单menu(不需要.sh)
x=1
y=0
menu () {
clear
for i in 1,安装ftp服务 2,开关ftp服务 3,退出
do
echo "-----------------"
let y++
[ $x -eq $y ] && echo -e "\033[42;91m$i\033[0m" && continue
echo "$i"
done
y=0
echo "-----------------"
}
(2) 可动菜单ftp.sh
#!/bin/bash
. menu
while :
do
menu
read -n 3 c
if [ "$c" == $'\033[A' ];then
[ $x -eq 1 ] && continue
let x--
elif
[ "$c" == $'\033[B' ];then
[ $x -eq 3 ] && continue
let x++
fi
done
(3)创建ftp安装函数文件ftp_install(不需要.sh)
ftp_install () {
if rpm -q vsftpd &> /dev/null;then
msg="ftp已经安装"
else
yum -y install vsftpd &> /dev/null
[ $? -eq 0 ] && msg="ftp安装成功" || msg="ftp安装失败"
fi
}
(4)重新编辑“可动菜单”,把“ftp软件包安装查询”文件添加进入
#!/bin/bash
. menu
. ftp_install
while :
do
menu
echo "$msg"
read -n 3 c
if [ "$c" == $'\033[A' ];then
[ $x -eq 1 ] && continue
let x--
elif
[ "$c" == $'\033[B' ];then
[ $x -eq 3 ] && continue
let x++
elif
[ $x -eq 1 ] && [ -z "$c" ];then
msg="ftp正在安装中。。。"
echo "$msg"
ftp_install
fi
done
(5)创建服务管理函数文件ser_manager
ser_manager () {
if ! rpm -q vsftpd &> /dev/null;then
msg="未安装ftp软件包"
return
fi
case $1 in
start)
systemctl start vsftpd
msg="ftp服务已经开启"
ser_manager=start;;
stop)
systemctl stop vsftpd
msg="ftp服务已经关闭"
ser_manager=stop;;
esac
}
(6) 重新编辑“可动菜单”,把“ftp服务管理添加进入
#!/bin/bash
. menu
. ftp_install
. ser_manager
while :
do
menu
echo "$msg"
read -n 3 c
if [ "$c" == $'\033[A' ];then
[ $x -eq 1 ] && continue
let x--
elif
[ "$c" == $'\033[B' ];then
[ $x -eq 3 ] && continue
let x++
elif
[ $x -eq 1 ] && [ -z "$c" ];then
msg="ftp正在安装中。。。"
echo "$msg"
ftp_install
elif
[ $x -eq 2 ] && [ -z "$c" ];then
[ "$ser_manager" != "start" ] && ser_manager start || ser_manager stop
elif
[ $x -eq 3 ] && [ -z "$c" ];then
exit
fi
done
23.备份数据/var/www/html 里面除了.tmp类型的所有文件到/opt/backup_data;备份文件要带时间戳,打tar包,格式为web_file_年-月-日.tar.gz;如果/opt/backup_data中备份的tar包凑齐5个之后,就都上传到ftp中并删除本地的这些tar包;任务执行成功或失败都要给出提示信息
#!/bin/bash
#1.备份数据/var/www/html 里面除了.tmp类型的所有文件到/opt/backup_data
#2.备份文件要带时间戳,打tar包,格式为web_file_年-月-日.tar.gz
#3.如果/opt/backup_data中备份的tar包凑齐5个之后,就都上传到ftp中并删除本地的这些tar包
#4.任务执行成功或失败都要给出提示信息
sou_path=/var/www/html
tar_path=/opt/backup_data
date=$(date +%Y-%m-%d)
ex_file=*.tmp
tar -zcf ${tar_path}/web_file_${date}.tar.gz --exclude=$ex_file ${sou_path}
file_total=$(ls ${tar_path} | wc -l)
echo "${date}的文件已打tar包放入${tar_path},目前备份文件总数是${file_total}个"
if [ $file_total -ge 5 ];then
lftp 192.168.99.6 << EOF
cd pub
mput -q ${tar_path}/*
quit
EOF
if [ $? -ne 0 ];then
echo "上传失败"
else
echo "上传成功"
rm -rf ${tar_path}/web_file*
fi
fi