目录
一、通过位置变量创建 Linux 系统账户及密码
二、初始化脚本
三、nginx启动脚本
四、每周 5 使用 tar 命令备份/var/log 下的所有日志文件
五、实时监控本机内存和硬盘剩余空间,剩余内存小于 500M、根分区剩余空间小于 1000M时,发送报警邮件给 root 管理员
六、脚本生成一个 100 以内的随机数,提示用户猜数字,根据用户的输入,提示用户猜对了,猜小了或猜大了,直至用户猜对脚本结束。
七、检测本机当前用户是否为超级管理员,如果是管理员,则使用 yum 安装 vsftpd,如果不是,则提示您非管理员(使用字串对比版本)
八、检测本机当前用户是否为超级管理员,如果是管理员,则使用 yum 安装 vsftpd,如果不是,则提示您非管理员(使用 UID 数字对比版本)
九、编写脚本:提示用户输入用户名和密码,脚本自动创建相应的账户及配置密码。如果用户不输入账户名,则提示必须输入账户名并退出脚本;如果用户不输入密码,则统一使用默认的 123456 作为默认密码。
十、编写脚本测试 192.168.4.0/24 整个网段中哪些主机处于开机状态,哪些主机处于关机状态(for 版本)
十一、编写脚本测试 192.168.4.0/24 整个网段中哪些主机处于开机状态,哪些主机处于关机状态(while 版本)
十二、创建多个用户
十三、删除多个有规律的用户
十四、九九乘法表
十五、剪子包袱锤
十六、猜大小
十七、关于$*与$@的验证
编辑 十八、使用 user.txt 文件中的人员名单,在计算机中自动创建对应的账户并配置初始密码
十九、现有学生成绩与对应等级:0~60:D、61~80 C、81~90 B、91~100 A,编写脚本实现当输入范围区间内的数字时打印出对应的等级,输入其他字符时提示“请输入正确数字”并退出脚本?
vim useradd.sh
#!/bin/bash
#$1 是执行脚本的第一个参数,$2 是执行脚本的第二个参数
useradd "$1"
echo "$2" | passwd --stdin "$1"
#!/bin/bash
#init(初始化) environment(环境)
#firewalld configure
fw(){
systemctl status firewalld >> /dev/zero
if [ $? -ne 0 ];then
echo "Firewalld is disabled!"
else
systemctl stop firewalld
sleep 3
echo "Firewalld stop successful!"
fi
}
#network configure
net(){
nic=`ifconfig | awk -F : 'NR==1{print $1}'`
systemctl status NetworkManager > /dev/zero
if [ $? -ne 0 ];then
echo "NetworkManager is disabled!"
else
systemctl stop NetworkManager
sleep 3
echo "NetworkManager stop successful!"
fi
cat << eof > /etc/sysconfig/network-scripts/ifcfg-$nic
TYPE=Ethernet
BOOTPROTO=static
NAME=$nic
DEVICE=$nic
ONBOOT=yes
IPADDR=192.168.100.1
PREFIX=24
GATEWAY=192.168.100.254
DNS1=192.168.100.254
eof
systemctl restart network > /dev/zero
sleep 2
echo "IP address be OK!"
}
#selinux configure
se(){
text=`awk -F = '/SELINUX=e/{print $2}' /etc/selinux/config`
if [ -z $text ];then
echo "selinux is disable"
else
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
sleep 2
echo "selinux is OK!"
fi
}
#yum configure
yum(){
yumPath="/etc/yum.repos.d"
if ! [ -d $yumPath/backup ];then
mkdir $yumPath/backup
mv $yumPath/CentOS-* $yumPath/backup
cat << e > $yumPath/local.repo
[local]
name=local
baseurl=file:///mnt
enabled=1
gpgcheck=0
e
umount /mnt
mount /dev/sr0 /mnt > /dev/zero
sleep 2
echo "yum configure is OK!"
else
echo "$yumPath/backup is existed!"
fi
}
#kernel configure
kernel(){
ktext=`grep "net.ipv4.ip_forward" /etc/sysctl.conf`
if ! [ -z $ktext ];then
echo "route be config!"
else
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p >> /dev/zero
sleep 2
echo "route is OK"
fi
}
#configing
fw
net
se
yum
kernel
#!/bin/bash
nginx_cmd="/usr/local/nginx/sbin/nginx"
two=$2
start(){
if [ -z $two ];then
$nginx_cmd -c /usr/local/nginx/conf/nginx.conf
else
$nginx_cmd -c $two
fi
}
stop(){
if [ -z $two ];then
$nginx_cmd -s stop -c /usr/local/nginx/conf/nginx.conf
else
$nginx_cmd -s stop -c $two
fi
}
case $1 in
start)
start
;;
stop)
stop
;;
reload)
if [ -z $2 ];then
$nginx_cmd -s reload -c /usr/local/nginx/conf/nginx.conf
else
$nginx_cmd -s reload -c $2
fi
;;
restart)
stop
start
;;
*)
echo 'USEAGE: $1:start|stop|reload;$2:/usr/loca/nginx/conf/nginx.conf(default) OR other configure path!'
;;
esac
#注意:此脚本为编译安装nginx之后的脚本
#vim /root/logbak.sh
#编写备份脚本,备份后的文件名包含日期标签,防止后面的备份将前面的备份数据覆盖
#注意 date 命令需要使用反引号括起来,反引号在键盘
tar -czf log-`date +%Y%m%d`.tar.gz /var/log
# crontab ‐e #编写计划任务,执行备份脚本
00 03 * * 5 /root/logbak.sh
#!/bin/bash
memFree=`free-m | awk 'NR==2{print $4}'` #memory 内存
diskFree=`df -m | awk '/\//{print $4}'`
while true
do
if [ $memFree -lt 500 ] || [ $diskFree -lt 1000 ];then
echo "memory or disk is not enough! please check the mail for root!"
mail -s warning root << e
SOS
e
fi
done
#!/bin/bash
#RANDOM 为系统自带的系统变量,值为 0‐32767 的随机数
#使用取余算法将随机数变为 1‐100 的随机数
num=$[RANDOM%100+1]
#使用 read 提示用户猜数字
#使用 if 判断用户猜数字的大小关系:‐eq(等于),‐ne(不等于),‐gt(大于),‐ge(大于等于),‐lt(小于),‐le(小
于等于)
while :
do
read ‐p "计算机生成了一个 1‐100 的随机数,你猜: " cai
if [ $cai ‐eq $num ];then
echo "恭喜,猜对了"
exit
elif [ $cai ‐gt $num ];then
echo "Oops,猜大了"
else
echo "Oops,猜小了"
fi
done
#!/bin/bash
if [ $USER == "root" ];then
yum ‐y install vsftpd
else
echo "您不是管理员,没有权限安装软件"
fi
#!/bin/bash
if [ $UID ‐eq 0 ];then
yum ‐y install vsftpd
else
echo "您不是管理员,没有权限安装软件"
fi
#!/bin/bash
read -p "Please input username:" un
read -p "please input password:" up
if [ -z $un ];then
echo "Please input username!"
exit
else
if [ -z $up ];then
useradd $un
echo "123456" | passwd --stdin $un >> /dev/zero
echo "Your username is $un,Your password is 123456"
else
useradd $un
echo $up | passwd --stdin $un >> /dev/zero
echo "Your username is $un,Your password is $up"
fi
fi
#!/bin/bash
for i in `seq 1 254`
do
ping -c 3 -w 1 192.168.4.$i >> /dev/zero
if [ $? -eq 0 ];then
echo "192.168.4.$i is up" >> /opt/up.txt
else
echo "192.168.4.$i is down" >> /opt/down.txt
fi
done
#!/bin/bash
i=1
while [ $i ‐le 254 ]
do
ping ‐c2 ‐i0.3 ‐W1 192.168.4.$i &>/dev/null
if [ $? –eq 0 ];then
echo "192.168.4.$i is up"
else
echo "192.168.4.$i is down"
fi
let i++
done
vim for.sh
vim user_del.sh
方法一:
方法二:
#`-e`:启用转义字符,如`\n`表示换行符、`\t`表示制表符等。
#`-n`:不输出末尾的换行符。
结果:
#注意:外层循环控制行,里层循环控制列
结果:
#!/bin/bash
#本脚本执行,需要提前准备一个 user.txt 文件,该文件中包含有若干用户名信息
for i in `cat user.txt`
do
useradd $i
echo "123456" | passwd ‐‐stdin $i
done