2013-02-25 95 views
1

我在BASH脚本的第一学期,遇到了一些困难。我已经采用了其他编程课程,如C++或Java,但Bash的语法正在杀死我。我很想就这个问题提供一些建议。我需要做到以下几点:在/ var /日志/安全文件 BASH中的基本Shell脚本

  • 检查

    • 提取今天的数据看,如果我有一个目录名为“mylogs”
    • 如果我没有 - 然后创建一个
    • 检查“mylogs”目录中是否已有与当前日期,月份和小时 匹配的文件。
    • 如果是这样,回显屏幕“文件存在,没有写入我的日志”,并退出 。如果它不存在,则将今天的数据从/ var/log/secure写入到您的 'mylog-month-day-hour'文件中。示例(2月4日下午2点)输出: mylog-02-04-14

    我只需要脚本语法部分的帮助。

    谢谢 - 我很乐意帮助BASH的任何网站。

  • +0

    我建议你缩小你的问题的范围,以确定的答案。 – Mikhail 2013-02-25 00:12:47

    +1

    这听起来像是你班上的任务列表。 http://whatHaveYouTried.com?祝你好运。 – shellter 2013-02-25 00:23:52

    回答

    2
    • 提取今天的数据

    你可以这样做......

    grep "^Feb 24" /var/log/secure 
    
    • 检查,看看我是否有一个名为“mylogs”目录,如果我没有 - 然后创建一个

    你能做到这一点...

    test -d mylogs || mkdir mylogs 
    
    • 检查以查看您是否已有与“mylogs”目录中的当前日期,月份和小时匹配的文件。 (假设文件名格式DDMMHH的)

      测试-e mylogs /`日期+%d%M%H` & &回声 “我已经有一个文件”

    • 如果你这样做,呼应屏幕“文件存在,没有写入我的日志”,然后退出。如果它不存在,则将今天的数据从/ var/log/secure写入您的'mylog-month-day-hour'文件。例子(2月4日下午2点)输出:mylog-02-04-14

    呃现在你应该明白了。现在我认为你可以解决这个问题;)一个有用的命令是知道是man -k <keyword>

    +0

    谢谢 - 我唯一的问题是(我一直在研究这个)是我需要它每天运行 - 所以运行Grep Feb 24将无法工作 - 那么是否有一个变量为日期? – Dhunt90 2013-02-25 00:31:25

    +2

    'man date'应该可以帮助你 – 2013-02-25 00:59:42

    +1

    如果你需要安排工作,你应该阅读'man cron' – 2013-02-25 01:25:37

    1
    +0

    谢谢 - 如果我想从/ var/log/secure获取日期 - 我会使用grep吗? – Dhunt90 2013-02-25 00:19:45

    +0

    是的,这是很好的搜索工具。当我的服务器被黑客攻击时,我正在用grep嗅探细节。 – Stepo 2013-02-25 00:21:41

    +0

    grep,sed,awk,cut,find,date,tr,测试操作符,'''',''','''(我可能会留下几个)是你需要阅读manpages的所有命令想要精通编写shell脚本。 – 2013-02-25 01:23:43