Linux 实验六

  1. 编写⼀段bash shell程序,保存为 program.sh
    完成以下输出,可循环执⾏:
    please,input a number:
    5(回⻋)
    5 4 3 2 1
    4 3 2 1
    3 2 1
    2 1
    1
#!/bin/bash
echo "please,input a number:"
read x
while [ $x -gt 0 ]
do
	i=$x
	while [ $i -gt 0 ]
	do
		echo -n "$i "
		i=`expr $i - 1`  //使用expr时要注意加`,且运算符两边有空格
	done
	echo -e
	let x=$x-1
done

这里是引用

  1. run.log是⼀个具有固定格式的⽇志⽂件。每⼀⾏的格式为: ip[]time[]runner[]command[]result ,其
    中 []表示空格,ip格式为点分⼗进制表示法。编写⼀个名为log.sh的shell脚本统计每个ip出现的次数。
    例⼦:
    10.10.10.1[]32
    10.10.10.2[]2
    10.10.10.3[]5
//run.log
10.10.10.1 32
10.10.10.2 2
10.10.10.3 5
10.10.10.10 100
10.10.10.1 5
10.10.10.3 5
10.10.10.1 2
//log.sh
#!/bin/bash
awk '{a[$1]++}END{for(i in a){print i,a[i] | "sort -r -k 2"}}' run.log

linux脚本统计文件中相同元素行个数 等操作

//结果
[root@localhost ~]# /bin/bash log.sh 
10.10.10.1 3
10.10.10.3 2
10.10.10.2 1
10.10.10.10 1
  1. 编写⼀个名为ftp.sh的shell程序,完成vsftpd的⾃动安装、配置和启动。
    要求:1.采⽤stand-alone模式启动 2.禁⽌匿名启动 3.修改服务端⼝为22022
#!/bin/bash 
a=`df -Th |grep "/dev/sr0" |awk '{print $2}'`
if [ $a = iso9660 ];then
echo "You do not need to perform the operation again!"   
else
echo "loading..."
mount /dev/cdrom /mnt &>/dev/null
echo "Under success!"
fi

rpm -ivh /mnt/Packages/vsftpd-3.0.2-25.el7.x86_64.rpm &> /dev/null
if [ $? = 0 ]
then
echo "Download successfully!"
else
echo "You do not need to repeat the download!"
fi

BB=/etc/vsftpd/vsftpd.conf
echo "anonymous_enable=NO" >> $BB
echo "listen_port=22022" >> $BB //修改服务端口
echo "Configuration is complete!"

b=`systemctl status vsftpd |grep "Active:" |awk '{print $2}'` &>/dev/null
if [ $b = active ];then
echo "You do not need to perform the operation again!"
else
systemctl start vsftpd
echo "Open start vsftpd success!"
fi
systemctl enable vsftpd
if [ $? = 0 ];then
echo "Open enable vsftpd success!"
else
echo "Open enable vsftpd failure!"
fi
  1. 管理员root每天需要完成以下⼯作:
    2.1 每天早上8点30分启动服务器的ftp服务,在每天晚上23点30分就关闭ftp服务。如果启动成功把ftp的进程信息写⼊/var/ftp/年-⽉-⽇.log ⽂件中,如果启动失败,需要给root发⼀封邮件。邮件内容为: start ftp error。
/root/con1.sh
#!/bin/bash
service vsftpd status
if [ $? -eq 0 ];then #running
	service vsftpd stop #try to stop
	if [ $? -ne 0 ];then #if stop fail
		pid=`ps -ef | grep vsftpd | grep -v "grep vsftpd" | awk -F ' ' '{print $2}'`
		kill -9 $pid
	fi
fi
service vsftpd start
if [ $? -eq 0 ];then #success
	echo `ps -ef | grep vsftpd | grep -v "grep vsftpd"` >> "/var/ftp/"`date +%Y-%m-%d`".log"
else #failed
	echo "start ftp error!" | mail -s error root
fi
/root/con2.sh
#!/bin/bash
service vsftpd stop
if [ $? -eq 0 ];then
	echo "stop vsftpd successful " >> "/var/ftp/"`date +%Y-%m-%d`".log"
else
	pid=`ps -ef | grep vsftpd | grep -v "grep vsftpd" | awk -F ' ' '{print $2}'`
	kill -9 $pid
fi

2.2 在早上8点30分到晚上23点30分之间,每隔1⼩时ping⼀下百度域名(每次ping 发4次),保证⽹络畅通,并把ping的结果追加到 /var/ftp/年-⽉-⽇.log ⽂件中。

/root/con3.sh
#!/bin/bash
ping -c 4 www.baidu.com >> "/var/ftp/"`date +%Y-%m-%d`".log"

2.3 每天晚上11点50分30秒备份ftp⽬录(/var/ftp)⽣成名为 年-⽉-⽇.tar.gz 的
压缩包,并把压缩包的权限修改为只有root有
读权限,其他都没有权限。把压缩包移动到root主⽬录下。然后清空/var/ftp下的所有内容。
假设/var/ftp⽬录已存在

/root/con4.sh
#!/bin/bash
cd /var/ftp
name=`date +%Y-%m-%d`".tar.gz"
tar zcvf $name /var/ftp
chmod 400 $name
[root@localhost ~]# crontab -e
30 8 * * * /root/con1.sh
30 23 * * * /root/con2.sh
30 8-23/1 * * * /root/con3.sh
50 23 * * * /root/con4.sh
  • 6
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值