These facts return the version of iptables or ip6tables by running --version
on the binary in question.
+Facter.add(:iptables_version) do
+ confine :kernel => :linux
+ setcode do
+ version = Facter::Util::Resolution.exec('iptables --version')
+ if version
+ version.match(/\d+\.\d+\.\d+/).to_s
+ else
+ nil
+ end
+ end
+end
+
+Facter.add(:ip6tables_version) do
+ confine :kernel => :linux
+ setcode do
+ version = Facter::Util::Resolution.exec('ip6tables --version')
+ if version
+ version.match(/\d+\.\d+\.\d+/).to_s
+ else
+ nil
+ end
+ end
+end
--- /dev/null
+require 'spec_helper'
+require 'facter/iptables'
+
+describe "Facter::Util::Fact" do
+ before {
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
+ Facter.fact(:kernelrelease).stubs(:value).returns("2.6")
+ }
+
+ describe 'iptables_version' do
+ it {
+ Facter::Util::Resolution.stubs(:exec).with('iptables --version').returns('iptables v1.4.7')
+ Facter.fact(:iptables_version).value.should == '1.4.7'
+ }
+ end
+
+ describe 'ip6tables_version' do
+ before { Facter::Util::Resolution.stubs(:exec).with('ip6tables --version').returns('ip6tables v1.4.7') }
+ it { Facter.fact(:ip6tables_version).value.should == '1.4.7' }
+ end
+end