После конфигурирования AMT для слушания на общем IP-адресе я запустил тест, упомянутый kasperd в комментариях выше. (против моего собственного удаленного хоста с сервером SSH, не на самом деле example.com
, конечно), Вот результат:
Положительный тестовый сценарий (использующий порт не используемый AMT):
$ nc -p 16991 example.com 22
SSH-2.0-OpenSSH_5.9p1 Debian-5ubuntu1.4
^C
$
Отрицательный тестовый сценарий (использующий порт, используемый AMT):
$ nc -p 16992 example.com 22
$
(После того, как несколько минут, отрицательный приведенный к таймауту тестовый сценарий и возвратились к приглашению оболочки.)
Поэтому, как Вы видите, пакеты, возвращающиеся для портирования 16992, были отброшены, прежде чем они достигли стека TCP/IP хоста.
Рекомендация: если надежные сети важны для Вас, не включайте AMT на том же IP-адресе как Ваш стек TCP/IP хоста!
Почему бы просто не добавить фактический факт и не проверить его?
с моим установки на марионетке 3, я бы поместил следующее в modules / fact / lib / facter / user_exists_blah.rb
require 'facter'
Facter.add(:user_exists_blah) do
setcode do
name = "blah"
Facter::Util::Resolution.exec("/usr/bin/id -u #{name} 2>/dev/null")
end
end
И затем использовал его как
if $::user_exists_blah {
}
Пустая строка оценивается как ложь, поэтому вы можете просто использовать ее как логическое