1. ファイル
ファイルには、次の/etc/ssh/ipblock
ような行が含まれています。
2012-01-01 12:00 192.0.2.201
2012-01-01 14:15 198.51.100.123
2012-02-15 09:45 192.0.2.15
2012-03-12 21:45 192.0.2.14
2012-04-25 00:15 203.0.113.243
2.コマンド
コマンドの出力はiptables -nL somechain
次のようになります。
Chain somechain (2 参考文献) ターゲット プロト オプト ソース デスティネーション すべてドロップ -- 172.18.1.4 どこでも すべてドロップ -- 198.51.100.123 どこでも すべてドロップ -- 172.20.4.16 どこでも すべてドロップ -- 192.0.2.125 どこでも すべてドロップ -- 172.21.1.2 どこでも
3. 当面の課題
- 最初に、iptables チェーン (フィールド 4) には存在するがファイルには存在しない IP アドレスのリスト A を取得したいと思います。
- 次に、ファイルには存在するが iptables チェーンには存在しない IP アドレスのリスト B を取得したいと思います。
- リスト A の IP アドレスは、同じスタイル (日付、時刻、IP) でファイルに追加する必要があります。
- 次に、リスト B の IP アドレスを iptables チェーンに追加する必要があります。
iptables -A somechain -d IP -j DROP
4. 背景
私は awk-fu を拡張したいと思っていたので、引数なしで実行できる awk スクリプトでこれを機能させようとしました。しかし、私は失敗しました。
コマンドを使用してコマンドから出力を取得できることを知っているgetline
ので、その方法で時刻と日付を取得できました。また、を使用してファイルを読み取ることができることも知っていますgetline foo < file
。しかし、これをすべて組み合わせて awk スクリプトを実行しようとして失敗したことはたくさんあります。
これを他のプログラミング言語やシェルスクリプトで動作させることができることに気づきました。しかし、これは引数なしで実行できる awk スクリプトで実行できますか?