我試圖做一個向腳本添加IP的php腳本。我不完全確定我做錯了什麼。我試圖將$ip
插入iptables
上的第12行數據,然後將其寫入iptables2
。還有另一種方法我應該這樣做還是這是最簡單的方法?通過使用php的數組命令添加行到文件
<?php
//Firewall string
$ip = "-A INPUT -s " . $_SERVER['SERVER_ADDR'] . " -j ACCEPT" . "\n";
//Turn file into array
$file = file('iptables');
//Insert string into array
$res = array_splice($file, 12, 0, $ip);
//Write to another file
file_put_contents("iptables2", $res);
//Display new file
$iptables2 = file("iptables2");
echo "<ul>";
foreach($iptables2 as $s => $r) {
echo "<li>" . $s . "=>" . $r . "</li>";
}
echo "</ul>";
?>
iptables
看起來是這樣的:
*filter
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state ESTABLISHED -j ACCEPT
-A INPUT -p udp --match multiport --dports 10000:20000 -j ACCEPT
# Port 5060
-A INPUT -s XXX.XXX.XXX.XXX -j ACCEPT
-A INPUT -s XXX.XXX.XXX.XXX -j ACCEPT
-A INPUT -s XXX.XXX.XXX.XXX -j ACCEPT
# Remote Operators
-A INPUT -s XXX.XXX.XXX.XXX -j ACCEPT
-A INPUT -s XXX.XXX.XXX.XXX -j ACCEPT
# Remote Phones
-A INPUT -s XXX.XXX.XXX.XXX -j ACCEPT
-A INPUT -s XXX.XXX.XXX.XXX -j ACCEPT
-A INPUT -s XXX.XXX.XXX.XXX -j ACCEPT
# Port 3306 - Mysql from Known Sources
-A INPUT -p tcp -m tcp -s 127.0.0.1 --dport 3306 -j ACCEPT
# Reject The Rest
-A INPUT -p tcp -m tcp -j REJECT --reject-with tcp-reset
-A INPUT -p udp -m udp -j REJECT
COMMIT
線12 # Remote Phones
,我想-A INPUT -s XXX.XXX.XXX.XXX -j ACCEPT
線12
只是確保你只運行這個腳本一次:) –
但是如果我想多次使用它並在'#Remote Phones'之後添加多個條目呢? – lhoward96
我認爲沒有問題,只是不要在你的IP表中有條目的重複項,你的代碼看起來很乾淨:) –