2012-06-26 81 views
1

我發現一對夫婦有用的命令了在http://centoshelp.org/security/securing-sshd/
也就是說,該分析的/ var /日誌/安全檢查襲擊賬戶/攻擊IP地址
我更喜歡將它們轉換爲兩個一個更簡單的命令,我可以用su運行,而不是試圖記住它們。
我已經嘗試了shell腳本以及一個直接的awk腳本,但我總是會得到各種錯誤,通常與單引號似乎,有時語法雖然(取決於我使用雙引號和單引號的組合或忽略)。故障轉換awk命令腳本

awk 'gsub(".*sshd.*Failed password for (invalid user)?", "") {print $1}' /var/log/secure* | sort | uniq -c | sort -rn | head -5 

awk 'gsub(".*sshd.*Failed password for (invalid user)?", "") {print $3}' /var/log/secure* | sort | uniq -c | sort -rn | head -5 

我似乎無法得到組合的權利,所以任何幫助將不勝感激。

+0

總是將任何應該被shell忽略的內容(例如awk代碼片段)用單引號括起來。單引號文本不被shell以任何特殊方式處理。然而,雙引號文本是內插的,所以你必須在那裏小心。 – Sorpigal

+0

如果您說出每個示例的錯誤,它會很有幫助。 – cdarke

+0

啊,好吧,在單引號中圍繞整段代碼提供了這個; top5accounts.sh:第2行:意外標記附近的語法錯誤'「。* sshd。*(無效用戶)的失敗密碼?」,' – FizzBuzz

回答

1

無法直接進一步簡化的東西轉換爲簡單命令的最佳方式是創建一個腳本或函數。將前者放在您的PATH或後者的文件夾中,例如~/bin/functions,您可以從~/.bashrc中獲取該文件。

有時這是不可能或不實際的,但是像AutoKey這樣的東西可以從您指定的快捷方式爲您輸入,而無需記住完整的命令。

+0

是的,我知道......這是我的問題的重點。我想從這些巨大的命令轉到諸如「sh top5accounts.sh」 – FizzBuzz

+2

@FizzBu​​zz之類的東西:完全按照問題中所示的其中一個命令,在該名稱的文件中沒有附加引號,就完成了。你也可以使第一行成爲'#!/ bin/bash'並執行'chmod u + x top5accounts',你就可以在不用把'sh'開始的情況下運行腳本。建議您不要在腳本名稱末尾使用'.sh'。後來,如果用另一種語言重寫腳本,如果它被稱爲'foo.sh',它就沒有任何意義。 –

+0

Aaaand顯然我一直在騙這整個時間......嘗試使用#!/ bin/sh作爲第一行的.sh文件,它的工作原理-_-我的不好! – FizzBuzz