2010-10-25 20 views
0

我有以下線在我的proftpd日誌(線78準確地說)的sed在特定的行+文本的IP後

Deny from 1.2.3.4 

我也有一個腳本,通過我的日誌卷使用暴力的人強制攻擊,然後存儲他們的IP(準備好黑名單)。就是我用的插入(使用sed假設)在特定行的末尾掙扎 - 這就是我這麼遠:其實

sed "77i3.4.5.6" /opt/etc/proftpd.conf >> /opt/etc/proftpd.conf 

現在人會相信這將很好地工作,但它做以下兩行(77至78):

3.4.5.6 
Deny from 1.2.3.4 

我懷疑這是由於我的sed的版本陳舊,是有acheiving同樣的事情其他方法嗎?此外>>導致配置複製在最後的騙子(我確信這是我的版本的限制)。這是在我的nas上運行一個自制Linux內核。下面SED選項:

根@ NAS:〜#sed的BusyBox的V1.7.0 (2009-04-29 19時12分57秒JST)多呼叫 二進制

用法:sed的[-efinr ]模式[文件...]

選項: -e腳本添加腳本的命令被執行 -f腳本文件添加腳本文件內容到 命令被執行 -i編輯文件在 - 放置 -n抑制圖案的自動打印空間 如果沒有-e或-f給出-r使用擴展正則表達式語法

,第一 非選項參數被作爲 sed腳本解釋。所有剩餘的 參數是輸入文件的名稱;如果指定 沒有輸入文件,那麼 則讀取標準輸入。除非-i選項 給出的源文件 將不會被修改。

乾杯您的幫助球員。

回答

2

這有什麼好做的sed版本;這只是普通的老做錯了。

sed -i '77s/$/,3.4.5.6/' /opt/etc/proftpd.conf 
+0

你該死的聰明的驢子,謝謝。你介意解釋這一點嗎?它僅僅是第77行搜索的一種情況,然後用返回勾選的IP地址替換'$'(假設這沒有意義)? – keeer 2010-10-25 21:37:37

+0

'$'是字符串/行的結尾。所以這基本上只是將地址追加到第77行的結尾。而且,'s'是替代,而不是搜索。 – 2010-10-26 02:33:13

相關問題