Linux基础学习笔记3
-
设置周期性计划任务,在8月份的每周3晚上的9点10分,自动备份/etc目录到tmp目录下,要求以时间的格式来命名,例如20220817
-
仅允许user1使用一次性计划任务,拒绝user2使用周期性计划任务
-
使用locate查找selinux的关键字的文件,显示查找到的前两个结果,无论大小写
-
使用find查找/etc目录下占用空间大于5M的文件,并将文件的详细信息记录到/root/file.txt
-
查找/home下拥有人是user1或者拥有组是user2的文件
-
查找/home下拥有人不是root且拥有组不是user2的文件
-
查找/etc目录下最近一周内其内容修改过,同时属主不为root的文件
-
使用curl下载http://rhce.ytlinux.com:9999/demo.zip并另存文件为rhce.txt后查看该文件
-
使用scp将crontab创建的计划任务上传到rhce@lab0.cn:/rhce下并重命名为你姓名的全拼
-
配置ssh免秘钥登录,在你的练习机上配置免秘钥登录lab0.cn主机,该主机的用户名为redhat密码为Redhat@123,并执行last查看最近登录成功的记录
-
创建一个名为/opt/user.sh的脚本,该脚本可以使用位置参数来实现添加用户如 user.sh zhangsan ,使用该脚本可以为添加的用户指定UID,如果UID用户已经存在则提示用户重新输入,如果用户输入root则直接退出脚本,退出状态码为10,并设置用户的密码为从命令行接收输入,检查用户输入的用户密码是否包含12345,如果包含则输出密码错误退出整个脚本,退出状态码设置为100。
#! /bin/bash
read -p “请输入用户名:” username
read -p “请输入密码:” passwd
read -p “请输入UID:” userid
root_uid=0
cat /etc/passwd | awk -F":" ‘{print $3}’ >/data/userid.txt
cat /etc/passwd | awk -F":" '{print KaTeX parse error: Expected 'EOF', got '}' at position 2: 1}̲' >/data/userna…(cat /data/userid.txt | grep “^KaTeX parse error: Expected 'EOF', got '#' at position 13: {userid}:") #̲echo "uid:uid”
if [ “ u s e r n a m e " = " r o o t " ] ; t h e n e c h o " 不允许创建 r o o t 用户,程序即将退出 " e x i t 10 e l i f [ " username" = "root" ];then echo "不允许创建root用户,程序即将退出" exit 10 elif [ " username"="root"];thenecho"不允许创建root用户,程序即将退出"exit10elif["passwd” = “12345” ];then
echo “密码错误(密码为弱密码),程序即将退出”
exit 100
elif [ grep -c "$userid" $id_file
-eq 1 ];then
read -p “当前用户UID已存在,请重新输入UID:” user_id
egrep “^$user_id” /etc/passwd >& /dev/null
if [ $? -ne 0 ];then
useradd $username -p $passwd -u $user_id
echo "当前创建的用户名为: $username"
echo "当前创建的用户密码为:$passwd"
echo "当前创建的用户UID为:$user_id"
else
exit
fi
else
exit
fi
13. 编写一个名为/opt/network的脚本,该脚本允许用户自行输入IP地址和子网掩码以及网关和DNS网络信息,按照用户输入的网络信息配置本机的网络参数,如果用户输入的子网掩码不是24位则提醒用户确认,如果用户输入的IP地址为172.16.0.254,则提示用户该地址已经使用 。
#!/bin/bash
local_ip=ip a show ens160 | grep -E '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+'| awk '{print $2,$NF}'
echo “参考的IP地址信息: $local_ip”
read -p “请输入IP地址:” ip
a1=echo $ip | awk -F '.' '{print $1}'
a2=echo $ip | awk -F '.' '{print $2}'
a3=echo $ip | awk -F '.' '{print $3}'
a4=echo $ip | awk -F '.' '{print $4}'
if [[ “$ip” =~ [0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3} ]];then
if [ $a1 -le 255 -a $a2 -le 255 -a $a3 -le 255 -a $a4 -lt 256 ];then
if(( $a1 ==172 && $a2 == 16 && $a3 ==0 && $a4 == 254 ));then
echo “该地址已被使用”
exit
else
echo “IP地址输入正确”
fi
else
echo “IP地址输入错误”
exit
fi
else
echo “IP地址输入错误”
exit
fi
read -p “请输入子网掩码:” netmask
u1=echo $netmask | awk -F '.' '{print $1}'
u2=echo $netmask | awk -F '.' '{print $2}'
u3=echo $netmask | awk -F '.' '{print $3}'
u4=echo $netmask | awk -F '.' '{print $4}'
if [[ “$netmask” =~ [0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3} ]];then
if [ $u1 -le 255 -a $u2 -le 255 -a $u3 -le 255 -a $u4 -lt 256 ];then
if [ $u1 -eq 255 -a $u2 -eq 255 -a $u3 -le 255 -a $u4 -eq 0 ];then
echo “子网掩码输入正确”
else
echo “子网掩码不为24位”
exit
fi
else
echo “子网掩码输入错误”
exit
fi
else
echo “网掩码输入错误”
exit
fi
read -p “请输入网关地址:” gateway
o1=echo $gateway | awk -F '.' '{print $1}'
o2=echo $gateway | awk -F '.' '{print $2}'
o3=echo $gateway | awk -F '.' '{print $3}'
o4=echo $gateway | awk -F '.' '{print $4}'
if [[ “$gateway” =~ [0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3} ]];then
if [ $o1 -le 255 -a $o2 -le 255 -a $o3 -le 255 -a $o4 -lt 256 ];then
echo “网关地址输入正确”
else
echo “网关地址输入错误”
exit
fi
else
echo “网关地址输入错误”
exit
fi
read -p “请输入DNS地址:” dns
t1=echo $dns | awk -F '.' '{print $1}'
t2=echo $dns | awk -F '.' '{print $2}'
t3=echo $dns | awk -F '.' '{print $3}'
t4=echo $dns | awk -F '.' '{print $4}'
if [[ “$dns” =~ [0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3} ]];then
if [ $t1 -le 255 -a $t2 -le 255 -a $t3 -le 255 -a $t4 -lt 256 ];then
echo “DNS输入正确”
else
echo “DNS输入错误”
exit
fi
else
echo “DNS输入错误”
exit
fi
echo “TYPE=‘Ethernet’
PROXY_METHOD=‘none’
BROWSER_ONLY=‘no’
DEFROUTE=‘yes’
BOOTPROTO=‘static’
IPADDR=‘
i
p
′
G
A
T
E
W
A
Y
=
′
ip' GATEWAY='
ip′GATEWAY=′gateway’
NETMASK=‘
n
e
t
m
a
s
k
′
D
N
S
1
=
′
netmask' DNS1='
netmask′DNS1=′dns’” >/etc/sysconfig/network-scripts/ifcfg-256
systemctl restart NetworkManager
14. 编写一个名为/opt/check.sh的脚本,检查ens160的IP和掩码是否为172.16.0.100/24,如果不是输出network set Error,如果是输出 ip is ok,如果IP正确掩码不正确,输出netmask Error,如果ip不正确掩码正确输出 ip set Error,检查DNS和网关是否为172.16.0.2,如果不是输出gateway Error或者dns Error,反之如果是则输出gateway Ok或者dns Ok。
#! /bin/bash
local_ip=`ifconfig ens160 | grep -E '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+'| awk '{print $2}'`
echo "本地IP地址信息: $local_ip"
p1=$(echo $local_ip|cut -d. -f1)
p2=$(echo $local_ip|cut -d. -f2)
p3=$(echo $local_ip|cut -d. -f3)
p4=$(echo $local_ip|cut -d. -f4)
netmask=`ifconfig ens160 | grep -E '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+'| awk '{print $4}'`
echo "本地子网掩码是: $local_ip"
q1=$(echo $netmask|cut -d. -f1)
q2=$(echo $netmask|cut -d. -f2)
q3=$(echo $netmask|cut -d. -f3)
q4=$(echo $netmask|cut -d. -f4)
dns=`cat /etc/resolv.conf | grep -E '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+'| awk '{print $2}'`
echo "本地dns是:$dns"
d1=$(echo $dns|cut -d. -f1)
d2=$(echo $dns|cut -d. -f2)
d3=$(echo $dns|cut -d. -f3)
d4=$(echo $dns|cut -d. -f4)
gateway=`ip route show | grep -E '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+'| awk '{print $3}' | head -n 1`
echo "本地网关是:$gateway"
g1=$(echo $gateway|cut -d. -f1)
g2=$(echo $gateway|cut -d. -f2)
g3=$(echo $gateway|cut -d. -f3)
g4=$(echo $gateway|cut -d. -f4)
if (( $p1 == 172 && $p2 == 16 && $p3 == 0 && $p4 == 100 ));then
if (( $q1 ==255 && $q2 == 255 && $q3 ==255 && $q4 == 0 ));then
echo "ip is ok"
else
echo "network set error"
exit
fi
elif (( $p1 ==172 && $p2 == 16 && $p3 ==0 && $p4 == 100 ));then
if (( $q1 !=255 && $q2 != 255 && $q3 !=255 && $q4 != 0 ));then
echo "netmask error"
else
exit
fi
elif(( $q1 ==255 && $q2 == 255 && $q3 ==255 && $q4 == 0 ));then
if (( $p1 !=172 && $p2 != 16 && $p3 !=0 && $p4 !=100 ));then
echo "ip set Error"
else
echo "netmask ok"
exit
fi
elif(( $d1 ==172 && $p2 == 16 && $p3 ==0 && $p4 == 2 ));then
if(( $g1 ==255 && $g2 == 255 && $g3 ==255 && $g4 == 0 ));then
echo "gateway is ok or dns ok"
else
echo "gateway Error or dns Error"
exit
fi
else
echo "gateway Error or dns Error"
fi
- 编写脚本/opt/host.sh,执行该脚本可以自动检查当前局域网192.168.0.0/24这个子网内的254台主机,将IP存活的主机地址保存到文件/opt/ip.txt中,但是该存活主机列表不得包含该子网的网关192.168.0.254,如果脚本检测到254的主机地址将跳过本次检测。
#!/bin/bash
for i in {1…255}
do
if [
i
−
n
e
254
]
;
t
h
e
n
i
f
p
i
n
g
−
c
1
−
W
1192.168.123.
i -ne 254 ];then if ping -c 1 -W 1 192.168.123.
i−ne254];thenifping−c1−W1192.168.123.i &>/dev/null ;then
echo “192.168.123.
i
i
s
u
p
"
e
c
h
o
"
192.168.123.
i is up" echo "192.168.123.
iisup"echo"192.168.123.i” >>ip_up.txt
else
echo “192.168.123.
i
i
s
d
o
w
n
"
e
c
h
o
"
192.168.123.
i is down" echo "192.168.123.
iisdown"echo"192.168.123.i” >>ip_down.txt
fi
else
echo "192.168.123.$i 不检测"
exit
fi
done
在这里插入图片描述