2013-02-25 117 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