- 论坛徽章:
- 49
|
获奖名单公布:http://bbs.chinaunix.net/thread-4092314-1-1.html
大赛简介:
Shell版块是ChinaUnix社区内讨论比较热烈的技术版块之一。2011年和2012年,我们已经成功举办了Shell、PHP、C/C++和Perl的多次编程大赛,今天我们应shell版版主和用户的需求,再次举办2013年ChinaUnix社区Shell编程大赛,发挥您的聪明才智,赢取我们为优胜者准备的丰富奖品,欢迎大家踊跃参加!
第一期:PHP编程大赛 http://bbs.chinaunix.net/thread-1788191-1-1.html
第二期:C/C++编程大赛http://bbs.chinaunix.net/thread-1820953-1-1.html
第三期:Perl编程大赛http://bbs.chinaunix.net/thread-1860259-1-1.html
第四期:shell编程大赛http://bbs.chinaunix.net/thread-2319120-1-1.html
第五期:shell编程大赛http://bbs.chinaunix.net/thread-3679733-1-1.html
参赛要求:参与活动必须是chinaunix社区的注册会员
点击注册: http://sso.chinaunix.net/Register
大赛日程:
参赛时间:2013.06.18~2013.07.8
评选时间:2013.07.8~2013.07.18
结果公布:2013.07.23
奖项设置:
一等奖:1名,最先正确完成10道题的一名用户,赠送价值400元的500G移动硬盘一个。
二等奖:3名,获奖者为最先正确完成8道试题的三名用户,赠送价值200元防水耳机一副。
三等奖:10名,获奖者为最先正确完成6道试题的十名用户,赠送图书一本,图书目录(http://bbs.chinaunix.net/thread-4074217-1-1.html)。
参与奖:5名,只要您参与提交答案,且有一道题目正确,即可参与抽奖,可获赠赠送微软键鼠套装一个
参赛细则:
(1)代码规范:使用各种标准shell,awk,sed,采用编程标准可以使项目更加顺利地完成。
(2)性能:应用程序可以运行与高效运行是两个层次,保证程序的最佳效率。
(3)简洁:写代码是一种艺术。除了正确的缩进、大小写、命名规则之外,请时刻牢记爱因斯坦的名言--简单就是美。
(4)每位会员可以发表多个代码,以最高评价为准,不可重复获奖;
(5)提交代码请跟帖发表,并附相关系统环境及编译环境说明。
评选获奖的依据:答题的时间及答题的质量为依据,邀请嘉宾作为评选人。
代码提交:
本次大赛为闭卷形式,主题发起者才能看到参赛者的回复,所有参赛者只能看到自己的内容。
参赛者以跟帖的方式提交代码,相似代码以最先提交为准,谁最早提交谁优秀。
注:严禁抄袭,一经发现,取消评选资格;
大赛评委团:
Shell_HAT
rdcwayx
zooyo
blackold
大赛联系人:
send_linux 站内联系或者qq:19286680
大赛试题:
第一题:
有一小撮别有用心的人,他们会想办法获取论坛的用户名列表,然后用弱密码逐个尝试每一个用户名。针对这一情况,论坛程序会把每一次登陆失败的记录放在日志里面。请编写脚本找出尝试登陆失败次数最多的 top 10 的IP地址和登陆失败次数。测试数据见附件illegal.log
illegal.log
(59.18 KB, 下载次数: 395)
第二题:
请编写脚本监控日志文件中的关键字<Error>,一旦发现该关键字就马上发邮件给admin@ChinaUnix.net,样例数据见附件wls_ms1.out,要求如下:
(1)假设该脚本在crontab中每10分钟执行一次,每次运行时只检测最近十分钟之内的日志里面有没有出现关键字,十分钟之前的日志不要误报。
(2)样例数据仅供参考,实际日志文件比较大(比如1GB),请充分考虑代码效率。
(3)应用程序会实时地更新这个日志文件,因此不允许对该文件进行分割。
wls_ms1.out
(4.16 KB, 下载次数: 194)
第三题:
请在本地机器192.168.1.2上编写脚本,把远程192.168.1.3 ~ 192.168.1.100每台机器上的某个文件夹打包压缩复制到本地作为备份。本地机器和远程机器之间已经建立好ssh信任关系。要求如下:
(1)远程机器上待备份的文件路径为 /opt/WebSphere/AppServer/profiles/
(2)以下子文件夹不需要备份:
bin
logs
(3)以下文件不需要备份:
*.log
*heapdump*
*.gz
*.tar
*.zip
*.bak
(4)本地机器上存放备份文件的目录为 /var/ChinaUnix/
(5)星期一到星期六执行增量备份,星期日执行完整备份。crontab里面只允许增加一条记录用于执行脚本。
(6)考虑到脚本在各种UNIX/Linux系统中的通用性,不允许使用rsync命令。
第四题:
下面的两种表达有何不同:
command1 && command2 || command3
if command1
then
command2
else
command3
fi
第五题:
给出一个多位数,算出其每位数的总和。比如 1234, 得到 10
第六题:
如果不考虑 GNU date (就是不带 -d 参数),
1. 如果给个日期 比如 2013-05-23,算出是这年的第几天。
2. 算出昨天日期
第七题:
把1~9 九個數字分成三組三位數(不可重复使用),比如形成如下的9宫格。
4 9 1
8 3 6
2 7 5
求三行和三列数的总和,如上面的例子,得到一个总和: 491 + 836 + 275 + 482 + 937 + 165 = 3186
题目要求,所有的三位数都必须是奇数,总和是 4446. 求出这个九宫格排列。
(需要给出解题的shell代码,以及该代码运行的结果,结果不唯一)
第八题:
[bash]如果当前目录下存在文件名包含空格(space)的文件,rm *可以删除它吗?为什么?
第九题:
bash 的参数展开( parameter expansion) 在路径展开( pathname expansion) 之前。举
个例子来验证这一说法。
第十题:
目录dirA 和 dirB 下的文件类似于:
20130605 1527 厂长[979909063] - 龙行天下[162256958].che
20130605 1541 我行我素[439395038]- 随便[1559914175].che
20130606 0912 厂长[979909063] - 龙行天下[162256958].che
20130606 1757 黑哥[1578318706] - 随便[1559914175].che
20130606 1823 黑哥[1578318706] - 随便[1559914175].che
20130606 0912 厂长[979909063] - 龙行天下[162256958].XQF
其中, .che为QQ游戏自动保存的中国象棋格式,.XQF为另一种中国象棋格式,由.che转换而来。
两个目录可能存在重复的文件(文件名相同且内容相同)。
要求:
1. 用最简洁的命令列出当前目录下的非 20130605开头的文件。
2. 将文件名中所有的空格, []去掉。
3. 删除 dirA 下与 dirB 下重复的.che或.XQF文件。
4. 如果有对应的 .XQF文件,则删除相应的.che文件。
这种对应关系可能跨目录,比如dirA/file.che 与 dirB/file.XQF也看作是对应文件。
(关于第10题的补充说明:
各小题基本上是相对独立的。
为简单起见,1小题单独写,其余小题合在一起写,后一小题在前一小题的基础上完成。
"重复文件"是指: 文件相同,且内容相同。
"对应文件"是指: .che与 .XQF之间的关系,比如,dirA/file.che dirB/file.XQF 看作对应文件。
.XQF文件是由 .che转换而来,把它们称为对应文件。)
|
|