练习:
1、批量生成随机字符文件名,在tmp目录下批量创建10 个html 文件,其中每个文件需要包含10个随机小写字母加固定字符串tmp
#!/bin/bash
for (( a = 1 ; a < 11; a++ ))
do
mktemp | awk -F. '{print $2}' >> w
cat w | tr 'A-Z' 'a-z'>>f
cat f | tr '0-9' 'a-z'>>h
if [ $a -eq 10 ]
then
break
fi
done
file="h"
for b in $(cat $file)
do
touch /tmp/$b.tmp.html
done
2、批量修改名称,后缀修改为大写
ls /tmp |grep 'html$' | sed 's/html/HTML/g'
3、批量创建10各系统账号 user01-user10 并设置密码(密码为随机数,要求字符和数字混合)
#!/bin/bash
for b in user{01..10}
do
useradd $b
done
echo "mktemp |awk -F. '{print $2 }'" |passwd $b --stdin
4、判断自己的网络里当前在线的ip有多少?
#!/bin/bash
#
for a in `seq 1 255`
do
ping -c 1 192.168.3.$a
if [ $? -eq 0 ]
then
echo is up >> 1.txt
else
echo is down >> 1.txt
fi
done
cat 1.txt >> /dev/null | grep is up >>/dev/null |wc -l
5、计算1-100的和
#!/bin/bash
#
sum=0
for a in {1..100}
do
sum=$[ $sum + $a ]
done
echo $sum
6、把/root/目录下的所有目录拷贝到/tmp/下
cp -rf /root/* /tmp
7、判断输入的IP是否正确
#!/bin/bash
ip=$1
a=`echo $ip |awk -F. '{print $1}'`
b=`echo $ip |awk -F. '{print $2}'`
c=`echo $ip |awk -F. '{print $3}'`
d=`echo $ip |awk -F. '{print $4}'`
if [ $a -gt 0 ] && [ $a -le 255 ]&& [ $b -gt 0 ] && [ $b -le 255 ]&& [ $c -gt 0 ] && [ $c -le 255 ] && [ $d -gt 0 ] && [ $d -le 255 ]
then
echo "the ip is true "
else
echo "the ip is force"
fi
8、生成1-50内的随机数
#!/bin/bash
echo $(($RANDOM%50+1))
9、每日生成一个文件,格式为当日时间-diskinfo.log 并且把磁盘的使用情况写到这个文件中
#!/bin/bash
df -Th > `date +%F`-diskinfo.log
crontab -e
* */1 * * sh 9.sh
10、httpd的access.log中访问最多的5 个IP
more /var/log/httpd/access_log-20180527 | grep ^192 | awk '{print $1}' | sort -g | tail -5
11、可以查看进程的内存占用大小,计算一下所有进程所占用的内存大小的和
#!/bin/bash
#
ps -aux | awk '{sum=sum+$4}END{print sum}'
12、查看/var/log 目录下的文件数
#!/bin/bash
#
ls /var/log | wc -l
13、查看linux系统每个Ip 的连接数
netstat -an | head -14 |tail -12 |awk '{print $5}'
14、shell下生成32位随机密码
openssl rand -base64 32
15、简述linux系统 的开机启动顺序
1、加载BIOS设置,即检查硬件设备(CPU CD-ROM 主板 内存 键盘 硬盘)
2、加载MBR (主要加载GRUB分区)用户的自定义配置等
3、a、在内存中释放kernel使用的file system
b、执行根文件系统中的进程
4、加载配置文件。init程序启动后,读取/etc/inintab文件,决定系统的启动级别
5、加载内核模块
6、根据运行级别 ,系统运行0-6中的相应程序 来初始化和启动相应的服务
7、启动init.d下的系统进程
8、出现系统登录画面
16、如何在文本里面进行复制、粘贴、删除行、删除全部,按行查找和按字母查找
复制:yy
粘贴:p
删除行:dd
删除全部:gg ndd
按行查找:fX
按字母查找:
17、如何手动安装grub
a、如果grub文件破坏
开机启动时会进入grub命令行模式
查找一下grub find (hd0,0)直到找到含有内核版本的盘
然后执行
root (hd0,0)
kernel /vmlinuz内核版本 root=/dev/sd盘
initrd /initramfs 内核版本.img
重新启动系统
b、 如果/boot/目录破坏了
在开机时使用光盘启动进入救援模式(Fn+F2)
语言,键盘等都选择默认,不启用网络执行以下
df -Th #查看当前的系统环境
chroot /mnt/sysimge/ 修改系统环境
df -Th
mount /dev/sr0 /mnt 挂载光盘
rpm -ivh kernel --force 安装内核
ls /boot
grub-install /dev/sd盘 安装grub
ls /boot
vim /boot/grub/grub.conf
default=0
timeout=5
title c77
root (hd0,0)
kernel /vmlinuz内核版本 root=/dev/sd盘
initrd /initramfs内核版本.img
sync 同步
exit
重新启动系统
18、显示/etc/inittab 中#开头,后面跟了一个或者多个空白字符
#!/bin/bash
more /etc/inittab | grep "^#[[:space:]]\{1,\}.*"
19、history命令显示具体时间 永久修改history显示时间
echo 'HISTTIMEFORMAT="%F %T "' >> /etc/profile
20、打印3 天前的日期
date -d "3 days ago" +%F
21、一个目录中有很多文件,快速查看到更新的文件,如何看
#!/bin/bash
#
ls -al $1 | awk '{print $6,$7,$8,$9}' |sort -g |tail -5
22、如何过滤出目录中的所有一级目录不包含子目录,只能是一级目录
#!/bin/bash
ls -la $1 | grep '^d' | wc -l
1、批量生成随机字符文件名,在tmp目录下批量创建10 个html 文件,其中每个文件需要包含10个随机小写字母加固定字符串tmp
#!/bin/bash
for (( a = 1 ; a < 11; a++ ))
do
mktemp | awk -F. '{print $2}' >> w
cat w | tr 'A-Z' 'a-z'>>f
cat f | tr '0-9' 'a-z'>>h
if [ $a -eq 10 ]
then
break
fi
done
file="h"
for b in $(cat $file)
do
touch /tmp/$b.tmp.html
done
2、批量修改名称,后缀修改为大写
ls /tmp |grep 'html$' | sed 's/html/HTML/g'
3、批量创建10各系统账号 user01-user10 并设置密码(密码为随机数,要求字符和数字混合)
#!/bin/bash
for b in user{01..10}
do
useradd $b
done
echo "mktemp |awk -F. '{print $2 }'" |passwd $b --stdin
4、判断自己的网络里当前在线的ip有多少?
#!/bin/bash
#
for a in `seq 1 255`
do
ping -c 1 192.168.3.$a
if [ $? -eq 0 ]
then
echo is up >> 1.txt
else
echo is down >> 1.txt
fi
done
cat 1.txt >> /dev/null | grep is up >>/dev/null |wc -l
5、计算1-100的和
#!/bin/bash
#
sum=0
for a in {1..100}
do
sum=$[ $sum + $a ]
done
echo $sum
6、把/root/目录下的所有目录拷贝到/tmp/下
cp -rf /root/* /tmp
7、判断输入的IP是否正确
#!/bin/bash
ip=$1
a=`echo $ip |awk -F. '{print $1}'`
b=`echo $ip |awk -F. '{print $2}'`
c=`echo $ip |awk -F. '{print $3}'`
d=`echo $ip |awk -F. '{print $4}'`
if [ $a -gt 0 ] && [ $a -le 255 ]&& [ $b -gt 0 ] && [ $b -le 255 ]&& [ $c -gt 0 ] && [ $c -le 255 ] && [ $d -gt 0 ] && [ $d -le 255 ]
then
echo "the ip is true "
else
echo "the ip is force"
fi
8、生成1-50内的随机数
#!/bin/bash
echo $(($RANDOM%50+1))
9、每日生成一个文件,格式为当日时间-diskinfo.log 并且把磁盘的使用情况写到这个文件中
#!/bin/bash
df -Th > `date +%F`-diskinfo.log
crontab -e
* */1 * * sh 9.sh
10、httpd的access.log中访问最多的5 个IP
more /var/log/httpd/access_log-20180527 | grep ^192 | awk '{print $1}' | sort -g | tail -5
11、可以查看进程的内存占用大小,计算一下所有进程所占用的内存大小的和
#!/bin/bash
#
ps -aux | awk '{sum=sum+$4}END{print sum}'
12、查看/var/log 目录下的文件数
#!/bin/bash
#
ls /var/log | wc -l
13、查看linux系统每个Ip 的连接数
netstat -an | head -14 |tail -12 |awk '{print $5}'
14、shell下生成32位随机密码
openssl rand -base64 32
15、简述linux系统 的开机启动顺序
1、加载BIOS设置,即检查硬件设备(CPU CD-ROM 主板 内存 键盘 硬盘)
2、加载MBR (主要加载GRUB分区)用户的自定义配置等
3、a、在内存中释放kernel使用的file system
b、执行根文件系统中的进程
4、加载配置文件。init程序启动后,读取/etc/inintab文件,决定系统的启动级别
5、加载内核模块
6、根据运行级别 ,系统运行0-6中的相应程序 来初始化和启动相应的服务
7、启动init.d下的系统进程
8、出现系统登录画面
16、如何在文本里面进行复制、粘贴、删除行、删除全部,按行查找和按字母查找
复制:yy
粘贴:p
删除行:dd
删除全部:gg ndd
按行查找:fX
按字母查找:
17、如何手动安装grub
a、如果grub文件破坏
开机启动时会进入grub命令行模式
查找一下grub find (hd0,0)直到找到含有内核版本的盘
然后执行
root (hd0,0)
kernel /vmlinuz内核版本 root=/dev/sd盘
initrd /initramfs 内核版本.img
重新启动系统
b、 如果/boot/目录破坏了
在开机时使用光盘启动进入救援模式(Fn+F2)
语言,键盘等都选择默认,不启用网络执行以下
df -Th #查看当前的系统环境
chroot /mnt/sysimge/ 修改系统环境
df -Th
mount /dev/sr0 /mnt 挂载光盘
rpm -ivh kernel --force 安装内核
ls /boot
grub-install /dev/sd盘 安装grub
ls /boot
vim /boot/grub/grub.conf
default=0
timeout=5
title c77
root (hd0,0)
kernel /vmlinuz内核版本 root=/dev/sd盘
initrd /initramfs内核版本.img
sync 同步
exit
重新启动系统
18、显示/etc/inittab 中#开头,后面跟了一个或者多个空白字符
#!/bin/bash
more /etc/inittab | grep "^#[[:space:]]\{1,\}.*"
19、history命令显示具体时间 永久修改history显示时间
echo 'HISTTIMEFORMAT="%F %T "' >> /etc/profile
20、打印3 天前的日期
date -d "3 days ago" +%F
21、一个目录中有很多文件,快速查看到更新的文件,如何看
#!/bin/bash
#
ls -al $1 | awk '{print $6,$7,$8,$9}' |sort -g |tail -5
22、如何过滤出目录中的所有一级目录不包含子目录,只能是一级目录
#!/bin/bash
ls -la $1 | grep '^d' | wc -l